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

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


Отношение Customers

AL-I.I

Alfreds Fulterkisle

030-0074321

Ana Trujillo Emparedadcis у helados

5) 555-4729

Antonio Moreno Taquerfa

1.15), 555-jyj2

AROLfT

Around 1he Horn

!(171J 555-778B

BB?GE

Serglunds snabbkop

!1Ш1-12 34 E5

Отношение Invoices

rjSJ Alfreds Futlfrkists 10952 Alfreds Futferkisle 1C625 Ana Trujillo Emparedados у helados 1C625AraTrujillo Emparedados у helados l0625:Ana Jrijjillo Emparedados у halados 1QB5B:Antonio Moreno Taquerla IDSSBlAround the Horn 105£8:Around1he Horn IDSSBAround file Horn 1D55B Around the Horn 1D572 Bergiunds snabbkop 10875 Bergiuntts snabbkop 10875 Bergiunds snabbkop 1DB75 Bergiunds snabbkop

0ЭС-Ш74321 030-0074321 (5) 555-4729 (5) 555-4729 : (5) 555-4729 ; (5) 555-3932 ] (171) 555-7788 (171) 555-7788 (171) 5S5-7788 (171) 555-7788 0921-12 34 65 10921-12 34 К 10921-12 34 55 0921-12 34 B5

Рис. 2-3 ованные данные могут присутствовать в нескольких отношениях

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

Рассмотрим рис. 2-4. На первый взгляд может показаться, что ат-рибут ?/г/срв отношениях содержат избыточные данные. На самом же деле, в каждом из отношений они представляют разные по смыслу величины.

Атрибут UnitPrice в отношение отражает текущую цену

продажи товара. Атрибут UnitPrice в отношении Orders - это цена, по которой товар продан. Для товара Jofu. например, в Orafera существу -ет запись, где значение а в отношении Products

-запись, где UnitPrice товар сей-

час по цене $23,25, никак не может изменить то, что некоторое время назад он продавался по $18,60. Оба атрибута определены в одном и том же домене, но являются различными по смыслу величинами.



Отношение Products

11 QuesoCabrales S21 00

UiTofij J ИЗ 25

22 Gustafs Knackehrtd J21 00

4l Jacks New England Clam Chowder 19 65

42 Singaporean Hokkien Fried Mee (14 DO

SI Manjimup Dried Apples (53.00

57; Ravioli Angelo (19.50

65- Louisiana Fiery Hot Pepper Sauce ; (21 05

66 Louisiana Hot Spiced Okra (17.00

72 Mozrareiia di GioYanni jiim

Отношение Orders

1Q24B:SmgaporeanHokkien Fried Мее

1Q

04-Aug-94

1Q248:QueB0 Cabrales ..................

(14Ю

04-Aug.;94

liriRMfv--arelliidi Giovanni

(34 во (I8 60

04-Aug-94

.hV.... ......---h...- i. .,

05-Aug-94

10249 Manjimuied Apples

(42.40

D5-Aug-94

l 0250: Manjimup Dried Apples

$42.40

De-Aug-94

10250- Louisiana F>ery Hot Pepper Sauce

16 ;

08-Aug-34

10250; Jacks New England Clam Chowder

(J.70

Oe-Aug-34

2 J0251 Ravioli Angelo...............

$15.601

De-Aug-34

10251 Louisiana FierjHot Peppersauce

$16.80

. 20!

06-Aug-94

10251 Guslafs Kneckebrod

(10.00

□8 Aug-94

Puc. 2-4. Данные, которые кажутся избыточными, на самом деле не являются таков1ми

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

Обратимся вновь к примеру из главы 1, где речь шла об именах адресатов - допустим, именно их список отображен на рис. 2-5. Полное имя из значений полей верхнего отношение чить легко: достаточно записать выражение:

TitleOfCourtesy &

, & Title

FirstNane S

LastName 4



1 Ms.

:Nancy

Davolio

Sales Representative

2 Dr.

: Andrew

iFjIlar

Vice President, Sales

[jinei

Leverltrig

Sales Representative

4 Mrs.

: Margacat

:Peacock

Sales Representative

5Гмг.

: St even

Buchanan

Sales Manager

-tfasNsitifi

1 Ms Oavollc, Sales Representative 7\0r. Andrew Fuller esrcient. Sales 3 Ms everling, Sales Representative Л Mrs Peacock Sales Representative 5 ven Buchanan, Sales Manager

Гас.. Полное имя адресатов представлено в виде отдельных атрибутов - в верхнем отношении, и как один атрибут - в нижнем

А вот для того, чтоб лить фамилию из пол Nameнижнего отношения, нужно обработать строковые данные:

Function stnarae (FullName as String) as String ( Diin lastname as String убрать титул

lastname - Left(FLillNaiiie, InStr(FullName, ,

убрать вежливое обращение

lastname - RighT(lastname, Leri(lastname) -

lnStr(lastnaine, ))

убрать имя

lastname = Right(lastname, Len(lastname] InStr(lastname: ))

End Function

Уязвимое место такого подхода - его чувствительность к изменениям содержимого поля FullName; например, естественно ожидать. что для имени Bill Rae Jones в качестве фамилии должно возврашать-ся значение Ra es: но вы, вероятно, получите вместо этого строку

Jones. В результате список, составленный в виде набора значений

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

избегать дублирования одной и той же информации во множестве

полей (рис. 2-6 и 2-7),



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

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