|
|
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые форумчане! Очень нужна Ваша помощь в построении БД для учета компьютерной техники понятии принципов построения подобных БД. Сразу могу сказать, что я новичок в этом деле и ни одной серьезной БД в своей практике не делал. Задумка следующая: БД должна быть составлена так, чтоб можно было отбирать технику по её техническим характеристикам (например, нужно выбрать мониторы с диагональю 22дюйма); каждому типу техники должны соответствовать свой производитель, набор моделей и набор технических характеристик. Должен быть справочник техники и основная таблица, в которой будет собираться техника, находящаяся на балансе предприятия. Справочник техники должен содержать в себе собранные устройства, из которых в дальнейшем пользователь сможет выбирать необходимые и ставить на баланс предприятия. Таким образом данный справочник техники должен выступать в роли коллекций реально существующей техники, дабы пользователь, слабо понимающий в технике не смог наклацать принтер от производителя Seagate, модели LBP3010 с тех.характеристикой "углы обзора 178град". На данный момент у меня есть вариант БД, в котором для каждого типа техники есть своя таблица, содержащая в себе примерно следующее: id, идентификатор производителя, идентификатор модели и набор полей с тех.характеристиками. Конечно, такой вариант модели БД можно использовать, но расширять её, добавляя новые типы техники, новые характеристики и тд будет очень неудобно. Помогите пожалуйста собрать правильную модель БД. Спасибо всем, кто отзовется! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 20:49 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
rean1matorНа данный момент у меня есть вариант БД, в котором для каждого типа техники есть своя таблица, содержащая в себе примерно следующее: id, идентификатор производителя, идентификатор модели и набор полей с тех.характеристиками. можно попробовать эти все таблицы унаследовать от одной таблицы с общими полями (id, название модели, дата добавления и т.п.) и добавить поле с типом техники. будет сквозная нумерация (удобно ссылаться из других таблиц, хотя это можно и без наследования сделать), поиск по общим полям во всех таблицах, новые типы техники/характеристики добавляются относительно несложно. в приложении правда все равно где-то придется прописать сопоставление типов техники и названий дочерних таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 21:21 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
Alexius можно попробовать эти все таблицы унаследовать от одной таблицы с общими полями (id, название модели, дата добавления и т.п.) и добавить поле с типом техники. будет сквозная нумерация (удобно ссылаться из других таблиц, хотя это можно и без наследования сделать), поиск по общим полям во всех таблицах, новые типы техники/характеристики добавляются относительно несложно. в приложении правда все равно где-то придется прописать сопоставление типов техники и названий дочерних таблиц. В приложении (оно будет web-приложением на php и тд) в формах ввода буду стоять выпадающие списки (производители, модели и тд). Выпадающие списки будут формироваться выборкой, например:нужных производителе получеем из таблицы, связывающей производителей с типами техники. Т.е. селектаем всех производителей, у которых тип техники равен нужному нам типу. На сколько я понимаю, в предложенном Вами решении так и останется каждому типу техники своя таблица, только общие для всех поля будут вынесены в отдельную таблицу-родителя? А про сквозную нумерацию и поиск по общим полям я что-то не очень понял. Не могли бы Вы описать немного подробнее? (Простите, если переспрашиваю элементарные вещи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 21:48 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
rean1mator, мастер-таблица плюс eav с типозависимыми характертстиками. если объемы в терабайты или слабая техника, то гибридный eav, иначе комплексный поиск с ORами загнется. ну и метаданные по типам техники на eav. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 01:00 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
Я Вас очень слабо понимаю. Где-то в первом посте я писал, что я начинающий в базах данных. Смог наковыряять про eav, но суть его пока не понял. Объемы данных у меня и гигабайтов не будет. Дело тут не в объеме, а правильной и удобной в работе модели БД. Буду ещё рассматривать eav, но на первых парах оно мне кажется очень сложным и закрученным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 10:10 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
rean1mator, все данные будут в своих таблицах, мастер таблица в данном случае будет пустой, но она как обертка для всех таблиц. т.е. например такой запрос, где model_name общее поле select * from parent_table where model_name = '...' на самом деле выполнится во всех дочерних таблицах и вернет скомбинированный результат. про сквозную нумерацию имеется ввиду что все дочерние таблицы будут использовать один общий сиквенс для id. для небольшого числа (до нескольких десятков) типов техники такой подход вполне оправдан и имхо намного лучше будет чем eav. да даже хранение в json/hstore атрибутов наверное лучше будет чем eav. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 10:37 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
rean1mator, Про EAV читайте. Структура например такая: Категория (принтер; монитор) Производитель (Xerox; LG) Параметр (тип_принтера, цветной?; диагональ, разрешение) -> Категория Модель -> Категория -> Производитель Значение -- вот эта таблица по EAV -> Модель -> Параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 19:09 |
|
||
|
Учет техники
|
|||
|---|---|---|---|
|
#18+
rean1matorСмог наковыряять про eav, но суть его пока не понял.По сути он зло. Контроль целостности, специфичное индексирование, оптимизация структуры хранения в зависимости от характера атрибута делаются ручками, но один раз на все типы атрибутов. Переназывать его по типу реализации json или xml - что в лоб, что по лбу. Если набор типов объектов и их атрибутов достаточно статичны, это одно. Но для динамически изменяемых через интерфейс пользователя атрибутов - альтернативы нет. Поэтому EAV в том или ином виде прижился в различных универсальных системах, особенно, когда они еще и кросссубдшные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:17 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38903095&tid=1998122]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
202ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 517ms |

| 0 / 0 |
