- 자바는 DTO안에 DTO가 들어가는 등의 Depth가 계속있지만
RDB는 부모,자식 관계 밖에 없어 Depth가 없음
▶ 관계형 데이터 모델 : 2차원 구조의 테이블 형태를 통해 자료를 표현하는 것
- 도메인은 타입,범위의 개념
- EMPNAME의 도메인은 CAHR
- EMPNO의 도메인은 INTEGER
- EMPNAME의 도메인은 VARCHAR 라고 할 수 있다
- 들어갈 수 있는 값들의 바운더리를 정하는것
- 테이블 구조(스키마)는 테이블이름(릴레이션이름)과 데이터(애트리뷰트값)로 구성되어있음
- CRUD가 있으므로 내용은 계속 변함, 튜플들의 집합
- 인스턴스는 영업,기획, 김창섭,박영권 등을 말함
- 애트리뷰트 값은 하나의 도메인(타입)을 가짐
- DEPNO가 앞에 있던 뒤에 있던 순서는 중요하지 않음
- 순서 달라도 동일한 릴레이션
- 중복 X
- {8,9}로 넣으면 안됨
- 나누던지 하나를 없애던지 해야함
- 복합키 가능
- 기본키와 외래키는 꼭 알아야함
- 유일하다면 수퍼키
- 신용카드번호도 수퍼키, 번호도 수퍼키 하나의 키에서 여러 수퍼키 나올 수 있음
- 신용카드번호, 주소는 수퍼키, 신용카드번호는 후보키(최소한으로 줄임)
- 두개이상의 애트리뷰트로 이루어질수있음(1반에 2번사물함, 2반에 2번사물함) → 복합키
- 학번과 과목번호가 후보키 (수강테이블에서는 이 두 개의 조합이 유일, 중복X) → 복합키
- 복합키를 없애려면 학번과 과목번호를 PK로 두지않고 수강번호를 PK로 부여/수강번호로 구분
- 후보키들 중에서 기본키가 결정됨 (말 그대로 기본키의 후보들인 키가 후보키임)
- 신용카드 번호, 주민번호 -->후보키
- 신용카드번호를 PK로 선정하면 그게 기본키
- 인위적인 키를 추가하는 것-->인공키
- 숫자, 문자 짧은 게 좋음 → 길면 검색 성능이 떨어짐
- 복합키는 더 검색성능이 떨어짐
- 가능한 복합키는 피하는 것이 좋음, 그래서 인공키를 만드는 것
- 신용카드를 기본키로 했으면 나머지 후보키는 대체키라고 함
- 외래키 애트리뷰트(컬럼)은 참조되는 기본키와 도메인(타입)이 같음
- 참조당하는 부분이 부모테이블
- 참조하는 부분이 자식테이블
- 매니저는 본인 릴레이션의 기본키를 참조
- 수강이라는 것은 실체가 X 이런게 어려움
- 수강은 학생과 과목간의 관계
- 자바는 이런 설정(수강을 통해 참조되는것)없이 다이렉트로 설정가능
- 과목입장에서 보면 과목은 여러학생이 선택가능, 과목이 학생을 포함해야함(여러개)
- 중간에 관계테이블이 필요할 때 -->수강의 DAO 존재하지 않음
- 수강테이블의 학번,과목번호는 외래키, 합쳐서 기본키
- 추가,삭제,수정 모두 갱신
- 실세계에 허용되는 상태만 나타낼 수 있도록 제한함 -->무조건 not null을 다 주지 않도록함!
- 반드시 원자값 → 두개이상의 값들어가면 x
- 가능한 값들의 범위 → check constraint
- R1을 먼저 만들어야 R2의 외래키 설정이 가능
- 외래키이지만 pk일수 있음 → 중복과 null이 안됨
- update,delete,insert의 갱신연산에 의해 위배될 수 있음
- 위배되지 않으려면 삭제하거나 null로 하기도함 → 갱신을 거부하는 것
- 6이라는 deptno가 없으므로 참조무결성제약조건 위배
- 3번부서에 속해있는 값들이 있으므로 참조무결성 제약조건에 위배됨
- 디폴트값은 오라클에서 지원하지않음
- EX)개발부서 없애고 영업으로 보내기 (디폴트값을 영업으로 주는것)
- 도메인은 constraint를 설정할 수 있음(확대해서 타입과 제약조건을 합쳐 도메인이라고 부름)
- 쉽게 말하면 도메인은 타입이지만 더 자세히는 타입과 제약조건을 합쳐 부르는 것
'DataBase' 카테고리의 다른 글
[DB] 정규화 (Normalization) & 함수적 종속성 (0) | 2022.07.27 |
---|---|
[DB] 데이터베이스 설계와 ER모델 (새발 표기법) (0) | 2022.07.27 |
[DBMS] DBMS의 언어 (0) | 2022.07.27 |
[DBMS] 파일 시스템 VS DBMS (0) | 2022.07.27 |
[DBMS] 데이터베이스 시스템 (0) | 2022.07.27 |
댓글