Таблицы проектирования реляционных баз данных с общей базой

У меня много проблем с поиском лучшего дизайнерского решения для этой ситуации. У меня есть две таблицы с общей базой. В настоящее время я разработал его так: у меня есть таблица заказов (общая база):

[order_table]
 order_id
 order_type
 company
 created

У меня есть другая таблица со ссылкой на таблицу заказов:

[product_order]
 order_id fk
 product_id
 quantity
 price

У меня есть вторая таблица со ссылкой на таблицу заказов:

[special_order]
 order_id fk
 description
 price_estimate
 color
 size

Обе таблицы имеют одинаковый order_id, который мне нравится. Мне часто приходится делать большие запросы к order_table, используя информацию, доступную в этой таблице, скажем, "company = 200". Но для каждого результата мне также нужны данные из product_order или special_order, в зависимости от того, какой это тип. Таким образом, единственное оптимальное решение, которое я вижу, - это оставить соединение запроса с обеими таблицами в order_id и затем отфильтровать информацию. Единственный другой вариант, который я вижу, - это добавить общие столбцы в каждую таблицу, но потом мне придется много реорганизовывать, чтобы получить их в правильном порядке.

Есть ли лучший способ организовать данные?

1 ответ

То есть эти дополнительные таблицы являются дополнительными атрибутами для определенного идентификатора заказа (1:1)?

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

Если это не подходит, вы можете добавить "Тип" в общую таблицу и позволить триггеру управлять вставкой / удалением связанных записей, чтобы избежать путаницы с сиротами и т. Д.

Используйте представления с вашими левыми соединениями (не будет ли лучше внутреннее?), Чтобы получить разные типы.

Другие вопросы по тегам