преобразовать обобщение в схему MySQL - PullRequest
1 голос
/ 28 апреля 2011

Я нарисовал эту схему раскладки, но теперь мне нужно конвертировать для "mysql раскладки". Так что generalization должен использовать два junction tables, правильно? (один для студента, другой для работника)

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

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

спасибо

enter image description here

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

У ORM есть 3 способа сделать это

Первый способ - дать каждому отдельную таблицу и объединить их.(3 таблицы)

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

И последний и мой любимый способ.Вы складываете все в одну таблицу и вводите столбец дискриминатора.в основном составляют таблицу, содержащую все поля пользователей, студентов и работников.добавить дополнительный столбец для типа и заполнить их соответственно.Вы можете легко выбрать всех учащихся / работников, используя колонку дискриминатора, и вам не нужно спамить объединения.Недостатком является то, что он занимает дополнительное пространство.

0 голосов
/ 28 апреля 2011

Один из способов справиться с этим - определить три таблицы: пользователи, работники и студенты. Каждая из таблиц рабочих и учеников имеет поле user_id, которое является внешним ключом, связанным с тем же полем в таблице пользователей.

...