2013-12-02 4 views
2

Привет дорогие члены сообщества Мне нужна помощь по созданию простой базы данных. Это база данных студентов и школ. В одних школах есть несколько учеников, и один студент может быть связан с несколькими школами. Мне интересно, как лучше всего это сделать.Разнообразная конструкция базы данных с базами данных

Пример сценария: пользователь john прошел школу BI в качестве средней школы и MIT в качестве университета, пользователь Гарри пришел в MIT в качестве университета.

Один подход, мы можем иметь это: Мы можем иметь таблицу дб

Таблица Пользователь

+--------+-------+-----------+ 
| usr_id | name | school_id | 
+--------+-------+-----------+ 
|  7 | john |   1 | 
|  7 | john |   2 | 
|  6 | harry |   1 | 
+--------+-------+-----------+

школа Таблица

+-----------+-----------+ 
| school_id | name | 
+-----------+-----------+ 
|   1 | MIT  | 
|   2 | BI School | 
+-----------+-----------+

И использовать school_id как иностранный ключ в таблице пользователя.

Другой подход:

Таблица Пользователь

+--------+-------+ 
| usr_id | name | 
+--------+-------+ 
|  7 | john | 
|  7 | john | 
|  6 | harry | 
+--------+-------+

школа Таблица

+-----------+-----------+ 
| school_id | name | 
+-----------+-----------+ 
|   1 | MIT  | 
|   2 | BI School | 
+-----------+-----------+

Пользователи в таблице школы

+----+---------+-----------+ 
| id | user_id | school_id | 
+----+---------+-----------+ 
| 1 |  7 |   1 | 
| 2 |  7 |   2 | 
| 3 |  6 |   1 | 
+----+---------+-----------+

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

+3

Я не думаю, что есть какой-либо другой более эффективный способ реализовать многие-ко-многим, чем второй подход, который вы использовали. Так это делают большинство людей. – Rachcha

+3

Второй подход является лучшим, потому что он находится в 3-й нормальной форме, и его легче обновлять и изменять, и он будет лучше масштабироваться. –

+0

Спасибо Раче и Сэму С. за помощь. Тогда я пойду со вторым подходом. –

ответ

0

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

Более подробную информацию здесь StackOverflow - Normalization in Plain English

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