Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Теоретический вопрос организации БД   Найти похожие ветки 

 
YurikGL ©   (2004-09-30 10:48) [0]

Для примера рассмотрим склад автомобильной техники.
Пусть у нас есть легковые авто, грузовые, мотоциклы… У каждого из видов техники есть свои параметры, которых нет у других видов. Как лучше организовать склад? Отдельно заводить таблицу для каждого вида или идентифицировать по паре значений типа ID+Название таблицы? Примеры:
Первый случай
ТаблСкладЛегк
IDСкладЛегк
IDЛегк
Кол-во….

ТаблЛегк
IDЛегк
Параметры

ТаблСкладГруз
IDСкладГруз
IDГруз
Кол-во….

ТаблГруз
IDГруз
Параметры


Второй случай
ТаблСклад
IDСкладЛегк
IDМашина
IDТаблица, из который выбираем
Кол-во….

ТаблЛегк
IDЛегк
Параметры

ТаблГруз
IDГруз
Параметры


 
stud ©   (2004-09-30 10:53) [1]

про автосклад тут точно было обсуждение. попробуй поиском


 
Sergey13 ©   (2004-09-30 10:57) [2]

>У каждого из видов техники есть свои параметры
Какие различия в параметрах важны для склада?


 
YurikGL ©   (2004-09-30 11:02) [3]


> Sergey13 ©   (30.09.04 10:57) [2]

Ну например, если ввести еще и прицепы, то у них не будет объема двигателя :-)


 
Sergey13 ©   (2004-09-30 11:05) [4]

Ну и что? Как это скажется на складском хранении единицы товара?


 
1008 ©   (2004-09-30 11:06) [5]

Может так:

CarTbl
id
type
<
перечень общих параметров
>

LiteCarTbl
<
перечень уникальных параметров для легковых авт
>

HardCarTbl
<
перечень уникальных параметров для грузовых авт
>

<
другие необходимы таблицы
>


 
Digitman ©   (2004-09-30 11:07) [6]


> YurikGL


вопрос сводится к "правильной" организации номенклатора, на нем завязан весь складской учет, без него никуда

"правильность" номенклатора напрямую зависит от видов и интенсивности будущих запросов к нему на предмет идентификации номенкл.единицы по той или иной комбинации ее свойств (обратная задача поиска) либо выборка свойств по заранее известному идентификатору номенкл.единицы (прямая задача поиска)

пока ты не определишься, какие всевозможные запросы к номенклатору планируется выполнять в будущем, рассуждать о его структуре попросту бессмысленно


 
Sergey13 ©   (2004-09-30 11:20) [7]

Подходов может быть действительно несколько. Можно сделать здоровенный и подробнейший классификатор, можно маленький и обобщенный. Смотря чего хочется. Но если интересует действительно склад автомобилей, то надо еще помнить что это товар имеющий свои номера, которые нужны при продаже/покупке. Так что наверное придется приходовать каждую машину/агрегат отдельно. На каждую запись надо указывать конкретные признаки - цвет, номер двигателя/шасси/кузова, модель двигателя и т.д.

Насчет много/одна таблица. ИМХО лучше одна (даже с избытьчностью) с признаками, потому что разделить всегда проще, чем складывать из разных источников.


 
YurikGL ©   (2004-09-30 12:04) [8]


> Digitman ©   (30.09.04 11:07) [6]


>
> пока ты не определишься, какие всевозможные запросы к номенклатору
> планируется выполнять в будущем, рассуждать о его структуре
> попросту бессмысленно


Примерно так я и думал :-) Спасибо


 
Хома   (2004-09-30 13:18) [9]

Можно еще попробывать так:
сделать две таблицы, придумать индикатор вида техники. В первой таблицы создать поля по максимуму и там хранить все: и авто и прицепы. Просто неиспозованные поля оставлять пустыми. А в другой хранить индикаторы вида техники и их расшифровку. Помоему так база будет занимать минимум места. Хотя могу и ошибаться.


 
msguns   (2004-09-30 13:42) [10]

Еще замечаньице.
При проектировании стоит остановиться на концепции атомарности свойств. Например, в аспекте поиска или выборок.
Допустим, есть  свойства "Объем двигателя" и "Марка", которые важны для селективности при отображении или поиске (фильтрации), а есть "второстепенные" типа "Цвет", "Кличка шофера", "Кол-во дырок в тенте" и т.д.
Дальше просто: все свойства 1-го типа являются атомарными, т.е. должны найти свое отражение доменами в соотв.стуктурах таблиц (например, в общем справочнике транспортных средств), а св-ва 2-го типа не являются атомарными (т.е. не надо искать по кличке шофера или по "дырявости" кузова. Их мы впихиваем в одно единственное поле VarChar (если инф-ции может быть много, то мемо), куда узер может вводить разную по смыслу инфу новыми абзацами.
Таким образом часто решаются на первый взгляд неразрешимые проблемы.

PS Если даже и требуется искать по "второстепенным" свойствам, то опять же есть для этого средства и в SQL, и в паскале.


 
YurikGL ©   (2004-09-30 13:58) [11]


> msguns   (30.09.04 13:42) [10]

Поле типа примечание все равно почти всегда есть.


 
Vemer ©   (2004-09-30 17:03) [12]

обсуждение сущностей с произвольным кол-вом аттрибутов..
есть примеры решений..
http://www.sql.ru/forum/actualthread.aspx?tid=108876


 
Sergey_Masloff   (2004-09-30 21:20) [13]

Таблицы 2:
1) Иерархическая Класс->Марка->Модель->Модификация
2) Расшифровка (связана с веткой модификаций 1:1)

Учти что одна и та же марка-модель могут повторяться в разных ветках.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.035 c
1-1097755008
denis24
2004-10-14 15:56
2004.10.31
цвет курсора в гриде


1-1097824953
Dionnis
2004-10-15 11:22
2004.10.31
Закрыть все формы приложения


14-1097501623
NeyroSpace
2004-10-11 17:33
2004.10.31
Поставил CDRWin v5.01.000 потом удалил и теперь на CD-RW диске


8-1091536814
debuger
2004-08-03 16:40
2004.10.31
Масштабирование картинки


8-1091046811
Ricks
2004-07-29 00:33
2004.10.31
И все-таки Media Player :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский