Mysql, как избежать повторения - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть таблица студентов со следующими полями.

Id,FirstName,SecondName,Photo,Student_ID

У меня также есть таблица с именем class_of_2011 с полями

Id,FirstName,SecondName,Photo,Student_ID,Subjects

Я хочу выбрать некоторых конкретных студентов из таблицы студентов и добавить их в таблицу class_of_2011, но у меня уже естьимена в таблице студентов. Я думаю, что единственный способ сделать это - скопировать имена, которые я хочу, в таблицу class_of_2011, но, поскольку будет класс 2012 года и более, я чувствую, что буду просто копировать данные из одной таблицык другому.

Повторение себя неизбежно в моем случае?

Ответы [ 4 ]

2 голосов
/ 22 февраля 2011

Похоже, это можно легко нормализовать. Почему бы в ваших class_of_ таблицах просто не было внешнего ключа к столбцу id таблицы *1003*?

StudentId,Subjects

Таким образом, одна запись ученика может быть связана с несколькими классами, если кто-то находится на 5-летнем плане.

Я предполагаю, что поле Student_ID в таблице Students - это их идентификационный номер или что-то, а не первичный ключ этой таблицы.

1 голос
/ 22 февраля 2011

Я бы реструктурировал данные, если это возможно ... Что-то вроде ....

Student Table
ID, Name, Address, other common specific to student

GraduatingClass Table
YearGraduate, StudentID

Enrollment Table
StudentID, ClassID, SemesterID
1 голос
/ 22 февраля 2011

Таблица class_of_2011 должна содержать первичный ключ таблицы students и никаких других «повторяющихся» данных.Все остальные интересующие вас столбцы могут быть получены путем объединения двух столбцов в запросе.

1 голос
/ 22 февраля 2011

Таблица студентов Id, FirstName, SecondName, Photo, Student_ID

Таблица субъектов Id, Тема

Таблица Student_Subjects Id, Student_Id, Subject_Id, Year

Затем вы можете назначить студенту несколько предметов на несколько лет.

...