2012-03-17 4 views
1

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

Table stuffA 
ID 

Table stuffB 
ID 

Table superStuff 
ID 
type 
stuffID 

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

Спасибо, заранее за вашу помощь

+0

Почему у вас два столика StuffA, StuffB, если они оба одинаковы ...? – Teja

ответ

3

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

Table stuffA 
ID 
superStuffID 

Table stuffB 
ID 
superStuffID 

Table superStuff 
ID 

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

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

Этот answer может быть полезен при понимании этого.

2

Ваше решение верно, если вы стоите на Superstuff, который хотите знать, кто является отцом ряда.

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

соображения:

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

Table Superstuff 
ID 

Table stuffA 
ID (exist on superStuff) 

Table stuffB 
ID (exist on superStuff) 
Смежные вопросы