18
Глава 1. Немного истории
ставления информации по счетам. Однако, в отличие от жесткой струк
туры иерархической/сетевой моделей, реляционные таблицы можно
использовать поразному (даже так, как разработчики этой базы дан
ных и не представляли себе).
Может показаться излишним хранить одни и
те же данные в несколь
ких местах, но реляционная модель использует избыточность данных
очень четко. Например, если таблица
account
включает столбец для
уникального
идентификатора клиента, открывшего счет, это правиль
но, а если включены также его имя и фамилия, то это неправильно. На
пример, если клиент изменяет имя,
нужна уверенность, что его имя
хранится только в одном месте базы данных. В противном случае дан
ные могут быть изменены в одном месте, но не изменены в другом, что
приведет к их недостоверности. Правильное решение – хранить
эту ин
формацию в таблице
customer
. В другие таблицы следует включить
только
cust_id
. Также неправильно располагать в одном столбце не
сколько элементов данных,
например в столбец
name
помещать имя
и фамилию человека или в столбце
address
указывать улицу, город,
страну и почтовый индекс. Процесс улучшения структуры базы дан
ных с целью обеспечения хранения всех независимых элементов дан
ных только в одном месте (за исключением внешних ключей) называ
ют
нормализацией
(
normalization
).
Вернемся к четырем таблицам на рис. 1.3; на
первый взгляд может
быть непонятно, как использовать их для поиска транзакций Джорджа
Блейка по его текущему счету. Вопервых, находим уникальный иден
тификатор
Джорджа Блейка в таблице
customer
. Затем строку в таблице
account
, столбец
cust_id
которой содержит уникальный идентификатор
Джорджа, а столбец
product_cd
соответствует
строке таблицы
product
,
столбец
name
которой содержит значение
"Checking"
. Наконец, в таблице
transaction
находим строки, столбец
account_id
которых соответствует
уникальному
идентификатору из таблицы
account
. Возможно, все это
кажется сложным, но с помощью языка SQL может быть осуществлено
однойединственной командой, как вы вскоре увидите.
Достарыңызбен бөлісу: