[Oracle] 2020.12.21. day_41 제약사항_foreign key(외래키, 참조키), ERD (Entity Relation Diagram)

2020. 12. 21. 17:43Web_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로 만들어보기
논리모드
물리모드

 

※ 포워드 엔지니어링

1. exERD tool에서 eXERD선택-포워드 엔지니어링 --> 설정관리

 

 

DBMS 연결을 하기 위해 새연결 선택 - JDBC드라이버가 설치된 경로를 찾아 선택

  1. exERD tool 메뉴바에서 eXERD선택
  2. 포워드 엔지니어링 --> 설정관리
  3. DBMS 연결을 하기 위해 새연결 선택
  4. JDBC드라이버가 설치된 경로를 찾아 선택
  5. 필요한 정보를 입력한 후, 테스트를 진행한다

 

※ 리버스 엔지니어링

포워드 엔지니어링과 반대로 가지고있는 table들의 관계를 가져와서 볼 수 있다