SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Лекция № 11
Тема: Рекомендации по
разработке структур.
Обеспечение целостности
План:
1. Рекомендации по разработке структур.
2. Обеспечение целостности
Рекомендации по разработке
структур
 В качестве обобщения материала
предыдущего подраздела приведем
наиболее важные рекомендации, не
учёт которых может привести к
аномалиям при обработке данных в
базах. Остановимся на двух вопросах:
исходя из каких соображений нужно
создавать отношения (таблицы) и
каким образом следует их связывать.
Какими должны быть таблицы
сущностей
 Основное правило при создании таблиц сущностей - это «каждой
сущности - отдельную таблицу» (как в популярном лозунге: «каждой
семье - отдельную квартиру»).
 Поля таблиц сущностей могут быть двух видов: ключевые и неключевые.
Введение ключей в таблице практически во всех реляционных СУБД
позволяет обеспечить уникальность значений в записях таблицы по
ключу, ускорить обработку записей таблицы, а также выполнить
автоматическую сортировку записей по значениям в ключевых полях.
 Обычно достаточно определения простого ключа, реже - вводят
составной ключ. Таблицей с составным ключом может быть, например,
таблица хранения списка сотрудников (фамилия, имя и отчество), в
котором встречаются однофамильцы. В некоторых СУБД пользователям
предлагается определить автоматически создаваемое ключевое поле
нумерации (в Ассезя - это поле типа «счетчик»), которое упрощает
решение проблемы уникальности записей таблицы.
 Иногда в таблицах сущностей имеются поля описания свойств или
характеристик объектов. Если в таблице есть значительное число
повторений по этим полям и эта информация имеет существенный
объем, то лучше их выделить в отдельную таблицу (придерживаясь
правила: «каждой сущности - отдельную таблицу»). Тем более, следует
образовать дополнительную таблицу, если свойства взаимосвязаны.
В более общем виде последние
рекомендации можно
сформулировать так:
 информацию о сущностях следует представить
таким образом, чтобы неключевые поля в
таблицах были взаимно независимыми и
полностью зависели от ключа (см. определение
третьей нормальной формы).
 В процессе обработки таблиц сущностей надо
иметь в виду следующее. Новую сущность легко
добавить и изменить, но при удалении следует
уничтожить все ссылки на нее из таблиц связей,
иначе таблицы связей будут некорректными.
Многие современные СУБД блокируют
некорректные действия в подобных операциях.
Организация связи сущностей
 Записи таблицы связей предназначены для
отображения связей между сущностями,
информация о которых находится в
соответствующих таблицах сущностей.
 Обычно одна таблица связей описывает
взаимосвязь двух сущностей. Поскольку
таблицы сущностей в простейшем случае
имеют по одному ключевому полю, то таблица
связей двух таблиц для обеспечения
уникальности записей о связях должна иметь
два ключа. Можно создать таблицу связей, как
и таблицу объектов, и без ключей, но тогда
функции контроля за уникальностью записей
ложатся на пользователя.
 Более сложные связи (не бинарные) следует сводить к бинарным.
Для описания взаимосвязей N объектов требуется N-1 таблиц
связей. Транзитивных связей не должно быть. Избыток связей
приводит к противоречиям (см. пример отношений
СОТРУДНИКИ-ОТДЕЛ Ы, СОТРУДНИКИ-ПРОЕКТЫ и
ОТДЕЛЫ-ПРОЕКТЫ предыдущего подраздела).
 Не следует включать в таблицы связей характеристики сущностей,
иначе неизбежны аномалии. Их лучше хранить в отдельных
таблицах сущностей.
 С помощью таблиц связей можно описывать и несколько
специфичный вид связи - линейную связь, или слабую связь.
Примером линейной связи можно считать отношение
принадлежности сущностей некоторой другой сущности более
высокого порядка (системы, состоящие из узлов; лекарства, со-
стоящие из компонентов; сплавы металлов и т. д.). В этом случае
для описания связей достаточно одной таблицы связей.
 При работе с таблицами связей следует иметь в виду, что любая
