· запрещает повторяющиеся столбцы (содержащие одинаковую по смыслу информацию)
· запрещает множественные столбцы (содержащие значения типа списка и т.п.)
· требует определить первичный ключ для таблицы, то есть тот столбец или комбинацию столбцов, которые однозначно определяют каждую строку
Пример 1: поле ФИО можно разделить на три отдельных поля Фамилия, Имя, Отчество.
Пример 2: нельзя использовать поле Адрес, нужно использовать набор полей: Улица, Номер дома, Квартира, Город.
Для чего это делается? Предположим в БД существует поле Адрес, тогда будет очень трудно найти всех людей, живущих на определенной улице. Придется писать специальную конструкцию на языке запросов для анализа каждой записи, что чрезвычайно замедлит поиск. При разделении поля просто в одно нажатие включается фильтр по полю и получаются желаемые записи.
Повторяющимися являются поля, содержащие одинаковые по смыслу значения.
Пример 3: Пусть имеется некое предприятие, продающее крупы. Для предприятия была создана база данных содержащая, помимо данных о накладной и клиенте, еще и такие поля как Сахар, Соль, Мука, Гречка, Рис, Пшено, в которых хранится количество отпущенного товара. Каждое поле базы данных вне зависимости от того содержит оно информацию или нет, все равно занимает место в памяти, то есть размер, занимаемый пустой записью и полностью заполненной записью одинаков. Предположим, что дела у компании пошли хорошо и она смогла расшириться и стала продавать еще и молокопродукты. Если оставить структуру не тронутой, то в таблицу необходимо добавить новые поля, причем уже имеющиеся записи будут изменены. А если далее число продуктов, продаваемых фирмой превысит хотя бы сотню, то будет ли удобно ориентироваться в такой таблице? В подобной ситуации следует заметить, что все приведенные поля суть наименование товара и хранят они лишь количество товара, поэтому достаточно использовать всего два поля: Товар, Количество.