Вопрос по хорошему стилю проектирования БД
Vetal
Дата: 13.10.2003 16:07:39
Всем привет!
Вопрос такой. Пишу базу учета продаж нашей фирмы. У нашей фирмы есть три вида продуктов. К примеру: Тракторы, комбайны, автомобили. Как мне спроектировать таблицу продуктов? Делать одну, или три. Или по другому.
Ведь у всех этих продуктов есть общие свойства: объем двигателя, производитель, масса, срок эксплуатации и т.д. Кроме этого, у каждого из этих товаров есть свои характеристики. Например у комбайна - количество перерабатываемого зерна за раз, скорость сборки урожая и т.д. У автомобиля - количество перевозимых пасажиров, объем багажника и т.д. У трактора - дополнительное оборудование, функциональность и т.д.
Если я все запишу в одну таблицу, у меня только для трети типов товаров будет заполнено поле "скорость сборки урожая", что приведет к излишнему размеру базы.
Если я все запишу в три таблицы, то СЕЛЕКТ надо будет делать три раза и вобще так неудобно.
Можно еще сделать в таблице товары поле "тип товара" и хранить в таблице товаров общие свойства. Потом завести по одной таблице на каждый тип товара и хранить в них дополнительные атрибуты. Но это будет уже непонятная какая-то структура - и не "один-ко-многим" и не "один-к-одному" и вобще непонятно что. Получается таблицы в этом случае будут связываться в зависимости от поля-селектора "тип товара".
Как же все-таки правильно спроектировать эту ситуацию? Подскажите пожалуйста, кто знает.
Всем заранее спасибо
Vetal
bushmen
Дата: 13.10.2003 16:10:25
Например, я создал таблицу продуктов с их характеристиками, таблицу с клиентами, таблицу с продажами
Vetal
Дата: 13.10.2003 16:13:55
Спасибо, bushman. Я когда спрашивал, я имел в виду только как мне спроектировать информацию о продуктах в базе? Т.е. все продукты в одной таблице или на каждый тип продукта по своей таблице?
злой шаман
Дата: 13.10.2003 16:16:34
| | Vetal писал: |
| | Можно еще сделать в таблице товары поле "тип товара" и хранить в таблице товаров общие свойства. Потом завести по одной таблице на каждый тип товара и хранить в них дополнительные атрибуты. |
Я бы так сделал.
bushmen
Дата: 13.10.2003 16:24:18
Я когда писал, я и имел в виду, что ВСЕ виды товаров я делал в одной таблице, добавил в нее поле "Вид товара" и создал таблицу-справочник по ВИДАМ товаров.
Vetal
Дата: 13.10.2003 16:33:47
2 Злой шаман:
А хорошо ли, что у нас получается таким образом, что связь между таблицей продуктов и таблицами дополнительных параметров продуктов определяется полем-селектором "тип товара"?
bushmen
Дата: 13.10.2003 16:35:04
А что тебе мешает ввести идентификатор товара?
злой шаман
Дата: 13.10.2003 16:39:24
| | Vetal писал: |
| | А хорошо ли, что у нас получается таким образом, что связь между таблицей продуктов и таблицами дополнительных параметров продуктов определяется полем-селектором "тип товара"? |
Это не очень хорошо. Но лучших вариантов я не вижу.
LUKASUS
Дата: 13.10.2003 16:39:52
3 вариант лучший
Просто если надо выбрать например трактор у которого доп.оборудование такое-то,то сначала находим записи в таблице товаров у которых тип товара- трактор - далее просто нужно знать имя таблицы совйств тракторов,а там
попимо полей свойств есть и поле ID товара,по нему связь один-к-одному с записью в таблице товаров,так и находишь по таблице спец.свойств
Для динамичекого выбора таблицы в зависимости от типа товара,строится
динамический запрос- то есть формируешь запрос как текст динамически
определяя таблицу свойств и нужное свойство
Vetal
Дата: 13.10.2003 16:43:27
Ну понятно, что я введу в таблицах дополнительных параметров продуктов идентификаторы продуктов для связи с таблицей продуктов.
Просто я хочу спросить у народа, является ли такая вот структура хорошей. Если нет, то как сделать красивее всего?