|
Программирование >> Реализация целостности данных
Отношение Customers
Отношение 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
Puc. 2-4. Данные, которые кажутся избыточными, на самом деле не являются таков1ми Способность модели данных отвечать на поставленные вопросы определяется прежде всего полнотой хранящихся в ней данных (никакая база данных не может обеспечить пользователей той информацией, которой не содержит), и только во вторую очередь - ее структурой. Но вот легкость, с которой можно получить необходимые данные, во всех случаях определяется исключительно структурой базы. Принципиально важно, что собрать в единое целое информацию из отдельных атрибутов и отношений достаточно легко, а вот провести дальнейшую детализацию уже занесенной в базу информации очень сложно (рис. 2-5). Обратимся вновь к примеру из главы 1, где речь шла об именах адресатов - допустим, именно их список отображен на рис. 2-5. Полное имя из значений полей верхнего отношение чить легко: достаточно записать выражение: TitleOfCourtesy & , & Title FirstNane S LastName 4
-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),
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |