У меня есть абстрактный класс «Человек», который унаследован (не абстрактный) класс «Кандидат», у последнего есть несколько подклассов: сохраненный кандидат (для интервью), признал кандидата ... Как я могу представить это в базе данных, пожалуйста?
СпасибоКак представить классы с иерархическим наследованием в базе данных отношений
ответ
Если элементов данных не так много, просто создайте единую таблицу с полем типа. Если есть много столбцов или вариантов, создайте таблицы для вариантов и соедините их с главной таблицей.
Я бы сделал это, если бы был только один иерархический уровень (т. Е. Если бы были только допустимые и сохраненные кандидаты, наследуемые от Person), но теперь у меня есть два иерархических уровня, которые я не знаю, как это сделать – hereForLearing
Это неправильное использование наследования. Человек может играть роль кандидата, но не всегда был и всегда будет кандидатом. Используйте композицию. Человек играет много ролей, один из которых может быть кандидатом. Впоследствии они могли стать сотрудником. И их статус тоже не должен быть подтипом. Для этого используйте столбец «status».
Что-то вроде этого:
create table people (
person_id int primary key,
name text,
...
);
create table person_roles (
person_id int references people(person_id),
type text check (type in ('Candidate', '...')),
candidate_status text check (candidate_status in ('Retained','Admitted')),
primary key (person_id, type)
);
Правильное использование наследования будет Person расширяет AbstractLegalParty. Организация или компания также расширят AbstractLegalParty.
Почему вы включили введите первичный ключ? и, кстати, вы правы в этом примере. Я привел только пример, на моей диаграмме классов UML у меня есть следующая структура: Person (абстрактный класс), унаследованный Кандидатом, Персоналом и Администратором, и кандидат имеет два подкласса: признанный и сохраненный кандидат, это правильно? – hereForLearing
@saywow, который позволяет человеку иметь несколько ролей, но только одну роль данного типа –
, поэтому я буду представлять в своем UML Лицо (абстрактный класс), унаследованное Кандидатом, Персоналом и Администратором, и кандидат наследуется: допущенными и и когда я хочу представить, что в базе данных я буду делать, как вы сказали, правильно ли? что не будет выглядеть, если человек, член, кандидат ... имеют все тот же иерархический уровень? – hereForLearing
- 1. Идентификация отношений в базе данных
- 2. как представить эту модель в базе данных
- 3. Вложенные классы в разные файлы с наследованием
- 4. Иерархическая организация с несколькими арендаторами в базе данных с наследованием
- 5. Персистентные классы с наследованием с использованием Gilead
- 6. Лучший способ представить лестницу в базе данных
- 7. Представить таксономию продукта в базе данных
- 8. Одиночные классы с наследованием - Ruby (я думаю)
- 9. Python: Внутренние классы с наследованием подкласса?
- 10. Загрузка классы с наследованием из пакета
- 11. Хранение отношений в базе данных mysql
- 12. Сопоставление отношений в существующей базе данных с EF
- 13. Как разделять классы с наследованием в разные файлы .h/.cpp?
- 14. Диаграммы отношений сущностей в базе данных?
- 15. Индивидуальные классы отношений
- 16. Как представить классы шаблонов C++ в LePUS3?
- 17. Как хранить классы python в базе данных с помощью Django?
- 18. Как хранить классы в базе данных с помощью JDBC
- 19. От многих до многих отношений с наследованием модели в Django
- 20. Как представить массив массивов в реляционной базе данных
- 21. Как лучше всего представить двухмерный массив в базе данных?
- 22. Как представить набор значений в реляционной базе данных
- 23. Где хранятся классы java в базе данных?
- 24. Loopback: сохранение отношений модели к базе данных
- 25. Графическая база данных с иерархическим доменом?
- 26. Добавление отношений к базе данных доступа
- 27. Сохранение моделей и отношений в базе данных графа
- 28. как представить список <string> в базе данных
- 29. Классы для предприятий; Проблемы с наследованием типа типа
- 30. Вершина отношений с PHP в базе данных PostgreSQL
Это неправильное использование наследования. Человек может играть роль кандидата, но не всегда был и всегда будет кандидатом. Используйте композицию. Человек играет много ролей, один из которых может быть кандидатом. И их статус тоже не должен быть подтипом. Используйте столбец «status» для этого –
Спасибо за ваш ответ, что вы имеете в виду по составу, пожалуйста, – hereForLearing
Я имею в виду не использовать наследование :) Вы бы хотели, чтобы one2many отношения между Person и PersonRoles –