Приветствую всех. Давненько я тут не писал, но настала пора...
Недавно, мой хороший знакомый обратился ко мне с предложением замутить один стартапчик.
Идея мне показалась интересной не с точки зрения денег, а сточки зрения разработки.
Подробности я опущу, они не важны. Важна задача и технической точки зрения.
Нужно создать модель данных, где каждый элемент может быть связан с другим элементом и эта связь не должна быть ограничена чем-либо.
Дело в том, что в классике, сущности связываются внешними ключами. Но тут таких внешних ключей быть не может, т.к. теоретически абсолютно любое свойство сущности может выступать внешним ключом.
Может это уже все было в Симпсонах. Но я с таким еще не сталкивался.
Спасибо.
Что я уже надумал.
Необходимо создать базовые сущности у которых из "зашитых" реквизитов есть только название.
Для примера:
Собака
Имя
Пуговица
Пол
Человек
Автомобиль
Пальто
Колесо
Нитка
Далее эти сущности ссылаются на другие такие же сущности.
Собака -> имя, пол.
Человек -> имя, пол, собака, автомобиль, пальто.
Автомобиль -> имя, колесо.
Пальто -> пуговица, нитка.
Мне по первой мне казалось, что это просто набор характеристик какой-либо сущности. Но это не так.
Если в фокус взять, например нитку, то можно создать еще сущностей(материал, производитель, прочность и т.д.).
После того, как установлены связи. Нужно определить тип этих связей.
У человека есть "автомобиль", а у "автомобиля" "колесо".
Человек носит "пальто", которое сшито из "нитки" и "пуговицы".
Причем в "автомобиле" может быть материал которые так же ссылается на эту же "нитку" или "пуговицу".
Получается, кроме самих сущностей необходимо еще описать как они друг с другом связаны.
Короче тут я подвис.
_____________