데이터베이스/MySQL

개념적 데이터 모델링

밍풀 2023. 1. 22. 01:50

속성  ; 각각의 entity의 소속

소속관계는 글 작성 페이지를 통해 쉽게 패악 가능

직접 쓸 수 있는 제목, 본문 과 달리 저자목록은 선택만 할 수 있는 것으로 보아 저자목록이 좀더 복합적이라는 의미

쓰기만으로 부족한 것은 읽기에 보면 작성일에 대한 정보도 보임, 이것까지도 entity

제목, 본문, 날짜 까지 entity

 

entity(저자, 글, 댓글)과 그에 속해있는 주요 속성들

식별자 지정 

속성 정의 후 식별자를 찾아 지정해야 함 

국가는 국민을 주민번호로 식별, 웹사이트는 도메인이 있음, 원하는 대상을 정확하게 타겟팅함 

식별자가 되기위해 가장 중요한것은 다른대상들과 중복값을 갖게되면 안된다는 것 

ERD에서도 식별자를 어떤 속성을 할 것인가 지정해야, 훗날 Primary key, 즉 기본값이 될 것

 

생활코딩

위의 표에서 식별자로 사용될 수 있는 컬럼 ; 후보키(cadidate key)

후보키에서 primary key를 제외한 것 ; 대체키(alternate key)

대체키는 나중에 성능향상을 위해 secondery index 로 사용하기 좋음 

 

+)근데 email은 한사람이 여러 이메일 가지면 안될수도, 

마땅한 것 없으면 행이 추가되면 1씩 추가되는 값을 부여해서 식별값을 제공해 줄 수도 있음 ; 인조키 

식별자로 사용할 수 없는  ; name, city (동명이인 가능, 지역도 중복가능)

 

생활코딩

위와 같이 한 직원이 여러 부서에 속하고, 한 부서에 여러 직원이 있는 경우 한가지 값으로만 행을 식별할 순 없어

직원번호, 부서번호 둘다 있어야 행 식별 가능 ; 이런 키를 중복키(composite key)라 함

 

그런데 위와 같이 저자, 글, 댓글 entity 에는 식별자가 될만한게 없음, 그래서 글아이디, 댓글아이디, 저자아이디 와같은 인조키를 만들어 primary키(식별자)로 지정함

 

엔티티간의 연결

relationship

 

각각의 표 식별하는 키 ; PRIMARY KEY

저자테이블의 아이디값을 가르키는, 글 테이블의 저자아이디의 값 ;

외래의 테이블과 연결하는 열쇠= 외래키 (FOREIGH KEY) 

 

관계형데이커베이스의 Realrationship 프라이머리키와 포링키의 연결을 통해서 구현됨

 

ERD에서 관계를 표현할때는 마름모꼴 이용

생활코딩

저자와 글은 작성하는 관계, 저자와 댓글도 작성하는 관계, 글과 댓글은 소속된 관계 

 

Realationship에서 꼭 따져야 할 요소 두가지 

Cardinality, Optionality 

cardinality ; 기수, 12345......같은것

1. 일대일 관계

담임은 반 한명을 맡고, 한 반에는 담임 한명만 존재하는 관계, 오른쪽 그림과 같음 

1 : 1 관계

2. 일대다 관계

저자가 여러개 댓글을 쓸 수 있고, 댓글은 하나의 저자만 존재, 오른쪽 두번째가 ERD로 표현한 그림

 

1 대 다 관계

3. 다대다관계

하나의 글을 여러명이 편집할 수 있을 때는 아래와 같음, 오른쪽 세번째그림과 같이 ERD표현

다 : 다 관계

저자에게 글은 M개 , 글에게 저자는 N개

 

다대다는 실제 현실 데이터베이스 세계에선 표현 불가, 중간에 연결테이블을 만들어서 1대 다 관계로 만듦

 

Optionality

저자에게 댓글은 옵션(optional)이고 댓글은 저자가 필수(mandatory)다 , 오른쪽 4번째 그림에 해당

 

저자와 댓글은 선택이냐 필수냐의 관계도 있지만, 일대일인지 일대다인지 다대다인지 Cardinality인도 존재함

 

두가지 다를 반영하면?? optionality 와 cardinality 두가지 ERD를 오버랩 하면 됨

저자가 여러개 댓글을 달 수 있고, 댓글은 한명의 저자만 존재하며 ; Cardinality 

저자는 댓글을 달 수도 안달수도 있고(옵션, Optional), 댓글에는 저자가 꼭 존재함(필수, Mandatory) ; Optionality

의 관계일때  ERD는 아래 그림에서 오른쪽 마지막 그림과 같이 오버랩하여 표현함 

 

ERD 완성

글을 여러명의 저자가 쓸 수 있고, 저자가 여러개의 글을 쓸 수 있으며

저자는 글을 선택으로하고, 글에는 저자가 필수로 존재함

 

글에는 여러개의 댓글을 달 수 있고, 댓글은 하나의 글에 관계함

글은 댓글을 선택으로 하고, 댓글은 글이 필수로 함

 

저자는 댓글을 여러개 쓸 수 있고, 댓글에는 저자가 한명임

저자는 댓글을 선택으로 하고, 댓글은 저자가 필수임

 

이러한 관계를 ERD로 표현한 것임

 

+) http://erd.yah.ac/ 이사이트에서 그림표현 확인가능, 근데 나는 저게 더헷갈린다...ㅋ

 

http://erd.yah.ac/

 

erd.yah.ac