데이터베이스 일반 양식은 무엇이며 예제를 제시 할 수 있습니까? [닫은
-
05-09-2019 - |
문제
관계형 데이터베이스 설계에는 데이터 중복성을 줄이고 데이터 무결성을 향상시키기 위해 열 (속성) 및 테이블 (관계)을 구성하는 프로세스 인 데이터베이스 정규화 또는 간단한 정규화 개념이 있습니다. (작성된대로 위키 백과).
대부분의 기사는 다소 기술적이고 이해하기 어렵 기 때문에 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 : 테이블의 모든 비 기본 키 열은 전체 기본 키에 직접 의존해야합니다.
나는 기사를 더 자세히 작성했습니다 여기