Дизайн базы данных - связь ученика с учителем - PullRequest
1 голос
/ 14 мая 2011

Все еще работаю над веб-приложением в качестве школьного проекта, и кажется, что оно продолжает расширяться.

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

Мне было интересно, как лучше всего это сделать. У меня есть одна таблица для всех пользователей на данный момент. Основы этой таблицы:

id | email | firstname | lastname | role
1  | s@s.s | dromiceio | mimus    | 1
2  | d@d.d | tyranno   | saurus   | 2
3  | a@a.a | utah      | raptor   | 1

Роль - это номер, который я назначаю им для предоставления им определенных разрешений. 1 = студент, 2 = учитель, 3 = администратор.

Если предположить, что у одного ученика есть один учитель, а у одного учителя много учеников, каков будет лучший способ составить таблицу базы данных?

Я думал о создании новой таблицы и просто добавлении в нее идентификаторов ученика / учителя:

Например, если учитель Тиранно Саурус (id 2) привязал к нему двух учеников в таблице выше, я бы составил таблицу следующим образом:

pk_id | teacherid | studentid
  1   |     2     |     1
  2   |     2     |     3

Таким образом, я бы знал, что у учителя Тиранно (id 2) есть два ученика, а именно ученик с идентификатором пользователя 1 и идентификатором пользователя 3.

Опять же, я никогда по-настоящему не работал над чем-то подобным, поэтому мне было интересно, может ли кто-нибудь дать мне некоторое представление об этом и возможно ли сделать это лучше.

Я создаю свое приложение на PHP (CodeIgniter) с MySQL; если это важно.

Большое спасибо.

1 Ответ

1 голос
/ 14 мая 2011

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

Если вы привязывали учеников к классам (где в каждом классе несколько учеников и каждыйучащийся посещает несколько классов), тогда будет необходима промежуточная таблица сопоставления «многие ко многим».

...