Использование одного столбца ID для ссылки на несколько таблиц - PullRequest
1 голос
/ 18 марта 2012

В MySQL плохо иметь структуру таблицы, подобную следующей ...

Table stuffA
ID

Table stuffB
ID

Table superStuff
ID
type
stuffID

... где в зависимости от значения superStuff (type) superStuff (stuffID) может ссылаться либо наstuffA (ID) или stuffB (ID)?

Заранее спасибо за помощь

Ответы [ 2 ]

3 голосов
/ 18 марта 2012

Я думаю, что вы имеете в виду наоборот:

Table stuffA
ID
superStuffID

Table stuffB
ID
superStuffID

Table superStuff
ID

Кроме того, вам не нужен атрибут type, потому что он неявный, когда вы запрашиваете одну или другую таблицу.

ПРИМЕЧАНИЕ. Я предполагаю, что у вас есть и другие поля в таблицах, и вы их опускаете, чтобы сделать минимальный пример. Если это не так, возможно, вам не понадобится иерархия.

Этот ответ может быть полезен для понимания этого.

2 голосов
/ 18 марта 2012

Ваше решение будет правильным, если вы стоите на Суперстое, и вы хотите знать, кто является отцом ряда.

Один из вариантов может быть таким, но не соответствует предложенному в вашем решении.:

Идентификатор является уникальным Superstuff, указанным во всей базе данных, в таблицах stuffB и stuffA ID является идентификатором Superstuff.Идентификатор материала stuffB и stuffA является внешним ключом для Superstuff.

Table Superstuff
ID

Table stuffA
ID (exist on superStuff)

Table stuffB
ID (exist on superStuff)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...