Реляционная база данных проектирует динамические отношения между сущностями - PullRequest
0 голосов
/ 15 марта 2019

Периодически у меня возникает одна и та же проблема, когда я собираюсь проектировать базу данных, и она выглядит следующим образом:

Обычно между ними связано дерево энтитов, и эти отношения могут (и этоэто) меняются во времени ... тогда, на мой взгляд, у меня есть план, чтобы попытаться решить эту проблему, и такие изменения не изменяют первоначальный дизайн базы данных.

Это:

Вместо того, чтобы иметь таблицу для каждой сущности и взаимосвязи между ними, у меня есть что-то вроде этого:

[Feature] <-> [Type] <-> [Element] <-> [Value]
                ^                         ^
                |_________________________|

Все между "[]" - это таблица в реляционной базе данных.

На этомКстати, я могу связать Элемент (первичный ключ: int id) с остальной частью базы данных (действия, время, атрибут действий, пользователи и т. д.).

Элемент (строка некоторой сущности в традиционном дизайне,TD далее) имеет тип (сущность в TD) и имеет некоторые свойства (атрибуты сущности в TD) с конкретным значением (значение атрибута в TD).

На этом пути, например, Iможет связать любую «сущность» ста же таблица остальной системы, например «вход», где я традиционно устанавливаю user_id, время, дату действия.

Проблема в том, что я утратил преимущества первичных ключей и связанных с ними объектов.Но, если индекс в таблице значений для небольшого количества данных в базе данных не будет иметь плохую производительность, не так ли?Конечно, тип значения будет varchar: -S для хранения «данных любого типа».

Я считаю, что база данных NoSQL может быть решена другими способами, такими как эти проблемы, но не существует некоторыхрешение в реляционной базе данных?Я имею в виду, я бы хотел использовать реляционную базу данных вместо NoSQL, потому что проект и технологии исправлены.

Заранее спасибо.

...