Программирование >>  Исключение дубликатов строк 

1 ... 12 13 14 [ 15 ] 16 17 18 ... 152


(Сотрудники отдела). Вся информация, касающаяся сотрудников, находится в таблице Employees, а вся информация об отделах - в таблице Departments. Таблица Department Employees является связывающей таблицей, которая позволяет ставить в соответствие указанному сотруднику любое количество отделов. Эти таблицы показаны на рис. 2.19.

На последнем совещании было решено сформировать новый отдел исследований и разработок. Теперь вы хотите удостовериться, что добавили новый отдел в таблицу Departments и сможете назначать персонал этому отделу в таблице Department Employees. Именно здесь начинают действовать характеристики типа участия. Установите для таблицы Departments тип участия обязательный, а для Department Employees - необязательный. Определяя такие настройки, можно гарантировать, что отдел уже будет существовать в таблице Departments, пре>еде чем вы сможете назначить каких-либо сотрудников для этого отдела в таблице Department Employees.

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

Эта вторая черточка указывает

обязательное участие.

Employees



Department Employees

Department ID Employee ID

Departments


Этот кружок указывает необязательное участие.

Рис. 2.20

Представление в виде диаграммы типа участия для таблиц Departments и Department Employees

UcTQHOfiKQ степени учостип

Теперь необходимо вычислить, до какой степени каждая таблица будет участвовать в связи. Это выполняется путем определения минимального и максимального количества записей в одной таблице, которые могут быть сопоставлены одной записи в другой таблице. Этот процесс называется идентификацией степени участия для таблицы. Степени участия представляется двумя числами, разделенными запятыми и заключенными в скобки. Первое число указывает минимально возможное количество зависимых записей, а второе - максимальное количество зависимых записей.



Например, степень участия (1,12) указывает, что минимальное количество записей, которое может быть поставлено в соответствие, равно единице, а максимальное двенадцати.

Выбранная степень участия для различных таблиц базы данных во многом зависит от того, как в организации просматриваются и используются данные. Предположим, что вы - регистрируюпдий агент агентства талантов и что в вашей базе данных две таблицы: Agents (Агенты) и Entertainers (Эстрадные артисты). Между этими таблицами имеется связь один-ко-многим. Одной записи в таблице Agents можно поставить в соответствие много записей из таблицы Entertainers, но одной записи в таблице Entertainers можно сопоставить только одну запись в таблице Agents. В данном случае гарантируется, что эстрадный артист приписывается только одному агенту. (Мы намеренно избегаем возможности противопоставления одного агента другому.)

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

Agents

Entertainers

(1,1) - Эстрадный артист может быть связан с одним и только с одним агентом.

(0,6) - Раз агент не должен вообпде ставиться в соответствие эстрадному артисту, то в конкретный момент времени данному агенту не может быть сопоставлено более шести эстрадных артистов.

На рис. 2.21 показано, как изобразить на диаграмме степень участия для этих таблиц.

Agents

(1.1)

.....1, .........,...... ипип.а

Agent ID

1

(0,6)


Entertainer ID Agent ID

Рис. 2.21. Представление в виде диаграммы степени участия

для таблиц Agents и Entertainers

Как и для других характеристик связи, тщательно изучите каадую связь, чтобы можно было идентифицировать соответствующую степень участия для каждой таблицы. Предположим, что все характеристики связи для таблиц Agents и Entertainers



Agents

{1.1}

Agent ID

Entertainers

(0,6) [

Рис. 2.22. Диаграмма со всеми характеристиками связи

для таблиц Agents и Entertainers

установлены. На рис. 2.22 показано, как добавить степень участия к диаграмме связей и как она будет выглядеть после этого. Теперь ее можно использовать для идентификации типа связи, правила удаления для связи, типа и степени участия для каждой таблицы.

И это все?

Используя методы, рассмотренные в данной главе, мы приняли базовые меры для обеспечения уровня целостности данных в БД. На следующем шаге необходимо изучить способ просмотра и использования данных в вашей организации, чтобы определить деловые правила и применить их к БД. Но чтобы действительно получить максимальную пользу от базы данных, следует вернуться к началу и бегло просмотреть процесс проектирования базы данных, используя хорошую методику проектирования. К сожалению, эти вопросы выходят за рамки данной книги. Однако хорошую методику проектирования можно изучить по таким книгам, как Database Desiognfor Mere Mortals Майкла Дж. Хернандеса или Handbook of Relational Database Design (Barbara Von Halle, Candace C. Fleming). Запомните следующее: чем лучше проработана структура базы данных, тем легче извлекать информацию из данных и создавать программы приложений.

Итоги

Эту главу мы начали с краткого обсуждения, почему следует обеспечить хороший уровень структуры БД. Плохо спроектированные таблицы могут вызвать многочисленные проблемы, одна из которых касается целостности данных.

Затем мы обсудили тонкую настройку полей каждой таблицы. Очень важно присвоить полям хорошие имена: это гарантирует, что каждое имя имеет смысл и реально помогает найти скрытые проблемы в самой структуре полей. Теперь вы можете выполнить тонкую настройку своих структур полей и гарантировать, что они удовлетворяют некоторым простым правилам. Правила предписывают, чтобы каждое поле

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



1 ... 12 13 14 [ 15 ] 16 17 18 ... 152

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