2014-10-01 4 views
0

Доброе утро, в дизайне базы данных, у меня есть таблица (вызов TabA), которая может иметь отношения с четырьмя другими таблицами. В том смысле, что эта таблица может быть связана как с первой из четырех, так и со второй, а третья - с четвертой, но не может иметь связей с ними; или он может иметь один (с любой из таблиц) или две ссылки (всегда с двумя из них) и т. д.Проектирование таблиц Sql Server

Таблица TabA Я добавил четыре поля, которые относятся к четырем таблицам, которые могут быть «нулевыми», когда у них нет никакого соединения.

Удивление - это оптимальный дизайн (скажем, четыре поля в TabA), или вы можете сделать лучший дизайн для этого типа ситуации?

Большое спасибо за ваш ответ.

Дэйв

+0

Не могли бы вы предоставить нам больше информации и примеры о ваших таблицах и полях внутри них. – Arun

+2

Если я правильно понимаю, то то, что вы предложили, звучит правильно. Если у вас есть таблица с 4 отношениями к четырем отдельным таблицам, тогда у вас должно быть 4 столбца, каждый из которых имеет внешний ключ в соответствующей таблице. При необходимости вы можете управлять минимальным/максимальным количеством отношений с контрольными ограничениями (например, если «Столбец1» равен нулю, то «Столбец2» не должен быть нулевым). – GarethD

+0

Тогда пример: http://i.imgur.com/gW8uRhD.jpg, где у меня есть отношения, но они могут даже не быть там; мой вопрос: дизайн лучше или, может быть, будет другой, где, возможно, у меня могут не быть четырех полей в таблице и, возможно, каким-то образом кодифицировать и упростить базу данных. еще раз спасибо –

ответ

1

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

Однако сам дизайн схемы кажется сомнительным. У меня недостаточно информации, чтобы узнать, являются ли таблицы «Distributori_ [N] _Livello» действительно иерархической структурой или нет. Если это так, часто можно использовать таблицу самореференций для иерархических структур, а не набор из N таблиц, как видно из используемой диаграммы. Если вы можете реорганизовать свой дизайн таким образом, возможно, потребуется сократить количество столбцов внешнего ключа.

Независимо от того, возможно ли это или нет, я не могу сказать, учитывая предоставленные данные.

+0

Моя ошибка: http://i.imgur.com/tYZRgfk.jpg. Я ошибался, чтобы опубликовать изображение: имя «Distributori_1_Livello» и т. Д., Не представляет собой иерархическую структуру, а только тома имен. Предположим, у нас есть TBL_AMMINISTRAZIONE, TBL_DISTRIBUTORI, TBL_RIVENDITORI, TBL_VENDITORI E TBL_CLIENTI. –

+0

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

Смежные вопросы