запись из таблицы связей легко может быть удалена, поскольку
сущности некоторое время могут обойтись и без связей. При
добавлении или изменении содержимого записей таблицы надо
контролировать правильность ссылок на существующие объекты,
так как связь без объектов существовать не может. Большинство
современных СУБД контролируют правильность ссылок на
объекты.
Обеспечение целостности
 Под целостностью понимают свойство базы
данных, означающее, что она содержит полную,
непротиворечивую и адекватно отражающую
предметную область информацию.
 Различают физическую и логическую
целостность. Физическая целостность означает
наличие физического доступа к данным и то, что
данные не утрачены. Логическая целостность
означает отсутствие логических ошибок в базе
данных, к которым относятся нарушение
структуры БД или ее объектов, удаление или
изменение установленных связей между
объектами и т. д. В дальнейшем речь будем вести о
логической целостности.
Поддержание целостности БД
 включает проверку (контроль) целостности и ее
восстановление в случае обнаружения противоречий
в базе. Целостное состояние БД задается с помощью
ограничений целостности в виде условий, которым
должны удовлетворять хранимые в базе данные.
 Среди ограничений целостности можно выделить
два основных типа ограничений: ограничения
значений атрибутов отношений и структурные
ограничения на кортежи отношений. Примером
ограничений значений атрибутов отношений
является требование недопустимости пустых или
повторяющихся значений в атрибутах, а также
контроль принадлежности значений атрибутов
заданному диапазону. Так, в записях отношений о
кадрах значения атрибута Дата_рождения не могут
превышать значений атрибута Дата_приема.
 Требование целостности ссылок состоит в
