|
Программирование >> Исключение дубликатов строк
Pilots
Рис. 2.12. Является ли PilotID надежным первичным ключом? Является ли это поле составным? Хотя к данному моменту следовало исключить все составные поля, лишняя проверка не повредит. Если составное поле было пропущено ранее, разделите его сейчас и попытайтесь использовать как первичный ключ другое поле. Может ли значение этого поля когда-либо измениться? Значение поля первичного ключа должно оставаться статичным, т. е. никогда не следует изменять значение первичного ключа, если действительно нет убедительной причины для этого. Когда значение поля подвергается произвольным изменениям, полю трудно оставаться в соответствии с другими пунктами этого контрольного списка. Как уже говорилось, поле должно удовлетворять всем требованиям данного контрольного списка, прежде чем его можно будет использовать как первичный ключ. На рис. 2.12 PilotID служит первичным ключом таблицы Pilots. Но вопрос в том, удовлетворяет ли PilotID всем пунктам контрольного списка? Если да, то первичный ключ надежен. Но если нет, то необходимо либо изменить его, чтобы он соответствовал всем пунктам контрольного списка, либо выбрать в качестве первичного ключа другое поле. В действительности поле PilotID является надежным первичным ключом, потому что оно соответствует всем пунктам контрольного списка. Но что произойдет, если нет поля, которое можно выбрать в качестве первичного ключа? Рассмотрим, например, таблицу Employees на рис. 2.13. Имеется ли в этой таблице поле, которое может служить первичным ключом? Совершенно ясно, что в этой таблице такое поле отсутствует. За исключением EmpPhone, каждое поле содержит повторяющиеся значения. EmpZip, EmpAreaCode и EmpPhone содержат неизвестные значения. Поскольку значение каждого поля в этой таблице может меняться произвольным образом, то очевидно, что отсутствует поле, которое можно использовать в качестве первичного ключа. И что же теперь делать? - Создать искусственный первичный ключ. Это произвольное поле, которое определяется и добавляется к таблице с единственной целью использовать его в качестве первичного ключа. Преимущество добавления произвольного поля состоит в том, что оно гарантированно удовлетворяет Employees
Рис. 2.13. Имеется ли в этой таблице первичный ключ? Employees
Рис. 2.14. Таблица Employees с новым искусственным первичным ключом всем пунктам контрольного списка. Раз это поле добавлено к таблице, определите его как первичный ключ - и все в порядке! На рис. 2.14 представлена таблица Employees с новым искусственным первичным ключом, имя которого EmployeelD. На этот момент сделано все для упрочения и тонкой настройки структур ваших между ми правильные. Установка и исправление связей Между двумя таблицами существует связь, если записям в первой таблице некоторым образом сопоставлены записи второй таблицы. Сами связи могут быть спроектированы по одному из трех типов: один-к-одному, один-ко-многим и многие-ко-многим. Каждый тип связей устанавливается специальным способом. Кратко повторим это. Эта линия показывает, что одной записи в Emp[oyee Confldentlal стовится в соответствие только одно запись в Employees. Empfoyees EmployeeConfidentidl Employee ID H EmployeelD Эта линия показывает, что одной записи в Employees ставится в соответствие только одна запись в EmployeeConfidentlal. Рис. 2.15. Изображение на диаграмме связи один-к-одному <И**Г* )* Ч i-t.XWN.iiJ>*i. -;-1 А ш*lf *-4 Связь один-к-одному устанавливается, когда берется первичный ключ из основной таблицы и вставляется в подчиненную таблицу, где он становится внешним ключом. Это специальный тип связи, потому что во многих случаях внешний ключ также играет роль первичного ключа подчиненной таблицы. Можно изобразить эту связь, как показано на рис. 2.15. Связь один-ко-многим устанавливается, если берется первичный ключ таблицы на стороне один и вставляется в таблицу на стороне многие , где он становится внешним ключом. На рис. 2.16 представлена диаграмма с этим типом связи. Внимание! Символы диаграммы, представленные в этом разделе, являются частью метода, изложенного в книге Хернандеса Database Design for Mere Mortals. Эта линия показывает, что одной записи в Instruments ставится в соответствие только 04>/а запись в Students students Instruments Student ID Instrument ID Student rD Этот вороний след указывает, что одной записи в таблице Students соответствует несколько записей в таблице Instruments. Рис. 2.16. Представление в виде диаграммы связи один-ко-многим РК FK
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |