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

1 ... 9 10 11 [ 12 ] 13 14 15 ... 124




Структура базы данных

ГЛАВА

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

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

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

111.-Д

-I...л цц-.

10773 ..mVa Mihw il Ua Dl[D N5nc* 10773 CiMDlo hfsr-ty

10916 Маг)£Т

10727 FulleIllJBW 10727 I Jller Andrew

10523 I

t(j Robert 0 Robert

LE-sHinfl Jane! PObdi l.H4p-<(i Jnni

1ПЕ-7 Г-чу* ripH rhie

ibJ-r :iijfTii v\i-n¥

1Q:?t:i.3u7MlirdWK-je

fii. ....

STiW ft VdSiliitti:; Аагцнщ ЧргкЬи 4n,jndn(,H( M

Е-гЧ 1- м;*1

(.uriiih.pi

&гти1 andfll.....

£bVFn Е1Б IiTIHUe

Arrorii: kwiiixiTiqjrn ipflturi Jffijjjtn Jttii.i

Cittlll?! klVljlaflpft .

ijuirti ,b>.A- Wiql.&r,}.ce?4

йгче

ayiutiAiq.fl4.....

.nct.chi dJ.nJra.JViKf: 44cwif:i?i:wdut

3irRJdhavEicftr*a in-wurH Hdl4LiniFTiHlMEi

.SpvqvEiu:

та . л

10 3D

Tjifhllt.

EEJt[1яt

.....:%

. JO.

PUc. 2-7. Набо iceii содержит избыточные данные



Как видите, в это пнце значение те/>а?е и Telephone Extension одинаковы в записях, в которых совпадает имя работника компании. Такая организация данных имеет несколько последствий.

Во-первых, каждый раз при создании новой записи вы должны вместе с именем сотрудника занести значения в поля HireDate и даже если уже вносили их раньше (разумеется, каждый раз вы рискуете ошибиться). Например, на основании данных на рис. 2-2, сможете ли вы определить, в каком году сотрудник по имени Стивен Букэнон (Steven Buchanan) был принят на работу - в 1989или 1998 г.?

Кроме того, такая структура данных не позволяет ввести дату найма и внутренний телефон сотрудника, до тех пор пока он не совершит хотя бы одной сделки. И наконец, если счета-фактуры за определенный год удаляются из базы данных и архивируются, то данные о телефоне и дате найма определенных сотрудников могут быть утеряны.

Рис. 2-2. Дублирование данных может привести в том числе и к их рассогласованию

Такие проблемы обычно называют аномалиями обновления. Они могут приводить к еше более серьезным последствиям, если избыточные данные хранятся не в одном, а одновременно в нескольких отношениях.

Рассмотрим пример на рис. 2-3 (как и прежде мы видим содержимое реальна ши,\ laojiiiu, а не результаты выполнения запросов). Если телефонный номер компании Around the Horn изменился, вам придется поменять его в наборе записей Customer и не забыть обновить телефонный номер в каждой записи набора Invoice, относящейся к этой компании.

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



1 ... 9 10 11 [ 12 ] 13 14 15 ... 124

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