Правильная организация таблиц

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Правильная организация таблиц

Сообщение Avtopic » 22.04.2006 (Сб) 15:45

Здравствуйте!
Прошу с терпением отнестись к длинному вопросу. :)

Допустим имеется таблица Т1. с полями п1, п2, п3,... п30.
п1 код изделия. В остальных перечислены атрибуты изделия
п2-п5 обязательные для каждого изделия.
остальные не обязательные
п6-п12 определяют размер вес и цвет
п13-п17 происхождение и т.п.
п18-п22 размещение на складе
п23-п30 дополнительные свойства.

Можно все это организовать в одной таблице. Но Можно Канешно, разделить на пять таблиц с полями
т1 п1-п5. т2 п1- п6-п12. т3 п1- п13-п17. т4 п1- п18-п22. т5 п1- п23-п30.

Я разделил, и вложил в это такой смысл:
Раз, не все поля могут заполняться у изделия, то думаю что, экономлю место.
т1 будет иметь все записи. таблицы т2-т5 только те в которых хотя бы один атрибут присутствует. т.е. т1 может иметь 1000000 записей а т5 0 потому что никогда не одно поле не было введено.
Минус всего этого то, что запроси удлинились и усложнились.

Вопрос такой: Во первых на сколько правильна такая логика.
и второе: допустим все поля в одной таблице, п1-п5 заполнены во всех записях, остальные пустые. Пожирают или нет пустые поля в записях то место, которое указано в типе поля.

Если все понятно передал, Спасибо за терпение и спасибо заранее!

Никитка Б
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 18.12.2005 (Вс) 9:26

Сообщение Никитка Б » 22.04.2006 (Сб) 20:26

Ответ на второй вопрос. В FoxPro незаполненные поля все равно занимают место.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 22.04.2006 (Сб) 21:18

Ну, второй вопрос, наверно, вообще, зря задал, так как вероятность того, что пустые поля не занимают место, 0!

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 26.04.2006 (Ср) 18:07

Логика в целом неверная. Размер базы данных чаще всего не самое критичное место. Самое критичное место было есть и будет - скорость работы БД. В случае одной таблицы скорость отработки запросов на больших объемах данных будет на порядок выше, чем в реализованном варианте.
То, что для одних константа, для других только переменная...

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 27.04.2006 (Чт) 14:09

Спасибо за ответ.

Как раз эта сторона меня интересовала.

Не имея в этом опыта, бегаю по кругу: то объединяю, то разделяю,
не хочу допустить на стадии проектировки базы грубую ошибку.
Пока база маленькая. Смотрю, и так работает и этак, только запросы усложнились.

Думаю чего зря место терять. Встречал множество разговоров про накладные расходы связанное с хранением баз данных.
Вот и подумал что накладные расходы в первую очередь это занимаемое место на сервере.
Поэтому остановился на варианте разделения таблиц.
И таки продолжил бы, если б не ваш совет.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 27.04.2006 (Чт) 19:04

Гугл -> "нормальная форма".

Третья ссылка очень даже ничего.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 27.04.2006 (Чт) 19:27

Все так. Только нужно всегда помнить, что нормализация БД не панацея и далеко не идеал. Всегда при проектировании БД нужно руководствоваться здравым смыслом и помнить о быстродействии. В моей практике неоднократно уже были моменты, когда через год-два работы системы приходилось делать денормализацию каких-то структур БД для повышения производительности.
То, что для одних константа, для других только переменная...

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 28.04.2006 (Пт) 9:21

Последний раз редактировалось Al Khamid 18.11.2007 (Вс) 1:03, всего редактировалось 1 раз.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 28.04.2006 (Пт) 15:18

“количество записей о деталях” зависит от сезона.
Т.е. работа сезонная. В разгар у всех существует оправдательная причина, не заполнять поля с 6-ого по 30-ое,
ссылаются на отсутствие времени и эти поля как обычно пустые. :)
А когда затишье, то все поля по инструкции должны заполнятся по возможности максимально.
В среднем 70% в таблице пустует.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 19.06.2006 (Пн) 8:41

Вначале я делал разделенную таблицу. Все было хорошо, пока не вырос объем базы данных. Стала тормозить очень и очень даже. Я сделал одну таблицу, хотя это потом уже труднее. Теперь она очень большая, но скорость работы - несопоставимо выросла.
Тебе решать!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList