개념적 데이터 모델링
속성 ; 각각의 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. 일대일 관계
담임은 반 한명을 맡고, 한 반에는 담임 한명만 존재하는 관계, 오른쪽 그림과 같음
2. 일대다 관계
저자가 여러개 댓글을 쓸 수 있고, 댓글은 하나의 저자만 존재, 오른쪽 두번째가 ERD로 표현한 그림
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