Программирование >>  Реализация баз данных 

1 ... 28 29 30 [ 31 ] 32 33 34 ... 162


Таблица Employees

Last Name

first

THIelD

1067

Fort

Garth

2093

Carrnaise

2478

Hoeing

Helge

1224

Msndlen

David

1936

Schare

Gary

2Q66

Thurman

Paula

2045

Mendten

David

Phc. 3-3. Нормализованная таблица с уникальным идентификатором

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

будут потеряны.

Таблица Books

РС9Э99

f>SZ091

SU1111

Net Etkjurtte

лэг ttw Enemy?

Cookino wtth Computers;

Algodata Infosystems etey, New Moon Books

Algodata

Surreptitious Balance Sheets S IntosystemSi

Boston

Serkelev

OA. 1 .USA

Рис. 3-4. Таблица со сведениями о книгах и издательствах Таблица Books

EkjokID I

РСЗЭЭ9

Net Etiquette

1369

PS2091

Is Anger the Enemy?

Bumi

Cooking with Computers: Surreptitious Balance Sheets

Таблица Publishers

ВооШ

publisher --i::-

ШШ?!

РС9Э9Э

Algodata tnfosystems

Berkeley

PS2091

iNew Moon Books

Boston

BUI 111

Algodata Infosystems

Berkeley

LISA

Рис. 3-5. Нормализованная структура базы данн1х, в которой заглавия книг и сведения об издательствах хранятся в разных таблицах



В нормализованной базе данных сведения о книгах и издательствах будут храниться по крайней мере в двух таблицах: в одной сведения о книгах, а в другой - об издательствах (рис. 3-5).

Теперь сведения об издательстве необходимо ввести только один раз, после чего они будут связаны дои книгой. Если сведения об издательстве изменятся, то 1:о(лис1-ствуюшие коррективы достаточно внести только в одном месте. Эти сведения останутся в базе даже в том случае, если в ней не останется ни одной книги данного издательства. В таблицах следуем столбцов, допускающих пустые значения

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

чения и в нескольких строках эти столбцы содержат пустые значения, следует рассмотреть возможность выделения таких столбцов в отдельную связанную с главной таблицей. Храня данные в двух отдельных таблицах, вы упростите структуру главной таблицы, не исключая возможности при необходимости сохранять и пустые значения. В таблице не должно быть повторяющихся значений или столбцов

В таблице не должно быть списков значений для некоторой единицы информации. Допустим, требуется учитывать названия и авторов книг. Хотя большинство книг написаны одним автором, их может быть два и более. Если для хранения имени автора в таблице предназначен только один столбец, то возникает проблема. Можно, конечно, хранить имена обоих авторов в одном столбце, но при этом затруднится списка авторов по

отдельности. Другое решение - изменить структуру таблицы и добавить еще один столбец для хранения имени второго автора. Но это поможет, только если авторов не более

двух. Если же их три, придется добавлять третий столбец.

На рис. 3-6 показаны эти два решения для книг с несколькими авторами. Таблица Books

РС9Э99

Net Etiquette

Chariene Locksley

PS2091

Is Anger the Enemy?

Ann Ringer, Albert Ringer

BUI 111

Cooking with Computers:

Surreptitious Balance Sheets

Michael OLeaiy, Stearns MacFeather

В одном поле строки можно указать несколько авторов

РС9999 ,

PS2091

IBU1111

Net Etiquette

Is Anger the Enemy?,

Author 1

ChBrtene Locks ley

Cooking with Computers: Surreptitious Balance Sheets

Ann Ringer Michael OLeary

AitthBf I

NULL

Albert Ringer j NULL

null

Stearns T NULL MacFeather

Для каждого автора предназначен отдельный столбец, для одной книги можно указать до трех авторов

Рнс, 3-6. Две возможн1е структур ицы Books



Если необходимо хранить список значений в одном или создать несколько

столбцов для хранения одной единицы информации (Authorl, Author2 и т.д.), следует предусмотреть размещение дублирующихся данных в другой таб.иице, связанной с главной. Для таблицы Books можно создать дополнительную главную ицу, где хранить сведения об авторах, а затем - третью таблицу, в которой будут сопоставлены книг с их авторами. Последняя таблица обеспечивает хранение повторяюип1хся значений (рис. 3-7). Такая структура позволяет описать книгу с любым числом авторов без изменения определения таблицы и не допускает наличия пустых мест при сохранении информации о книгах с одним автором.

Таблица Books

РСЭ9Э9 ,

Net Etiquette

PS2091

Is Anger the Enemy?

BU1111

Cooking wit uters: Surreptitious Balance Sheets

Таблица Authors

.iaSName .

rtislNai-rie ::

1786

Locksley

Charlene

2035

Ringer

3567

Ringer

23Э4

OLeary

Michael

9391

Mac Feather

Stearns

Таблица BookAuthor

РС9Э99

1786

PS2091

2035

PS2091

3567

BU1111

2394

BU1111

9391

Рис. 3-7. Сведения о книгах и их авторах хранятся в трех таблицах

Связи между сущностями

В реляционных базах данных связи позволяют избежать избыточности данных. Связь работает путем сопоставления данных ключевых столбцов - обычно это столбцы с одинаковыми именами из двух различных таблиц. В большинстве случаев связь сопоставляет первичный ключ одной таблицы (уникальный идентификатор) с элементом внешнего другой таблицы. Первичные ключи и внешние ключи подробно обсуждаются в главе 5.

Существует три типа связей между таблицами: один к ко многим и

ко многим . Тип связи зависит от как определены столбцы.



1 ... 28 29 30 [ 31 ] 32 33 34 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика