2020.12.14 일지 - ERD

0후·2020년 12월 14일
0

비트캠프

목록 보기
41/112

ERD(Entity Relationship Diagram : 개체관계도) 작성 시 두 테이블의 관계가 식별관계인지 비식별관계인지 판단하는 것에 어려움을 겪고 있다. 따라서, 오늘은 이것에 대해 전반적인 학습을 해보려고 한다.

ERD(Entity Relationship Diagram) : 말로서 되어있는 요구분석사항을 그림으로 그려내어 그 관계를 도출하는 것
PK(Primary Key) : 테이블에서 각 ROW를 유일하게 구분하는 COLUMN 에 부여되는 '제약조건', 주 식별자키로 테이블의 모든 데이터를 식별하는 컬럼, 중복 불가, null 불가
FK(Foreign Key) : 다른 테이블의 COLUMN값을 참조하는 테이블의 COLUMN에 부여되는 '제약조건', 두 테이블 간의 종속이 필요한 관계면 그 접점이 되는 컬럼을 FK로 지정하여 서로 참조할 수 있도록 관계를 맺어준다, 테이블 간 잘못된 매핑을 방지하는 역할, PK, UK가 삭제되면 참조된 FK가 삭제됨
UK(Unique Key) : 고유키, 중복된 값을 허용하지만 여러 개 null값은 허용

테이블 간의 관계는 일대일(1:1), 다대일(1:N), 다대다(N:N)의 관계들이 있다.

이런 형식으로 다대다 형태로 테이블을 짜게 되면 경우의 수가 많아져 정보를 찾기 어려워진다.

따라서, 모델링 자체가 불가능하므로 각 테이블에는 해당 테이블에 필요한 정보를 나타내도록 하고 테이블 행을 식별할 수 있는 것만 뽑아내서 1:N이라는 중간테이블을 만들어줘야 한다.

이렇게 하면 객실의 정보와 회원의 정보를 담은 두 테이블과 예약이라는 관계를 나타내는 테이블이 만들어지며 객실-예약, 회원-예약 테이블은 각각 1:N 관계를 가지게 된다. 이로써 다대다 테이블이 해소가 되면서 모델링이 가능해지는 것이다.

더 나아가서, Relationship Type 관점에서 볼 때 정리한 것은 다음과 같다. 이게 진짜 헷갈린다. 아직도 이해가 잘 안 간다.
식별관계는 1) null을 허용하지 않고, 2) 부모의 PK컬럼이 자식의 'PK컬럼'으로 전이 되는 것을 말한다. 즉 식별관계는 PK와 FK를 두 가지 다 가지고 있을 수 있음을 뜻한다. 예를 들면, 게시판의 작성글과 댓글의 관계를 식별관계라고 할 수 있다. 작성글이 없다면 댓글도 없다는 뜻이다.
비식별관계는 1) null을 허용하거나, null을 허용하지 않는 2가지 중 택1이고, 2) 부모의 PK컬럼이 자식의 '일반컬럼'에 전이 되는 것을 말한다. 예를 들면, 축구선수와 축구팀과의 관계를 말할 수 있다. 축구선수는 소속이 없는 선수의 경우에 축구팀이 없어도 존재할 수 있기 때문이다.

덧붙이자면 상위 테이블에서 컬럼을 가져올 때 하위 테이블에서 그 컬럼을 PK로 지정하면 식별관계, 그냥 참조만 하면 비식별관계라고 한다.

profile
휘발방지

0개의 댓글