Рамиля Рамисовна Латыпова

Базы данных. Курс лекций. Учебное пособие


Скачать книгу

таблице не должно быть повторяющихся записей;

      2. Каждое поле таблицы должно быть неделимым (атомарным), т. е. на пересечении строки и столбца должен быть атомарный объект;

      3. В таблице должны отсутствовать повторяющиеся группы полей.

      Рассмотрим пример нормализации таблицы «Продажи», в которой содержится 21 поле (табл. 3).

      Таблица 3

      Продажи

      Номер

      Поле

      Тип поля

      1

      Фамилия

      Текст

      2

      Имя

      Текст

      3

      Отчество

      Текст

      4

      Телефон

      Текст

      5

      Факс

      Текст

      6

      Индекс

      Текст

      7

      Страна

      Текст

      8

      Город

      Текст

      9

      Адрес

      Текст

      10

      Название предприятия

      Текст

      11

      Руководитель предприятия

      Текст

      12

      Web-сайт предприятия

      Текст

      13

      E-mail предприятия

      Текст

      14

      Код товара

      Числовой

      15

      Дата заказа

      Дата/время

      16

      Заказано

      Числовой

      17

      Дата продажи

      Дата/время

      18

      Продано

      Числовой

      19

      Цена

      Денежный

      20

      Категория товара

      Числовой

      21

      Наименование товара

      Текстовый

      В табл. 3 каждое поле неделимое, и никакое из полей не является уникальным.

      Таблица с такой структурой может иметь повторяющиеся группы полей, в которых будут записаны данные об одном и том же покупателе (поля с 1-го по 13-е). Чтобы привести таблицу к 1НФ, она разбивается на две таблицы: «Клиенты» и «Заказы», находящиеся в отношении «один-ко-многим».

      Поскольку ни одно из полей исходной таблицы не было уникальным, здесь в качестве первичного ключа таблицы «Клиенты» лучше ввести новое поле – «Код клиента». Это поле будет внешним ключом в таблице «Заказы» (рис. 11).

      

      Рис. 11. Разбиение со связью «один-ко-многим»

      В таблице «Заказы» ни одно из полей не является уникальным, поэтому в качестве первичного ключа можно добавить поле «Код заказа» или использовать комбинацию трех полей – «Код клиента», «Код заказа» и «Дата заказа» – в качестве составного ключа (если один клиент делает один заказ в день). Рассмотрим второй вариант – таблицу с составным первичным ключом. Такая таблица должна удовлетворять требованиям 2-й нормальной формы (2НФ).

      Таблица находится во 2НФ, если удовлетворены два условия:

      1. Таблица удовлетворяет условиям 1НФ;

      2. Любое неключевое поле однозначно