Таблицы проектирования реляционных баз данных с общей базой
У меня много проблем с поиском лучшего дизайнерского решения для этой ситуации. У меня есть две таблицы с общей базой. В настоящее время я разработал его так: у меня есть таблица заказов (общая база):
[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)?
Я хотел бы рассмотреть возможность добавления всех полей к общим таблицам или, по крайней мере, к полям из наиболее используемой подстолицы.
Если это не подходит, вы можете добавить "Тип" в общую таблицу и позволить триггеру управлять вставкой / удалением связанных записей, чтобы избежать путаницы с сиротами и т. Д.
Используйте представления с вашими левыми соединениями (не будет ли лучше внутреннее?), Чтобы получить разные типы.