Я экспериментирую с OrientDB, и я хотел бы моделировать не дизъюнктивное наследование. Например: - есть Лицо - a Студент - лицо - Рабочий - это лицо - «Альберто» является одновременно студентом и работником. Можно ли моделировать эту ситуацию только с тремя классами, которые я определил (Студент, Работник, Лицо), или я должен представить новый класс WorkStudent, расширяющий как Работника, так и Студента, содержащий «Альберто»?OrientDB: Можно ли определить вершину, являющуюся экземпляром нескольких классов?
Я полагаю, что вершина не может быть экземпляром более одного класса, так как система не знает, в какой кластер ее помещать, но я еще не нашел явного ответа на мой вопрос.
Приветствия,
Альберто (рабочий студент :-))
Я вижу вашу точку, @ silverfox1948. Благодарю. Однако, как и я, я не могу навязывать какие-либо ограничения на уровне схемы, например, я бы не смог наложить на то, что у работника должна быть зарплата. Очевидно, это только пример, который я придумал. В реальной базе данных я строю член родительского класса может иметь несколько дочерних классов, но не могу их изменить. – Alberto
На самом деле, если «Рабочий» - это узел (вершина), тогда можно создать ограничения на свойства узла. Свойство может иметь ограничение «Обязательный» - это означает, что оно требуется вместе с минимальными/максимальными значениями. – silverfox1948
Я настоятельно рекомендую вам НЕ использовать наследование для решения проблем категоризации. Работник/Студент и т. Д. - это просто временные, неисключительные категории. Если вы добавите другую категорию, ваши требования наследования будут взрываться экспоненциально. Просто попробуйте добавить еще одну категорию и посмотреть, сколько дочерних классов вы должны создать, чтобы позволить человеку классифицироваться в одной из новых возможных комбинаций. – silverfox1948