Size: a a a

DBA - русскоговорящее сообщество

2021 June 17

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
когда одна сущность может быть связана с любой другой сущностью
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
из любой таблицы
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
И они естественно не Хибером придуманы были.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
И нахрена ж такой FK?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Короче, не выдумывай ерунду.
Все эти ваши "GFK" из безграмотности и неумения проектировать РБД
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
ну, окей
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
так или иначе, я пользуюсь тем, что уже есть, то, что дал мне используемый на проекте фреймворк, где гфк делаются именно через ссылки на другие таблицы и первичные ключи в ней
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ну, типичный идиотизм, безграмотное проетирование, — как следствие, вот такие проблемы.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Это вот мудаки-клипперисты так базы писали в 80-х-90х.
Тоже нихера не знают - но у них CODEBLOCK!
И эвалюация!
Codeblock - это типа кусок программы, сохранённой в БД в поле.
И потом его можно ВЫЗВАТЬ.

Ну да, пока данных было тыщ 5, всё работало...
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
ну ты же мне не хочешь предложить переписать всё, что уже работает, чем пользуется куча людей, только потому что это может показаться неправильным и кривым дизайном системы?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Хочу, и предлагаю, и чем раньше ты это сделаешь, тем меньше у вас будет проблем.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Но ладно, уговаривать не буду... Тут не детский сад.
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
меня и не надо уговаривать, я просто не вижу альтернатив. тот же хибернейт со своими стратегиями — я не представляю, как их можно применить, чтобы получить такой же GFK
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Ещё раз — какой именно GFK? То Вы писали о файлах:

> если есть условная таблица Медиафайл, пачка условных сущностей вида Автомобиль, Магазин, Валюта, что угодно (сотни их), и должна быть связка Медиафайла с этими сущностями

, то о каких-то "тегах":

> добавить всем сущностям в системе Tag с возможностью потом найти все условные Авто помеченные конкретным тегом. или некоторые Авто и Магазины помеченные каким-то другим тегом.

Что именно нужно, какие нужны запросы / возможности?
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
так что пример с медиафайлами, что пример с тэгами — про одно. я хочу иметь возможность пометить любую сущность в системе тегом. я хочу иметь возможность добавить любой сущности в системе медиафайл.
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
из того, что у меня сейчас есть, например: есть таблица ImportedEntity, в которую вносятся записи о каждой сущности, добавленной в систему. в ней есть всякая мета типа уникального идентификатора, таймстемпов, чего угодно ещё, и ссылка на конкретную сущность, к какой бы таблице она не относилась. и ORM сама разбирается с тем, как мне её достать.
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
в случае, если мне нужно будет откатить все импортированные сущности, связанные с импортом с определенным идентификатором, я просто сделаю
imported_entitites = ImportedEntity.filter(operation_id=some_id).values(imported_entity)
imported_entities.delete()

грубо говоря
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
и неважно, что за сущность там в действительности
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
> я хочу иметь возможность добавить любой сущности в системе медиафайл.

Там среди моделей была какая-то такая, кажется:
CREATE TABLE tag_entity (id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, a_column text NOT NULL);
CREATE TABLE shop (id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, tag_entity_id bigint NOT NULL REFERENCES tag_entity, a_shop_column text NOT NULL);
CREATE TABLE currency (id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, tag_entity_id bigint NOT NULL REFERENCES tag_entity, a_currency_column text NOT NULL);
CREATE TABLE entity_tags (tag_entity_id bigint NOT NULL REFERENCES tag_entity, tag text NOT NULL, PRIMARY KEY (tag_entity_id, tag));

В чём с ней проблема для ваших запросов (в т.ч. с ImportedEntity)? Я пока не вижу.

> и ссылка на конкретную сущность, к какой бы таблице она не относилась. и ORM сама разбирается с тем, как мне её достать.

Только если в результатах запросов есть сущности разных типов — не разберётся (без динамических запросов, как раз).
И вообще в результате одного запроса данные разных сущностей нормально (если не "набивать" всё NULL-ами и т.п.) не свести.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Сделай наследование в БД, объект, можно класс, далее вешаешь на любой объект тэг, и добавляешь связь объекта с медиафайлом.
Потом наследуешь автомобиль, валюту, что угодно, от объекта.
Вот тебе твой GFK
источник