- •Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Сотрудники (Номер_сотрудника, Фамилия, Зарплата, Номер_отдела)
- •1 Иванов 1000 1
- •2 Петров 2000 2
- •3 Сидоров 3000 1
- •Простые и составные ключи
- •Естественные и суррогатные ключи
- •1 6 Первая нормальная форма. Первая нормальная форма (1nf)
- •Вторая нормальная форма (2nf)
- •Целостность сущностей
- •Внешние ключи
- •Замечания к правилам целостности сущностей и внешних ключей
- •Для родительского отношения
- •Для дочернего отношения
- •Применение стратегий поддержания ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •2.1. Имена таблиц и полей
- •2.2. Создание таблицы
- •2.3. Создание полей
- •Свойства компонента
- •Методы компонента
- •Операторы sql
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
- •Операторы защиты и управления данными
- •Отбор данных из одной таблицы
- •Отбор данных из нескольких таблиц
- •Использование имен корреляции (алиасов, псевдонимов)
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •Синтаксис оператора выборки данных (select)
- •Синтаксис оператора выборки
- •Синтаксис соединенных таблиц
- •Синтаксис условных выражений раздела where
- •Порядок выполнения оператора select
- •Стадия 1. Выполнение одиночного оператора select
- •Стадия 2. Выполнение операций union, except, intersect
- •Стадия 3. Упорядочение результата
- •Как на самом деле выполняется оператор select
- •Оператор соединения
- •Оператор пересечения
- •Оператор деления
- •Панель компонент Rave
- •Компоненты вывода
- •Классы Rave
- •Мост к данным
- •Об именовании компонент подключения данных
- •Управление видимостью подключения
- •Пользовательские подключения данных
- •5. Настройка подключений данных Использование событий для настройки ваших подключений данных
- •Визуальная среда создания отчетов
- •Описание tRvRenderPreview
- •Свойства tRvRenderPreview
- •События tRvRenderPreview
- •Описание tRvRenderPrinter
- •Свойства и события tRvRenderPrinter
- •Описание tRvRenderPdf
- •Описание tRvRenderHtml
- •Описание tRvRenderRtf
- •Описание tRvRenderText
- •4. Rave подключения данных Мост к данным
- •Об именовании компонент подключения данных
- •Управление видимостью подключения
- •Пользовательские подключения данных
- •5. Настройка подключений данных Использование событий для настройки ваших подключений данных
- •Событие OnGetCols
- •Событие OnValidateRow
- •Событие OnRestore
Простые и составные ключи
Первичный ключ может состоять из единственного поля таблицы, значения которого уникальны для каждой записи. Так, например, на предприятии не может быть двух работников с одинаковыми табельными номерами, поэтому в таблице, содержащей записи о работниках, табельный номер может быть первичным ключом. Такой первичный ключ называют простым ключом.
Если таблица не имеет единственного уникального поля, первичный ключ может быть составлен из нескольких полей, совокупность значений которых гарантирует уникальность. Так, имя, фамилия, отчество, номер паспорта, серия паспорта не могут быть первичными ключами по отдельности, так как могут оказаться одинаковыми у двух и более людей. Но не бывает двух личных документов одного типа с одинаковыми серией и номером. Поэтому в таблице, содержащей записи о людях, первичным ключом может быть набор полей, состоящий из типа личного документа, его серии и номера. Такой первичный ключ называют составным ключом (англ. compound key, composite key, concatenated key).
Естественные и суррогатные ключи
Первичный ключ может состоять из информационных полей таблицы (то есть полей, содержащих полезную информацию об описываемых объектах). Такой первичный ключ называют естественным ключом. Теоретически, естественный ключ всегда можно сформировать, в этом случае мы получим т. н. интеллектуальный ключ. На практике, однако, использование естественных ключей наталкивается на определённые сложности:
Низкая эффективность — Естественный ключ может быть велик по размеру (особенно когда он составной), и его использование окажется технически неэффективным (ведь во всех таблицах, связанных с данной, понадобится создать поле того же размера, чтобы хранить ссылки).
Необходимость каскадных изменений — При изменении значения поля, входящего в естественный ключ, оказывается необходимым изменить значение поля не только в данной таблице, но и во всех таблицах, связанных с данной, в противном случае все ссылки на данную запись окажутся некорректными. В сложных базах данных таких связанных таблиц может быть очень много, и всегда остаётся опасность упустить из виду какую-то из них. При добавлении новых связанных таблиц приходится добавлять согласующие изменения во все места программ, где правится исходная таблица.
Несоответствие реальности — Уникальность естественного первичного ключа в реальных БД не всегда соблюдается. Допустим, например, что первичный ключ в таблице — данные личного документа. В такую таблицу окажется невозможным внести человека, о документах которого нет информации в момент добавления записи, а на практике такая необходимость может возникнуть.
Повторяемость — При использовании естественного ключа, содержание может повторяться (так, как могут повторятся поля, из которых состоит ключ), что недопустимо в первичном ключе
Вследствие этих и других соображений в практике проектирования БД чаще используют т.н. синтетические (суррогатные) ключи — искусственно созданные технические ключевые поля, не несущие информации об объектах.