0

나는 데이터베이스 정규화를 연구 중이며 한 가지를 이해할 수 없다. 다 - 대 - 다 관계가 있다고 가정합니다. 우리는 테이블 코스를 가지고 있으며 테이블 학생이 있습니다. 여러 학생이 여러 과목을 택할 수 있습니다.many to many normalization

학생의 기본 키와 그가 선택한 과정 만 저장하는 "전환"테이블 Course_Student가 있다고 가정합니다.

내 작업은 3NF의 모든 테이블을 만들고 3NF에 테이블이없는 이유를 설명하는 것입니다.

내 질문은 :이 테이블은 이미 3NF에 있으며 특히 "전환"테이블에 대해 우려하고 있습니다.

감사합니다.

Course 
id title 
1 Math 
2 Programming 

Student 
id name 
1 John Stevens 
2 Jack Ryan 

Course_Student 
course_id student_id 
1   1 
1   2 
2   1 


CREATE TABLE Course(
id int IDENTITY(1,1) PRIMARY KEY, 
title varchar(100) NOT NULL 
) 

CREATE TABLE Student(
id int IDENTITY(1,1) PRIMARY KEY, 
name varchar(50) NOT NULL 
) 

CREATE TABLE Course_Student(
course_id int FOREIGN KEY REFERENCES Course, 
student_id int FOREIGN KEY REFERENCES Student 
) 
+0

내 작업은 각 테이블이있는 정상적인 양식을 정의하는 것입니다. 어떤 이유로 제가 Course_Student 테이블이 제 3의 정규형인지 의심 스럽습니다. – user3769364

+0

기본 키를 잊어 버리지 마라. 물론 ID 열은 PK이고, 학생 ID 열은 PK, course_id 및 student_id 열은 복합 키 (복수 기본 키)이다. –

+0

3NF에 있으며, 그 테이블의 기본 키는 (course_id, student_id) 그래서 그것은 어떤 속성도 가지고 있지 않습니다. – Bob

답변

1

정규화에 대한 나의 이해에 따라 테이블은 이미 3.5 NF (BCNF)입니다. 당신의 테이블 디자인이 훌륭합니다.

정상화가 정상적으로 이루어지지 않을 수도 있지만 귀하의 경우 정상적으로 정상적으로 처리 될 수 있습니다. 표 (Course_Student)에 대한

기본 키는 두 개의 테이블을 참조, 2 외래 키와 (course_id, student_id)

해야합니다 :)! 보통의 양식을 평가

0

데이터베이스 해당 함수 종속, 각 테이블에 포함 디자인에 이루어집니다 무언가이다.

후자에 대한 명시적인 설명이 없으면 모든 종속성은 키에 있다고 가정 할 수 있으며 따라서 디자인은 정의에 따라 (최소한) BCNF 만 만족할 것으로 가정 할 수 있습니다.

+0

흥미롭게도이 특별한 경우에 충분한 정보가 6NF를 추론하기 위해 주어졌지만 (아무 것도 증명되지 않았 음). – philipxy