Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

jeongwon

[데이터 모델링] 논리적 데이터 모델링 본문

DataBase

[데이터 모델링] 논리적 데이터 모델링

jeongwon_ 2022. 5. 27. 13:23

1. Mapping Rule


ERD > 관계형 데이터베이스 형식으로 전환할 때 사용해볼 수 있는 방법론.

<참고>
(오픈소스. 설치하는 게 좀 까다로운 툴)
http://ermaster.sourceforge.net/

ER Master

ermaster.sourceforge.net


※ 도메인을 설정한다 = 컬럼에 대한 영역을 설정/제한한다. (길이 등)

Entity 와 Attribute 의 표현

엔티티와 속성을 테이블과 컬럼으로 표현

1:1과 1:N 관계의 표현


Relationship을 PK와 FK로 표현함에 있어 따져볼 것은 Cardinality(카디널리티)이다.

1:1 과 1:N 의 표현

1:1 에서 고민할 것은 누구에게 Primary Key를 줄 것인가 혹은 그러므로 누가 Foreign Key를 갖는가 이다.
dormant(휴면) 저자의 경우 author(저자)에 의존적인 존재이다. 따라서 author를 기준으로 foreign 이 되는
dormant 테이블의 id값이 dormant를 기준으로 Primary이면서 Forein Key가 되었다.


M:N의 표현을 위한 Mapping Table의 작성

kim과 lee가 함께 집필한 글이 있다. id 값을 1,2 와 같이 등록할 수는 없으므로, Mapping Table을 만들어 각 테이블의 id를 매핑시켜준다.

위 이미지에서 Mapping Table에 해당하는 것은 write 테이블이다.
(1번 저자는 세 개의 글을, 2번 저자는 2개의 글을 집필한 것을 알 수 있다.)

author에게 write는 옵션, write는 author에게 의존적.
topic과 write는 서로에게 의존적(topic이 있다는 것은 write 했다는 것)


2. 정규화(Normalization) - 1~3 정규형

에드가 프랑크 커드 박사가 개발한 정규화를 통해 정제되지 않은 데이터를 관계형 데이터베이스에 어울리는 표로 만들 수 있다.

1) 제 1 정규화
- 제 1 정규형의 원칙 : Atomic columns(원자적 속성)

각 컬럼의 값이 하나 이상이라면 여러 문제를 야기시킬 수 있다. (JOIN의 사용도 어렵다)

중복되지 않으면서 1 정규화의 원칙을 충족시키기 위해 표를 쪼개자.

정규화 이전의 표에서 tag는 2개 즉, 유일하지 않은 값을 지니고 있다.
tag의 정보가 title의 정보에 의존하고 있다는 점을 이용해 이 문제를 해결할 수 있다.

tag의 정보를 따로 분리해 내되, title과의 연관성을 맺어주는 것이다.
두 값을 묶어 'topic_tag_relation'이라는 표를 만들었다. 이 표가 일종의 Primary Key 역할을 하게 될 것이다.



2) 제 2 정규화
- 제 2 정규형의 원칙 : No partial dependencies (부분 종속성이 없을 것)

표의 특정 속성만(부분적으로) 대표적 key에 종속적인 경우, 제 2 정규화가 필요하다.

모든 항복은 기본적으로 title (key) 에 종속적이다.
그런데 동시에 price는 title이 아닌 type에 부분적으로 종속돼 있다.
또한 price 로 인해 표에 중복이 발생한다.

price와, price가 의존하고 있는 type title에 종속된 새로운 표로 분리함으로써 중복 요소를 완화했다.

이로써 topic 테이블에 남은 모든 요소는 온전히 표(또는 하나의 key:title)에 종속적이 되었다.
(title이 행 전체를 대표한다)


3) 제 3 정규화
- 제 3 정규형 원칙 : No transitive dependencies (이행적 종속성이 없을 것)

표의 특정 속성이 표(key: title에)에 온전히 종속적이면서 동시에, 표의 부분적 속성에도 종속적이라면
이것은 이행적이며, 제 3 정규화가 필요하다.


author_id 및 그것에 의존적인 author_name, author_profile 을 author 라는 테이블로 분리해주었다.