Нормализация таблиц

gore-egor
Дата: 09.08.2012 08:27:58
Здравствуйте!
извините за глупый вопрос но
есть ли смысл нормализовывать таблицы, если там мало записей?
с какого количества записей имеет смысл это делать?
Dima T
Дата: 09.08.2012 08:46:24
Глупый вопрос.
Читай теорию реляционных БД, там нет понятия много-мало. Нормализовывать надо всегда. Избыточность вводится при необходимости.
gore-egor
Дата: 09.08.2012 09:50:18
Dima T,
написано что при маленьких объемах
можно обойтись без нее потому что
она влияет только на скорость
и уменьшает объем данных
tanglir
Дата: 09.08.2012 10:11:43
gore-egor
она влияет только на скорость
и уменьшает объем данных
а про согласованность данных там ничего не написано?
gore-egor
Дата: 09.08.2012 11:24:27
tanglir
а про согласованность данных там ничего не написано?
в смысле целостности? написано
объясняю - проект для некрупной фирмы
записей за год <2000
каждый год новая таблица
gore-egor
Дата: 09.08.2012 11:51:17
за пк сидит один человек
комп один, сети нет
какая тут нужна согласованность?
tanglir
Дата: 09.08.2012 11:51:59
gore-egor
каждый год новая таблица
А потом понадобится "отчётик" с июля по июнь, и превед Знаем, проходили.
Dima T
Дата: 09.08.2012 12:09:05
gore-egor, можешь не соблюдать правила хранения данных, только знай что в один прекрасный день возникнет потребность доработки, которая при нормализованных данных происходит элементарно, а тебе придется ломать голову изобретая эвристические алгоритмы.

Что-то конкретное сложно ответить без конкретных примеров. Расписывай что не хочешь нормализовывать - узнаешь чем это чревато.
alextashk
Дата: 09.08.2012 14:37:26
и в догонку
надо приучать себя к общепринятым стандартам.
ВладимирМ
Дата: 09.08.2012 14:49:45
Компактность (занимает мало места) - это уже следствие. Цель нормализации - исключение дублирования информации. Это когда одно и то же вводится (хранится) несколько раз и в разных местах.

Например, если тебе надо указать ФИО сотрудника, то в не нормализованной базе ты каждый раз вынужден набивать ФИО заново. При этом есть риск ошибки.

Ну, скажем, в одном документе набрал "Иванов", а в другом "Иваноф". Теперь, если тебя попросят выполнить отчет по всем документам сотрудника "Иванов", то, естесственно, "Иваноф" в этот отчет не попадет. Т.е. отчет будет не корректен.

Если же база нормализована, то существует справочник, где "Иванов" вводится только один раз. Во всех остальных документах данная фамилия просто выбирается из этого справочника. Как следствие, невозможно "ошибиться" и написать другую фамилию. Фамилия не пишется, а выбирается.

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

=============================

Нормализованная база - быстро выполняет модификации, но относительно медленно формирует отчеты из-за необходимости дополнительных объединений. Однако поскольку в данном случае речь идет о нескольких тысячах записей в год, то вопрос скорости вообще не должен волновать. При таких мизерных объемах скорость будет достаточно высокой.