Шаг 2: уточнение В главе 1 была представлена концепция
нормализации , что является
процессом обеспечения отсутствия в БД дублирующихся (кроме внеш
них ключей) или составных столбцов. При повторном анализе столб
цов таблицы возникают следующие соображения:
• Столбец
name
на самом деле является составным объектом, вклю
чающим имя и фамилию.
• Поскольку несколько человек могут иметь одинаковые имя, пол,
дату рождения и т. д., в таблице
person
нет столбцов, гарантирую
щих уникальность.
• Столбец
address
– тоже составной объект, включающий улицу, го
род, штат/область, страну и почтовый индекс.
• Столбец
favorite_foods
– это список, содержащий 0, 1 или более не
зависимых элементов. Было бы лучше вынести эти данные в отдель
ную таблицу, включающую внешний ключ к таблице
person
, чтобы
обозначить человека, к которому приписано конкретное блюдо.
В табл. 2.7 можно увидеть нормализованный вариант таблицы
person
после учета всех этих замечаний.
Теперь, когда у таблицы
person
есть первичный ключ (
person_id
), га
рантирующий уникальность, следующим шагом будет построение таб
лицы
favorite_food
, включающей внешний ключ к таблице
person
. Ре
зультат показан в табл. 2.8.
Столбцы
person_id
и
food
(блюдо) образуют первичный ключ таблицы
favorite_food
. Столбец person_id
также является внешним ключом
к таблице
person
.
Столбец Тип Допустимые значения Name
Varchar(40)
Gender
Char(1)
M
,
F
Birth_date
Date
Address
Varchar(100)
Favorite_foods
Varchar(200)