코딩 기록들

[Database Programming] 3. ER - Diagram 본문

Database Programming

[Database Programming] 3. ER - Diagram

코딩펭귄 2024. 2. 16. 17:23

ER - Diagram

- Database의 구조를 도식화 함

- 한 데이터베이스의 테이블을 컬럼으로 도식화 함

- 각 테이블 끼리의 관계를 연결

- 대표적인 프로그램 : CA사의 ER-Win, Tomato System사의 eXERD https://www.exerd.com/index.do

- 하나의 테이블을 도식화 함

- 컬럼들을 나열하고 속성을 정의함

PK (Primary Key)
->테이블 안에서 절대 중복이 일어나지 않는 컬럼. ex) 아이디
-> Row(데이터)를 구분할 수 있는 유일한 값.
FK (Foreign Key)
-> Primary Key를 참조하는 컬럼(값)
-> 테이블 내에서 (일부러) 중복을 일으키는 컬럼.  ex) 장바구니의 상품들
-> FK는 반드시 PK의 값을 받아오는 형태
 

Table Constraints

- 테이블 간의 관계를 정의함

- 관계의 종류 : 일대일, 일대다, 다대다

1 vs 1 : 일 대 일 

- 만들지 말아야 할 관계

- 하나의 테이블에 컬럼 20개이상 될경우 부득이하게 사용됨

- 단, row의 수가 천만개 넘어갈경우 성능위해 컬럼 나누지 않음

(1 or 0) vs N : 일대다

- 컬럼 하나가 다른 테이블의 컬럼 여러개 참조할 경우

 

ex) 책 카테고리의 상품들 : 1개의값에 여러 값들이 연결됨


             회원                           상품                                          주문                            
아이디(PK) | 이름          번호(PK) | 이름         주문번호 (PK) | 아이디(FK) | 번호(FK)
member1   | 사용자2     prod1    | 휴대폰            order1         | member1    | prod1
member2  | 사용자2      prod2    | 케이스            order2         | member1    | prod2
member3  | 사용자3                                            order3         | member3    | prod2

** FK : 아무거나 가져올수 없고, 반드시 PK의 값을 받아오는 것이어야 함

N vs N : 다대다

- 1회원 - 구매 - n 상품

- n회원- 구매 - 1 상품

이러한 상황에서는 : '해소테이블'이 필요함 --> '구매' 를 테이블로!

( 다 대 다 관계는 관계를 해소하기 위한 테이블이 존재해야 함)

ex) 하나의 상품은 여러 사용자가 주문할 수 있음. + 한 명의 사용자는 여러 상품을 주문할 수 있음.

 

 

일 대 일 관계

 

 

일 대 다 관계

 

 

- 동그라미 의미 : pk값이 fk에 존재하지 않을수도 있다는 뜻

단, ERD 에서는 일 대 다 관계만 존재할수 있다 (일 대 일)

 

 


논리모드, 물리모드

 

논리모드(Logical Diagram) 

- 사용자관점 ERD

- ERD를 보았을 때 의미를 즉시 알 수 있도록 만들어 놓은 논리 구조

물리모드(Physical Diagram)

-  데이터베이스 관점의 ERD

- ERD를 보았을 때 데이터베이스의 테이블 및 컬럼명을 즉시 알 수 있도록 만들어놓은 물리 구조

 

논리모드 예시

 

물리모드 예시