2012-03-15 3 views
1

Я пытаюсь достичь 3NF, используя данные, которые у меня есть, но я смущаюсь. Эти таблицы у меня есть:Достижение нормализации SQL 3NF

FACULTY table DEPARTMENT table  STUDSGROUP table   STUDENT table 
FACULTY_ID  DEPARTMENT_ID   STUDSGROUP_ID   STUDENT_ID 
FACULTY_NAME  DEPARTMENT_NAME   ACADEMIC YEAR   STUDENTS_NAME 
FACULTY_DEAN  HEAD OF DEPARTMENT  COURSE/SPECIALITY  STUDENTS_GROUP 
                    COURSE/SPECIALITY 
                    DOB/DATE OF BIRTH 

Я имею в виду, я могу это сделать, как это ниже, хотя я думаю, что я не прав.

FACULTY table 
FACULTY_ID,PK 
DEAN 

DEPARTMENT table 
DEPARTMENT_ID,PK 
FACULTY_ID,fk 
DEPARTMENT_NAME 
HEAD OF DEPARTMENT 


STUDSGROUP table 
STUDSGROUP_ID, pk 
ACADEMIC YEAR 
SPECIALITY 

STUDENTS table 
STUDENT_ID, pk 
FACULTY_NAME,FK 
STUDSGROUP_ID,FK 
FIRST_NAME 
LAST_NAME 
DOB 
+0

Это может помочь узнать, почему * вы пытаетесь достичь 3NF (если это домашняя работа, вы можете добавить тег домашней работы? Люди готовы помочь, но предпочли бы знать). Кроме того, что это за дизайн, который у вас есть, что вы не думаете, что это 3NF? –

+1

Я добавил тег домашней работы, я забыл сделать это, я пытался учиться на нормализации, я думал, что просто делаю это как пример, чтобы помочь мне понять больше. – kryticrecte

+0

Я просто хочу быть уверенным, что если я сделаю это правильно, я? – kryticrecte

ответ

3

Нормализация требует, чтобы вы знали, как связаны различные части схемы. До 3NF и BCNF (почти, но не совсем то же самое —, хотя вам будет трудно найти практический пример 3NF, который также не относится к BCNF), наиболее важной функцией является функциональная зависимость.

Другим ключевым моментом является «сохранение»; вы не должны терять столбцы вообще. Например, ваша оригинальная таблица Faculty имеет идентификационный номер, имя и декан. В вашей пересмотренной версии отсутствует имя факультета; это ошибка в вашей редизайне.

Вы определили, что каждый отдел принадлежит факультету, который кажется достаточно правдоподобным.

Ваши пересмотренные таблицы Студенческих групп выглядят так же, как и в оригинале. Вероятно, это нормально, хотя, возможно, курс/специальная часть этого означает, что студенческая группа связана с отделом и, следовательно, с факультетом. Если да, то вам может понадобиться таблица курсов/специальностей, которая идентифицирует курс/специальность и отдел, оставляя студенческую группу идентифицировать определенную группу в течение курса/специальности.

Ваша исходная таблица студентов имеет курс/специальность, а также группу студентов; это оставляет открытой возможность того, что данные скажут, что студент X делает археологию в таблице «Студенты», но Студенческая группа указывает, что Student X выполняет музыку. Это разрешено? Если нет, лучше бы вам лучше всего было бы иметь Студенческую группу в таблице «Студенты», оставив это для определения курса/специальности, а также года, отдела и, следовательно, факультета? Ваша пересмотренная схема добавляет идентификатор факультета к таблице учеников (но удаляет курс/специальность); что все еще оставляет возможности для конфликта внутри данных.

Вам нужен стол для определения действительных академических лет? Возможно, нет. Должна быть таблица для персонала, чтобы вы могли идентифицировать деканов и руководителей отделов. Может ли декан факультета быть руководителем отдела? Из отделов за пределами их факультета?

+0

Я думаю, ты прав, я понимаю, – kryticrecte

Смежные вопросы