"Проектирование реляционных баз данных." - читать интересную книгу автора (Джен Л. Харрингтон)Точный вид таблиц, составляющих словарь данных, в определенной мере зависит от применяемой СУБД. В этом разделе приводится типичный пример организации словаря данных в одной из СУБД (Sybase SQL Anywhere).
Основой словаря данных фактически является таблица, в которой документируются все таблицы словаря (таблица syscatalog, первые несколько строк которой представлены на рис. 3.4). Судя по именам таблиц словаря данных, можно предположить, что существуют таблицы для хранения данных о базовых таблицах, их столбцах, индексах и внешних ключах. creator tname dbspace tabletype ncols primary_key SYS SYSTABLE SYSTEM TABLE 12 Y SYS SYSCOLUMN SYSTEM TABLE 14 Y SYS SYSINDEX SYSTEM TABLE 8 Y SYS SYSIXCOL SYSTEM TABLE 5 Y SYS SYSFOREIGNKEY SYSTEM TABLE 8 Y SYS SYSFKCOL SYSTEM TABLE 4 Y SYS SYSFILE SYSTEM TABLE 3 Y SYS SYSDOMAIN SYSTEM TABLE 4 Y SYS SYSUSERPERM SYSTEM TABLE 10 Y SYS SYSTABLEPERM SYSTEM TABLE 11 Y SYS SYSCOLPERM SYSTEM TABLE 6 Y Рис. З.4. Фрагмент таблицы syscatalog В таблице syscatalog описаны столбцы каждой таблицы (в том числе таблиц словаря данных). Так, на рис. 3.5 показан фрагмент таблицы syscolumns, в которой описана таблица товарных пунктов Lasers Only. creator Cname Tname Coltype Nulls Lenth InPrimaryKey Colno DBA DBA DBA DBA DBA item_numb title distributor_numb release_date retail_price items items items items items integer varchar integer date numeric -<-<-<:-< z 4 60 4 6 6 Y N N N N 1 2 3 4 5 Рис. З.5. Строки, выбранные и: i таблицы syscok jmns He забывайте о том, что структура таблиц словаря данных аналогична структуре базовых таблиц, и таблицы словаря должны соответствовать тем же правилам, чТ и базовые таблицы. В них должны присутствовать уникальные первичные ключи 6е null-значений, и среди них должна обеспечиваться ссылочная целостность. Глава 3 • Реляционная модель данных 47 дополнительная литература Если вы хотите проследить историю возникновения теории реляционных баз данных Кодда, обратитесь к предлагаемой литературе: Codd, E. F. "A Relational Model of Data for Large Shared Databanks." Communications of the ACM, Vol. 13, No. 6, June, 1970. Codd, E. F. "Extending the Relational Model to Capture More Meaning." Transactions on Database Systems, Vol. 4, No. 4, December, 1979. Codd, E. F. "Is Your DBMS Really Relational?" Computenvorld, October 14, 1985:ID/UD/9. Codd, E. F. The Relational Data Model, Version 2. Addison-Wesley, 1989. w W' I ж-' m • . 4 Нормализация При наличии любой группы сущностей и атрибутов имеется большое число способов их объединения в отношения. В этой главе вводится понятие процесса нормализации (normalization), посредством которого создаются отношения, где отсутствуют недостатки плохой реляционной структуры. Для достижения нормализации существуют, по меньшей мере, два способа. Первый — начать работу с ER-диаграммы. Если диаграмма построена правильно, можно с помощью нескольких простых правил преобразовать ее в отношения, избежав при этом большинства проблем, свойственных реляционному проектированию. Недостатком такого подхода является возможная трудность определения правильности структуры. Второй подход — воспользоваться для создания отношений теоретическими концепциями построения корректного проекта. Это несколько сложнее, чем работа с ER-диаграммой, но часто приводит к разработке лучшей структуры. На практике может оказаться полезным использование комбинации обоих подходов. Сначала нужно создать ER-диаграмму и воспользоваться ею для проектирования отношений. Затем следует проверить эти отношения на соответствие теоретическим правилам построения корректного проекта. Преобразование ER-диаграммы в отношения ER-диаграмму, все взаимоотношения "многие-ко-многим" в которой превращены во взаимоотношения "один-ко-многим" путем ввода составных сущностей, можно преобразовать непосредственно во множество отношений. Для этого: ¦ Создайте по одной таблице для каждой сущности. ¦ Для каждой сущности, которая находится на стороне "один" одного или нескольких взаимоотношений и не присутствует на стороне "многие какого бы то ни было взаимоотношения, создайте одностолбцовый первичный ключ, используя произвольный уникальный номер, если, конечно, нет естественного первичного ключа. ¦ Для каждой сущности, находящейся на стороне "многие" одного или нескольких взаимоотношений, укажите первичный ключ каждой из родительских сущностей (тех, что находятся на стороне один взаимоотношений) в таблице в качестве внешнего ключа. Глава 4 • Нормализация 49 ¦ Если у сущности на стороне "многие" одного или нескольких взаимоотношений имеется естественный первичный ключ (например, номер заказа или счета-фактуры), используйте в качестве первичного ключа один этот столбец. В противном случае объедините первичный ключ родительской таблицы (таблиц) с любым другим столбцом (столбцами), необходимым для обеспечения уникальности информации, сформировав первичный ключ таблицы. Следуя этим рекомендациям, построим таблицы для базы данных Lasers Only: customer (customer_numb, customer_first_name, customer_last„name, |
|
|