Original Message From: "Neco" <tempne***@r*****.ru>
To: "comp.soft.prog.prog (2961535)" <burlya***@u*****.ru>
Sent: Monday, April 17, 2006 6:24 PM
Subject: Проеткирование БД классической структуры
> Помогите, пожалуйста, спроектировать базу данных, в которой одно из
> полей содержит информацию о товарах. При этом товары могут быть очень
> различного типа. К примеру, один товар может быть просто "тапочки", а
> другой "авиабилет". Ест-но, что у первого атрибуты имеют не столь
> важное и многообразное значение, как у второго. Авиабилет ведь может
> быть на грузовой или пассажирский рейс. Пассажирский может быть разных
> классов. Плюс отправные и конечные точки, транзиты, если имеются,
> время прибытия и отбытия, номер терминала и может кое-что ещё, что я
> упустил. Конечно можно просто на месте тапочек взять и записать всю
> инфу, но тогда увеличивается вероятность опечатки оператора, падает
> скорость набивания базы и увеливается размер самой базы (одни и те же
> значения). Кроме того нет возможности выбрать подробности о каком-либо
> пункте. Типа как, если город у нас забит просто в тектовом формате, то
> я не могу парсить всю строку, вытаскивать оттуда название, искать в
> базе городов и давать, если есть, ссылку.
>
> А ведь могут быть не только авиарейсы - билеты в кинотеатры, тарифы
> сотовых операторов да вообще ВСЁ должно заноситься в эту базу по
> единому шаблону - если один раз что-то забили, то в будущем это надо
> только выбирать из комбо, но не перебивать.
>
> Я придумал один вариант (одно поле в товара - ссылка на структуру и
> ещё одно - значения этой структуры), но всё получилось очень запутанно
> - объяснять операторам, как этим пользоваться - вилы!
>
> Как это делается по-нормальному?!
>
>
А если хранить информацию в нескольких табличках?
Создать табличку с типами товаров (все товары можно разбить на типы: обувь,
билет, тариф оператора сотовой связи и т.д.
таблица 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