том, что для каждого значения внешнего
ключа родительской таблицы должна
найтись строка в дочерней таблице с
таким же значением первичного ключа.
Например, если в отношении Я1
содержатся сведения о сотрудниках
кафедры, а атрибут этого отношения
Должн является первичным ключом
отношения Г<2( то в этом отношении для
каждой должности из К.1 должна быть
строка с соответствующим ей окладом.
 Во многих современных СУБД имеются
средства обеспечения контроля
целостности БД.

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (10)

Lekcia4
Lekcia4Lekcia4
Lekcia4
 
Lekcia9
Lekcia9Lekcia9
Lekcia9
 
Lekcia5
Lekcia5Lekcia5
Lekcia5
 
Lekcia14
Lekcia14Lekcia14
Lekcia14
 
Lekcia7
Lekcia7Lekcia7
Lekcia7
 
بحث في مادة التصميم العمراني2
بحث في مادة التصميم العمراني2بحث في مادة التصميم العمراني2
بحث في مادة التصميم العمراني2
 
Lekcia10
Lekcia10Lekcia10
Lekcia10
 
Lekcia6
Lekcia6Lekcia6
Lekcia6
 
Lekcia8
Lekcia8Lekcia8
Lekcia8
 
Good Audience Fundraising Deck - Angel Round
Good Audience Fundraising Deck - Angel RoundGood Audience Fundraising Deck - Angel Round
Good Audience Fundraising Deck - Angel Round
 

Ähnlich wie Lekcia11

раздел 3 реляционные модели данных
раздел 3  реляционные модели данныхраздел 3  реляционные модели данных
раздел 3 реляционные модели данныхtatianabtt
 
Data bases in pictures
Data bases in picturesData bases in pictures
Data bases in picturesAsya Dudnik
 
0016
00160016
0016JIuc
 
проектирование многотабличной базы данных. нормализация данных
проектирование многотабличной базы данных. нормализация данныхпроектирование многотабличной базы данных. нормализация данных
проектирование многотабличной базы данных. нормализация данныхЕлена Ключева
 
Простой подход к проектированию сложной системы
Простой подход к проектированию сложной системыПростой подход к проектированию сложной системы
Простой подход к проектированию сложной системыAnatoly Simkin
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.mikhaelsmirnov
 
008
008008
008JIuc
 
раздел 4 проектирование и использование баз данных
раздел 4  проектирование и использование баз данныхраздел 4  проектирование и использование баз данных
раздел 4 проектирование и использование баз данныхtatianabtt
 
открытый урок бд
открытый урок бдоткрытый урок бд
открытый урок бдguest0ffa3f
 
тема 4 2
тема 4 2тема 4 2
тема 4 2asheg
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаровDifferent_56
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаровDifferent_56
 
бд шпора2
бд шпора2бд шпора2
бд шпора2elgin690
 

Ähnlich wie Lekcia11 (20)

раздел 3 реляционные модели данных
раздел 3  реляционные модели данныхраздел 3  реляционные модели данных
раздел 3 реляционные модели данных
 
Data bases in pictures
Data bases in picturesData bases in pictures
Data bases in pictures
 
0016
00160016
0016
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
проектирование многотабличной базы данных. нормализация данных
проектирование многотабличной базы данных. нормализация данныхпроектирование многотабличной базы данных. нормализация данных
проектирование многотабличной базы данных. нормализация данных
 
лекция 7
лекция 7лекция 7
лекция 7
 
Простой подход к проектированию сложной системы
Простой подход к проектированию сложной системыПростой подход к проектированию сложной системы
Простой подход к проектированию сложной системы
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
 
008
008008
008
 
раздел 4 проектирование и использование баз данных
раздел 4  проектирование и использование баз данныхраздел 4  проектирование и использование баз данных
раздел 4 проектирование и использование баз данных
 
открытый урок бд
открытый урок бдоткрытый урок бд
открытый урок бд
 
тема 4 2
тема 4 2тема 4 2
тема 4 2
 
Access 05
Access 05Access 05
Access 05
 
лекция 6
лекция 6лекция 6
лекция 6
 
пр000 (2часа)e rwin
пр000 (2часа)e rwinпр000 (2часа)e rwin
пр000 (2часа)e rwin
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаров
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаров
 
бд шпора2
бд шпора2бд шпора2
бд шпора2
 
лекция 10
лекция 10лекция 10
лекция 10
 

Lekcia11

  • 1. Лекция № 11 Тема: Рекомендации по разработке структур. Обеспечение целостности План: 1. Рекомендации по разработке структур. 2. Обеспечение целостности
  • 2. Рекомендации по разработке структур  В качестве обобщения материала предыдущего подраздела приведем наиболее важные рекомендации, не учёт которых может привести к аномалиям при обработке данных в базах. Остановимся на двух вопросах: исходя из каких соображений нужно создавать отношения (таблицы) и каким образом следует их связывать.
  • 3. Какими должны быть таблицы сущностей  Основное правило при создании таблиц сущностей - это «каждой сущности - отдельную таблицу» (как в популярном лозунге: «каждой семье - отдельную квартиру»).  Поля таблиц сущностей могут быть двух видов: ключевые и неключевые. Введение ключей в таблице практически во всех реляционных СУБД позволяет обеспечить уникальность значений в записях таблицы по ключу, ускорить обработку записей таблицы, а также выполнить автоматическую сортировку записей по значениям в ключевых полях.  Обычно достаточно определения простого ключа, реже - вводят составной ключ. Таблицей с составным ключом может быть, например, таблица хранения списка сотрудников (фамилия, имя и отчество), в котором встречаются однофамильцы. В некоторых СУБД пользователям предлагается определить автоматически создаваемое ключевое поле нумерации (в Ассезя - это поле типа «счетчик»), которое упрощает решение проблемы уникальности записей таблицы.  Иногда в таблицах сущностей имеются поля описания свойств или характеристик объектов. Если в таблице есть значительное число повторений по этим полям и эта информация имеет существенный объем, то лучше их выделить в отдельную таблицу (придерживаясь правила: «каждой сущности - отдельную таблицу»). Тем более, следует образовать дополнительную таблицу, если свойства взаимосвязаны.
  • 4. В более общем виде последние рекомендации можно сформулировать так:  информацию о сущностях следует представить таким образом, чтобы неключевые поля в таблицах были взаимно независимыми и полностью зависели от ключа (см. определение третьей нормальной формы).  В процессе обработки таблиц сущностей надо иметь в виду следующее. Новую сущность легко добавить и изменить, но при удалении следует уничтожить все ссылки на нее из таблиц связей, иначе таблицы связей будут некорректными. Многие современные СУБД блокируют некорректные действия в подобных операциях.
  • 5. Организация связи сущностей  Записи таблицы связей предназначены для отображения связей между сущностями, информация о которых находится в соответствующих таблицах сущностей.  Обычно одна таблица связей описывает взаимосвязь двух сущностей. Поскольку таблицы сущностей в простейшем случае имеют по одному ключевому полю, то таблица связей двух таблиц для обеспечения уникальности записей о связях должна иметь два ключа. Можно создать таблицу связей, как и таблицу объектов, и без ключей, но тогда функции контроля за уникальностью записей ложатся на пользователя.
  • 6.  Более сложные связи (не бинарные) следует сводить к бинарным. Для описания взаимосвязей N объектов требуется N-1 таблиц связей. Транзитивных связей не должно быть. Избыток связей приводит к противоречиям (см. пример отношений СОТРУДНИКИ-ОТДЕЛ Ы, СОТРУДНИКИ-ПРОЕКТЫ и ОТДЕЛЫ-ПРОЕКТЫ предыдущего подраздела).  Не следует включать в таблицы связей характеристики сущностей, иначе неизбежны аномалии. Их лучше хранить в отдельных таблицах сущностей.  С помощью таблиц связей можно описывать и несколько специфичный вид связи - линейную связь, или слабую связь. Примером линейной связи можно считать отношение принадлежности сущностей некоторой другой сущности более высокого порядка (системы, состоящие из узлов; лекарства, со- стоящие из компонентов; сплавы металлов и т. д.). В этом случае для описания связей достаточно одной таблицы связей.  При работе с таблицами связей следует иметь в виду, что любая запись из таблицы связей легко может быть удалена, поскольку сущности некоторое время могут обойтись и без связей. При добавлении или изменении содержимого записей таблицы надо контролировать правильность ссылок на существующие объекты, так как связь без объектов существовать не может. Большинство современных СУБД контролируют правильность ссылок на объекты.
  • 7. Обеспечение целостности  Под целостностью понимают свойство базы данных, означающее, что она содержит полную, непротиворечивую и адекватно отражающую предметную область информацию.  Различают физическую и логическую целостность. Физическая целостность означает наличие физического доступа к данным и то, что данные не утрачены. Логическая целостность означает отсутствие логических ошибок в базе данных, к которым относятся нарушение структуры БД или ее объектов, удаление или изменение установленных связей между объектами и т. д. В дальнейшем речь будем вести о логической целостности.
  • 8. Поддержание целостности БД  включает проверку (контроль) целостности и ее восстановление в случае обнаружения противоречий в базе. Целостное состояние БД задается с помощью ограничений целостности в виде условий, которым должны удовлетворять хранимые в базе данные.  Среди ограничений целостности можно выделить два основных типа ограничений: ограничения значений атрибутов отношений и структурные ограничения на кортежи отношений. Примером ограничений значений атрибутов отношений является требование недопустимости пустых или повторяющихся значений в атрибутах, а также контроль принадлежности значений атрибутов заданному диапазону. Так, в записях отношений о кадрах значения атрибута Дата_рождения не могут превышать значений атрибута Дата_приема.
  • 9.  Требование целостности ссылок состоит в том, что для каждого значения внешнего ключа родительской таблицы должна найтись строка в дочерней таблице с таким же значением первичного ключа. Например, если в отношении Я1 содержатся сведения о сотрудниках кафедры, а атрибут этого отношения Должн является первичным ключом отношения Г<2( то в этом отношении для каждой должности из К.1 должна быть строка с соответствующим ей окладом.  Во многих современных СУБД имеются средства обеспечения контроля целостности БД.