Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript

Печать

в использовании и независимая таблица, удовлетворяющая требованиям как первой, так и второй нормальной формы. Попутно мы справились с сокращением информации до уровня тех данных, которые имеют непосредственное отношение к книгам с определенными названиями. Эта таблица может также включать год издания, количество страниц, количество переизданий и т. д., поскольку все эти данные имеют тесную связь друг с другом. Единственное правило, которого следует придерживаться, гласит:сюда нельзя помещать графы, которые могут содержать несколько значений для одной книги, поскольку тогда нам придется указывать одну и ту же книгу в нескольких строках, нарушая таким образом правила второй нормальной формы. К примеру, к нарушениям на этом этапе нормализации может привести восстановление столбца авторов.

Но изучая извлеченные графы, относящиеся к покупателям, которые теперь показаны в табл. 9.5, можно заметить, что эта таблица все же требует дополнительной нормализации, поскольку сведения о покупателе Darren Ryder по-прежнему продублированы. Следует также признать, что правило 2 первой нормальной формы (все графы должны содержать только одно значение) здесь не соблюдается, поскольку адресные данные нужно разбить на отдельные графы для адреса — Address, города — City, штата — State и почтового индекса — Zip.

Таблица 9.5. Сведения о покупателях из табл. 9.2

ISBN

Cust. Name (Имя покупателя)

Cust. Address (Адрес покупателя)

Purch. Date (Дата покупки)

0596101015

Emma Brown

1565 Rainbow Road, Los Angeles, CA 90014

Mar 032009

0596527403

Darren Ryder

4758 Emily Drive, Richmond, VA 23219

Dec 192008

0596005436

Earl B. Thurston

862 Gregory Lane, Frankfort, KY 40601

Jun 222009

0596101015

Darren Ryder

4758 Emily Drive, Richmond, VA 23219

Dec 192008

0596006815

David Miller

3647 Cedar Lane, Waltham, MA 02154

Jan 162009

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

В табл. 9.6 показан результат нормализации таблицы Customers в соответствии с правилами первой и второй нормальных форм. Теперь у каждого покупателя есть уникальный номер покупателя, который называется CustNo, используется в качестве первичного ключа и который, скорее всего, был создан с использованием свойства авто приращения — AUT0__I NCREMENT. Все составляющие адресов были также распределены по разным столбцам, для того чтобы упростить их поиск и обновление.