Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Database] 정규화 #64

Merged
merged 18 commits into from
Sep 4, 2021
Merged

[Database] 정규화 #64

merged 18 commits into from
Sep 4, 2021

Conversation

yoongoing
Copy link
Collaborator

변경 사항

  1. 데이터베이스 정규화

Issue 참고 : Note Status Check

Point of discussion

  1. 오타, 잘못된 내용, 이해안가는 점 비판 지적 환영입니다~

Reference

리드미에 기재했습니다.

contents/database/README.md Outdated Show resolved Hide resolved
contents/database/README.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@ggjae ggjae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

항상 제2 정규형의 함수적 종속과 제3 정규형의 이행적 함수종속이 사용하는 단어가 비슷하여 어렵게 생각하였는데 이번 PR을 통하여 지식 하나 더 얻고 갑니다 :)
문맥이 안맞는 단어 한 줄만 Request 보내놓았습니다!

contents/database/README.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@JuseobJang JuseobJang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정규화 데이터베이스에서 필수적인 부분이죠 ㅎㅎ 나중에 좀 더 이해를 돕기 위해 예시 테이블을 몇개 추가하면 더 좋을거 같아요 ! (내가할까,,,)

@yoongoing yoongoing changed the title Database/yoongoing [Database] 정규화 Aug 13, 2021
Copy link
Collaborator

@KimKwon KimKwon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정규화 쉽게 외우는 법!! 하면서 도부이결다조 로 외웠던 것들이네요
정리 감사합니다 💯

Copy link
Owner

@Seogeurim Seogeurim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

데이터베이스 정규화에는 모르는 용어들이 많아서 볼 때마다 어렵네요 !! 깔끔히 정리해주셔서 감사합니다 !! ㅎㅎ

Comment on lines 114 to 116
#### INF(제 1 정규형)

릴레이션에 속한 모든 도메인이 원자값만으로 되어있는 정규형이다
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

INF -> 1NF인 것 같네요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정해놓겠습니다!

Comment on lines +118 to +133
#### 2NF(제 2 정규형)

1NF를 만족하고, 부분 함수적 종속을 제거하여 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다

```bash
완전 함수적 종속 : 만약 (속성 A, 속성 B) -> 속성 C 일때, A->C, B->C 모두 성립될때 완전 함수적 종속이라 한다
부분 함수적 종속 : 만약 (속성 A, 속성 B) -> 속성 C 일때, A->C, B->C 중 하나만 성립될때(모두 성립 x) 부분 함수적 종속이라 한다
```

#### 3NF(제 3 정규형)

2NF를 만족하고, 이행적 함수 종속을 제거하는 정규형이다

```bash
이행적 종속 : A -> B, B -> C 의 종속관계에서 A -> C를 만족하는 관계를 의미한다
```
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

각 종속 관계를 왜 제거해야 하는지에 대한 설명이 추가되면 좋을 것 같아요 !!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

모든 종속은 이상값을 최소화하고 제거하기 위함인데 추가해놓겠습니다!

Comment on lines +172 to +174
```bash
한 테이블을 분해했다가 분해된 결과들을 다시 조인하면 당연히 원래의 테이블로 복원된다고 기대하지만 그렇지 못한 경우가 있다.
다시 조인하면 예상하지 못했던 튜플들이 생성되는 경우가 발생한다.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

예를 들면 어떤 경우인지 알 수 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A B C
ㅡㅡㅡㅡㅡ
s1 p1 c2
s1 p2 c1
s2 p1 c1
s1 p1 c1

이 테이블의 경우[A,B] [B,C] [A,C] 로 쪼갤때 아래와 같습니다

A B
ㅡㅡㅡ
s1 p1
s1 p2
s2 p1

B C
ㅡㅡㅡ
p1 c2
p2 c1
p1 c1

A D
ㅡㅡㅡ
s1 c2
s1 c1
s2 c1

[A,B]+[B,C]+[A,C] 다시 조인하면

A B C
ㅡㅡㅡㅡㅡ
s1 p1 c2
s1 p1 c1
s1 p2 c1
s2 p1 c2 ===> 이상값 발견!
s2 p1 c1

이런 이상 상황을 없애기 위해 제 5정규형을 시행합니다. 적분상수를 떠올리시면 편할 것 같아요!
@Seogeurim

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 !!! 오 !! 신기하네요 바아로 이해됐습니당 !! 감사합니다 ~!!

contents/database/README.md Outdated Show resolved Hide resolved
@ggjae ggjae merged commit 6163a91 into main Sep 4, 2021
@Seogeurim Seogeurim deleted the Database/Yoongoing branch September 4, 2021 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants