Вопрос по моделированию базы данных - PullRequest
0 голосов
/ 15 июня 2011

Таблица:
Студенты
Профессора
Записи (пока нет записей физических таблиц в базе данных для записей, эта таблица находится во внешнем интерфейсе, поэтому, вероятно, она составлена ​​из нескольких вспомогательных таблиц, если они нам нужны. Просто нужно создать допустимое значение)

Preambula: Один студент может иметь ассоциацию со многими профессорами Один профессор может иметь ассоциацию со многими студентами В одной записи может быть 0,1 или более студентов или преподавателей. Профессор должен быть связан с одним или несколькими студентами Студент не обязан иметь ассоциацию с каким-либо профессором Это должно быть больше похоже на это (таблица входных данных):

enter image description here

Любой профессор в этой таблице должен иметь ассоциированное имя в таблице (например, Wandy связан с Алексом) Студенту (но возможно) не обязательно иметь ассоциированных профессоров в этой таблице Один ряд (например, Линда (студент), Келли (профессор), Виктор (профессор)) Нельзя связывать друг с другом каким-либо образом. Но это совершенно нормально, если Линда связана с Дэвидом.

Проблема в том, что я не совсем понимаю, как один столбец может иметь идентификаторы разных таблиц (а их несколько!), И не совсем понимаю, как построить действительное значение для этого. Я отвечу на любые дополнительные вопросы, которые вам нужны. Большое спасибо!

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Если вы просто хотите установить связь между студентами и преподавателями - просто установите отношения «многие ко многим» в ERD.В логической (реляционной) схеме он составит промежуточную таблицу с внешними ключами для таблиц ученика и профессора.Но из вашего примера похоже, что вам нужно спроектировать БД для ваших «PeopleEntries», что непросто.Кажется, что в ERD есть следующие объекты:

  • Студенты (ID, имя)
  • Профессора (ID, имя)
  • PeopleEntries (ID, LoveCats, LoveDogs, LoveAnts)

Отношения (учитывая, что люди не могут появляться в записях более одного раза):

  • Студенты Многие - 1 PeopleEntries
  • Профессора Многие - 1 PeopleEntries
  • Студенты Многие - Многие Профессора

Реляционная схема будет содержать таблицы (внешние ключи в соответствии с отношениями erd):

  • Студенты (ID, имя, PeopleEntryID FK )
  • Профессора (ID, имя, PeopleEntryID FK )
  • PeopleEntries (ID, LoveCats, LoveDogs, LoveAnts)
  • StudentProf Преподаватель (StudentID FK , ProfessorID FK )

Не знаюзнать, как реализовать ограничение, запрещающее ассоциацию между людьми из одной и той же записи на концептуальном уровне (ER-диаграмма).На физическом уровне вы можете реализовать логику в триггерах или обновить процедуры, чтобы проверить это.

0 голосов
/ 15 июня 2011

Вы хотите соединительную таблицу:

ID  StudentID   ProfessorID
0    23         34
1    22         34
2    12         33
3    12         34

В приведенной выше таблице у одного профессора 3 студента, у одного - два профессора.

StudentID и ProfessorID вместе должны быть уникальным индексом, чтобы избежать дублирования отношений.

0 голосов
/ 15 июня 2011

Согласно моему быстрому пониманию,

Создать таблицу со следующими столбцами Обозначение PersonName .....

Создать еще одну таблицу

PersonName LinksTo

Во второй таблице каждая запись о человеке будет иметь несколько записей на основе отношения

...