문제

관계형 데이터베이스 설계에는 데이터 중복성을 줄이고 데이터 무결성을 향상시키기 위해 열 (속성) 및 테이블 (관계)을 구성하는 프로세스 인 데이터베이스 정규화 또는 간단한 정규화 개념이 있습니다. (작성된대로 위키 백과).

대부분의 기사는 다소 기술적이고 이해하기 어렵 기 때문에 1NF, 2NF, 3NF, 심지어 3.5NF (Boyce-Codd)의 예제를 기반으로 이해하기 쉬운 설명을 작성하도록 요청합니다.

도움이 되었습니까?

해결책

1NF는 가장 기본적인 정상 형태입니다. 테이블의 각 셀에는 정보가 하나만 포함되어 있어야하며 중복 행이 없을 수 있습니다.

2NF와 3NF는 모두 기본 키에 의존하는 것입니다. 기본 키는 여러 열로 구성 될 수 있습니다. Chris가 그의 대답에서 말했듯이 :

데이터는 키 [1NF], 전체 키 [2NF] 및 키 [3NF]에만 의존합니다 (따라서 도와주세요. 코드).

2NF

특정 학기에 수강 한 코스가 포함 된 테이블이 있다고 가정 해 봅시다. 다음과 같은 데이터가 있다고 가정 해 봅시다.

|-----Primary Key----|               uh oh |
                                           V
CourseID | SemesterID | #Places  | Course Name  |
------------------------------------------------|
IT101    |   2009-1   | 100      | Programming  |
IT101    |   2009-2   | 100      | Programming  |
IT102    |   2009-1   | 200      | Databases    |
IT102    |   2010-1   | 150      | Databases    |
IT103    |   2009-2   | 120      | Web Design   |

이것은 2NF가 아닙니다, 네 번째 열은 전체 키 - 그러나 그것의 일부만. 코스 이름은 코스의 ID에 의존하지만, 한 학기와는 관련이 없습니다. 따라서 볼 수 있듯이, 우리는 중복 정보가 있습니다. 몇 개의 행이 우리에게 101이 프로그래밍 중이며 IT102가 데이터베이스입니다. 그래서 우리는 코스 이름을 다른 테이블로 옮겨서 CourseId가 전체 키입니다.

Primary Key |

CourseID    |  Course Name |
---------------------------|
IT101       | Programming  |
IT102       | Databases    |
IT103       | Web Design   |

중복성이 없습니다!

3NF

좋아, 코스 교사의 이름과 그에 대한 세부 사항을 RDBMS에 추가한다고 가정 해 봅시다.

|-----Primary Key----|                           uh oh |
                                                       V
Course  |  Semester  |  #Places   |  TeacherID  | TeacherName  |
---------------------------------------------------------------|
IT101   |   2009-1   |  100       |  332        |  Mr Jones    |
IT101   |   2009-2   |  100       |  332        |  Mr Jones    |
IT102   |   2009-1   |  200       |  495        |  Mr Bentley  |
IT102   |   2010-1   |  150       |  332        |  Mr Jones    |
IT103   |   2009-2   |  120       |  242        |  Mrs Smith   |

이제 교사 이름이 교사에 의존한다는 것이 분명해야합니다. 3NF가 아닙니다. 이 문제를 해결하기 위해, 우리는 2NF에서했던 것과 거의 동일하게 수행합니다.이 테이블에서 교사 이름 필드를 꺼내서 교사를 열쇠로 사용하는 자체적으로 넣습니다.

 Primary Key |

 TeacherID   | TeacherName  |
 ---------------------------|
 332         |  Mr Jones    |
 495         |  Mr Bentley  |
 242         |  Mrs Smith   |

중복 없음 !!

기억해야 할 중요한 것은 무언가가 1NF에 있지 않다면 2NF 또는 3NF가 아니라는 것입니다. 따라서 각각의 추가 정상 양식에는 필요합니다 모든 것 더 낮은 정상 형태에도 추가 조건이 있었으며 모두 성취됩니다.

다른 팁

나는 정확한 문구에 대한 좋은 기억이 없었지만 데이터베이스 수업에서는 교수가 항상 다음과 같은 말을했다고 생각합니다.

데이터는 키 [1NF], 전체 키 [2NF] 및 키 [3NF]에만 의존합니다.

다음은 빠르며, 인정합니다 정육점 응답이지만 문장에서 :

1NF : 테이블은 정렬되지 않은 상태로 구성됩니다 세트 데이터의 및 반복 열이 없습니다.

2NF : 다른 열 때문에 테이블의 한 열에서 데이터를 반복하지 않습니다.

3NF : 테이블의 모든 열은 테이블 키와 관련이 있습니다. 테이블의 다른 열을 설명하는 열에 열이 없을 것입니다.

자세한 내용은 Wikipedia를 참조하십시오 ...

1NF : 열당 단 하나의 값 만

2NF : 테이블의 모든 비 기본 키 열은 전체 기본 키에 따라야합니다.

3NF : 테이블의 모든 비 기본 키 열은 전체 기본 키에 직접 의존해야합니다.

나는 기사를 더 자세히 작성했습니다 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top