#mysql #database #database-design
#mysql #База данных #база данных-дизайн
Вопрос:
у меня есть сомнение. Представьте, что у меня есть три категории: студент, рабочий, студент /работница.
правильный :
ProfissonalArea
| | |
| | |
student worker/student worker
или существует лучший способ сделать это? проблема в том, что у студента может быть работа.
Спасибо
Ответ №1:
Почему человек должен быть связан только с одной категорией? Это только заставит вас перечислить все возможные комбинации. Вероятно, вам было бы лучше использовать многозначное поле, в котором можно указать несколько категорий одновременно.
Если это невозможно, по крайней мере, используйте наследование, чтобы, например, случай с работающим студентом был реализацией как рабочего, так и студента, а не совсем другой вещи.
Комментарии:
1. если я понимаю, то, что вы предлагаете в первую очередь, это удалить 3 категории и создать что-то вроде «formationProperties», в котором есть все поля трех категорий?
2. @user455318: С чем я в принципе не согласен, так это с
student/worker
случаем. Что, если вам нужно добавить студентов со стипендией? Или люди с более чем одной работой? Если это не домашнее задание, где вы знаете , что это все, решения, которые сводятся к перечислению всех комбинаций, склонны возвращаться и кусать вас.3. @user455318: Если это просто категории, без связанных полей, то все, что вам нужно, — это многозначное поле, позволяющее пользователю быть как работником, так и студентом. Если это на самом деле классы объектов, вы должны использовать интерфейсы и наследование, чтобы WorkingStudent можно было использовать везде, где используются Worker или Student.
4. спасибо, вы помогли мне разобраться в проблеме. студент / рабочий не имеет смысла существовать, если его можно получить с атрибутами student worker. Спасибо