Плюсы и минусы распределительной таблицы между тремя таблицами, только две из которых в любой момент времени - PullRequest
1 голос
/ 18 ноября 2011

У меня будет связь «многие ко многим» в трех таблицах, но связь будет между одной таблицей (скажем, TableA) и только одной из двух других таблиц (скажем, TableB и TableC) одновременно,То есть у меня может быть либо одна таблица соединений

id | TableA_id | TableB_id | TableC_id

с ограничением, чтобы убедиться, что либо TableB_id равен нулю, либо TableC_id равен нулю, либо две таблицы соединений

id | TableA_id | TableB_id
id | TableA_id | TableC_id

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

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Поскольку нет прямой связи между таблицей B и таблицей CI, эти отношения будут храниться в отдельных таблицах, что больше похоже на схему «звезда» / «снежинка».С точки зрения моделирования данных это будет гораздо проще понять, чем таблицу, которая может объединяться в 2 разных направлениях.

1 голос
/ 18 ноября 2011

Хорошая методология проектирования баз данных - никогда не хранить NULL данных (в реальном мире вы, конечно, можете чрезмерно нормализовать).Поэтому вариант 2 лучше.

...