2013-05-30 4 views
0

У меня возникли проблемы с поиском наилучшего решения для создания моей базы данных. У меня есть 3 объекта: ресторан, поставщик и субсупер. Каждый ресторан может заказать любой поставщик. Если у Поставщика есть SubSuppliers, рестораны заказывают непосредственно в один из SubSupplier, но должны знать родителя-Поставщика для информации.Правильный способ моделирования моей базы данных

На данный момент у меня есть что:

Restaurant (idRestaurant,nameRestaurant,otherStuff,...); 
Supplier (idSupplier,nameSupplier,address, phone, ...); 
SubSupplier (idSubSupplier, #idSupplier, nameSubSupplier, address, phone,...) ; 

Но поставщиков и субпоставщиков имеют точно такие же атрибуты (например, 20), за исключением, что субподрядчик связан с родительским-поставщика.

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

Это хорошее решение? Что лучше?

ответ

0

Почему бы не иметь один стол для поставщиков и субпоставщиков; с отношением обруча «часть зайчика». Это просто левое соединение, чтобы найти родителя, если он есть, при заказе.

0

Возможно, вы захотите добавить столбец (superSupplier) к Поставщику с идентификатором, указанным (внешним ключом) для Поставщика, так что было бы, если бы вы сообщали Поставщику, который является его суперпользователем, и если значение имеет значение null, то это обычный поставщик.

1

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

Restaurant (idRestaurant,nameRestaurant,otherStuff,...); 
Supplier (idSupplier,nameSupplier,address, phone, ...); 
SupplierChild (idParentSupplier, idChildSupplier) 
Смежные вопросы