Проеткирование БД классической структуры

Помогите, пожалуйста, спроектировать базу данных, в которой одно из
полей содержит информацию о товарах. При этом товары могут быть очень
различного типа. К примеру, один товар может быть просто "тапочки", а
другой "авиабилет". Ест-но, что у первого атрибуты имеют не столь
важное и многообразное значение, как у второго. Авиабилет ведь может
быть на грузовой или пассажирский рейс. Пассажирский может быть разных
классов. Плюс отправные и конечные точки, транзиты, если имеются,
время прибытия и отбытия, номер терминала и может кое-что ещё, что я
упустил. Конечно можно просто на месте тапочек взять и записать всю
инфу, но тогда увеличивается вероятность опечатки оператора, падает
скорость набивания базы и увеливается размер самой базы (одни и те же
значения). Кроме того нет возможности выбрать подробности о каком-либо
пункте. Типа как, если город у нас забит просто в тектовом формате, то
я не могу парсить всю строку, вытаскивать оттуда название, искать в
базе городов и давать, если есть, ссылку.
А ведь могут быть не только авиарейсы - билеты в кинотеатры, тарифы
сотовых операторов да вообще ВСЁ должно заноситься в эту базу по
единому шаблону - если один раз что-то забили, то в будущем это надо
только выбирать из комбо, но не перебивать.
Я придумал один вариант (одно поле в товара - ссылка на структуру и
ещё одно - значения этой структуры), но всё получилось очень запутанно
- объяснять операторам, как этим пользоваться - вилы!
Как это делается по-нормальному?!
Номер выпуска : 5253
Возраст листа : 939 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/538709
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
Original Message From: "Neco" <tempne***@r*****.ru>
To: "comp.soft.prog.prog (2961535)" <burlya***@u*****.ru>
Sent: Monday, April 17, 2006 6:24 PM
А если хранить информацию в нескольких табличках?
Создать табличку с типами товаров (все товары можно разбить на типы: обувь,
билет, тариф оператора сотовой связи и т.д.
таблица Types - список типов товаров
typeid - код типа
name - название типа
и при вводе нового товара указывать его тип.
Тип товара понятно будет храниться в таблице с товарами
Таблица Articles- список товаров и услуг
articleid - код
name - название товара
typeid - код типа товара
Все параметры, специфичные для данного типа хранить в отдельной табличке
таблица Parameters - список параметров
parameterid - код параметра
name - наименование параметра
typeid - код типа товара, к которому этот параметр принадлежит
typevalue - содержит информацию о типе значения (строка, число,
memo-поле, blob и т.д.). Можно хранить коды типов (например, 1 - строка, 2 -
число и т.д.), можно строковые значения. ("string", "integer" и т.д.)
Ну и все сведения о товаре хранить в наборе таблиц, хранящих каждая свой тип
переменной:
Блок таблиц InfoArticle_X (где Х - значения из поля paarmeters.typevalue,
если там хранится код типа, то лучше и ьаблички называть через цифры, если
строка, то строковые названия, чтобы понятно было, что величину параметра со
значением поля typevalue=1 надо искать в таблице InfoArticle_1 или параметр
со значением поля typevalue="string" надо искать в таблице
InfoArticle_integer).
Структура этого блока таблиц такова:
articleid - код товара
parameterid - код параметра
value - значение параметра
С уважением, Бурляев Вячеслав
Номер выпуска : 5261
Возраст листа : 940 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/539004
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru