Набор иностранных ключей, где все, кроме одного, равны NULL - PullRequest
5 голосов
/ 22 января 2010

Как называется методика использования набора внешних ключей в таблице, где все, кроме одного, равны NULL для данной строки?

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

(пользователи Django могут признать это как альтернативу использованию общего внешнего ключа)

Ответы [ 2 ]

6 голосов
/ 23 января 2010

Термин для дизайна, который вы описываете: Exclusive Arc .

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

Смотрите мои другие ответы для полиморфных ассоциаций:

2 голосов
/ 23 января 2010

Было бы проще с примером, но общий способ распутать это просто найти общий супертип для этих таблиц. Предположим, что у нас есть таблицы Book, Article, Magazine, и теперь у таблицы должен быть внешний ключ к этим таблицам. Использование общего супертипа Publication решает эту проблему. Смотрите здесь модель и аналогичный вопрос / ответ.

...