|
Программирование >> Реализация целостности данных
Структура базы данных ГЛАВА В этой главе обсуждается начальная стадии рования моделей реляционных баз данных - создание структуры отношений. На этой стадии проектирования главное - добиться, чтобы модель максимально корректно и полно описывала предметную область, для которой создается. Кроме того, нужно минимизировать избыточность данных и устранить связанные с этим проблемы. Избыточность данных есть зло не только потому, что приводит к бесполезному расходованию ресурсов, она еще и осложняет жизнь тем, кто работает с базой. в качестве примера набор запи- сей, изображенный на рис. 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, относящейся к этой компании. В этом примере данных очень мало, и их аккуратное обновление представляет собой невыполнимую задачу. Проблема в том, чтобы не забыть сделать все, что необходимо. И даже если вы лично никогда ничего не забываете, уверены ли вы в том, что другой программист, который будет поддерживать вашу программу через полгода, хорошо осведомлен об этой избыточности данных и о том, как с ней правильно обращаться? Намного лучше избежать избыточности данных и всех связанных с ней проблем.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |