[Oracle] 2020.12.21. day_41 제약사항_foreign key(외래키, 참조키), ERD (Entity Relation Diagram)
2020. 12. 21. 17:43ㆍWeb_Back-end/Oracle
◎ 제약사항
제약사항 | |
개발자(DBA : DataBase Administrator)가 원하는 값만 받기위해 테이블에 설정하는 것 | |
종류 | primary key, foreign key, unique, check, not null // default (제약사항은 아님) |
테이블에 설정된 제약사항은 user_constraints (DD) 테이블에서 확인할 수 있다 DD : DataBase Dictionary 의 줄임말, 정보저장용 테이블(DBMS에서 사용하는) |
|
테이블단위 제약사항과 컬럼단위 제약사항 alter문으로 설정할 수 있다 | |
테이블단위 제약사항 : | 테이블 생성시 컬럼의 정의가 종료되고 나서 정의하는 제약사항 (table level constraint) |
컬럼단위 제약사항 : | 테이블 생성시 컬럼의 정의 뒤에 붙여서 정의하는 제약사항 (column level constraint) |
alter문 : | 문법이따로 있는것이 아니라 기존에 있던 쿼리를 alter에 넣고 쓴다고 생각하면 된다 |
제약사항은 alter문을 사용하여 활성화, 비활성화를 수행할 수 있다 |
2. foreign key( 외래키, 참조키 )
foreign key (외래키, 참조키) | |
다른 테이블 (부모테이블) 의 컬럼 값과 동일한 값으로 컬럼값이 저장되어야할 때 | |
다른 테이블에 일반컬럼은 foreign key로 참조할 수 없다 |
|
null을 허용한다 | |
값이 입력될 때에는 부모테이블의 컬럼에 존재하는 값으로만 추가된다 | |
foreign key가 설정된 테이블을 자식 테이블이라고 한다 | |
하나의 테이블은 여러개의 foreign key를 가질 수 있다 | |
부모테이블의 primary key 컬럼만 참조가능 | |
부모테이블의 레코드를 참조하는 자식테이블이 존재한다면, 자식테이블의 레코드가 삭제된 후 무보테이블의 레코드가 삭제될 수 있다 |
|
테이블단위 제약사항문법, 컬럼단위 제약사항문법 둘다 사용가능 | |
문법 1. 테이블단위 제약사항 문법 |
create table 테이블명( 컬럼명 데이터형(크기), ,,,, constraint 제약사항명 foreign key(적용컬럼명) references 부모테이블명(참조할 컬럼명) ); |
문법 2. 컬럼단위 제약사항문법 |
create table 테이블명( 컬럼명 데이터형(크기) constraint 제약사항명 references 부모테이블명(참조할 컬럼명), ,,,, ); |
○ ERD (Entity Relation Diagram)
ERD (Entity Relation Diagram) | |
![]() |
|
식별관계 : | 부모테이블의 PK를 자식테이블의 PK로 참조하는 관계 |
비식별관계 : | 부모테이블의 PK를 자식테이블의 일반컬럼으로 참조하는 관계 |
![]() |
|
비식별관계에서는 1:1관계가 나올 수 없다 | |
exERD tool로 만들어보기 | |
논리모드 | ![]() |
물리모드 | ![]() |
※ 포워드 엔지니어링
- exERD tool 메뉴바에서 eXERD선택
- 포워드 엔지니어링 --> 설정관리
- DBMS 연결을 하기 위해 새연결 선택
- JDBC드라이버가 설치된 경로를 찾아 선택
- 필요한 정보를 입력한 후, 테스트를 진행한다
※ 리버스 엔지니어링
'Web_Back-end > Oracle' 카테고리의 다른 글
[Oracle] 2020.12.22. day_42 제약사항 _ check, not null _ default(제약사항은 아님) (0) | 2020.12.22 |
---|---|
[Oracle] 2020.12.22. day_42 제약사항_foreign key(외래키, 참조키), unique (0) | 2020.12.22 |
[Oracle] 2020.12.21. day_41 제약사항 _primary key(PK) (0) | 2020.12.21 |
[Oracle] 2020.12.21. day_41 select subquery (0) | 2020.12.21 |
[Oracle] day_40 집계함수, 순위함수, 날짜함수 예제풀어보기 (0) | 2020.12.18 |