Установление связей между таблицами

Теперь нужно связать новую таблицу Departments (Отделы) с таблицей Employees (Сотрудники). Для этого щелкните левой кнопкой по области выделения слева от поля Departmentid (Код отдела) таблицы Departments и перетащите появившийся значок поля на одноименное поле таблицы Employees. Появится диалоговое окно Установить связь (Create Relationship). В этом окне нужно сбросить флажок Проверять имеющиеся данные при создании (Check existing data on creation), т. к. поле Departmentid в таблице Employees заведомо будет пустым. Нажмите кнопку ОК.
Результат изменений отображается в схеме базы данных. Тот конец связи, который соединен с таблицей, содержащей первичный ключ, помечается значком ключа. Конец связи, который соединен с таблицей, содержащей внешний ключ, может помечаться по-разному:

  • для связей "один-к-одному" он тоже помечается ключом;
  • для связей "один-ко-многим" он помечается значком "бесконечность".

Если вы подведете курсор мыши к линии связи, то появится метка связи (Связь ‘FK_Employees_Departments’ между ‘Departments’ и ‘Employees’).
Настроить параметры связи можно и с помощью окна свойств. Чтобы открыть это окно, выделите связь на схеме и нажмите кнопку Свойства (Properties) на панели инструментов или щелкните по связи правой кнопкой мыши и выберите в контекстном меню команду Свойства (Properties). Для вновь созданной связи автоматически устанавливается свойство проверки ссылочной целостности. Эту проверку можно отключить, если сбросить флажок Применить связь для INSERT и UPDATE (Enable relationship for INSERT and UPDATE) на вкладке Связи (Relationship) диалогового окна Свойства (Properties).
Возможно создание на схеме данных рекурсивной связи, т. е. связи между полями одной и той же таблицы. Примером такой связи является связь в таблице Employees между полями Employeeld и ReportsTo. Поле ReportsTo играет роль внешнего ключа, т. к. оно содержит идентификатор сотрудника, перед которым отчитывается данный сотрудник.
 
Создание индексов и ограничений
Индексы и ограничения для таблиц в схеме базы данных создаются так же. Для создания в таблице индекса или ограничения необходимо открыть диалоговое окно Свойства (Properties). Создадим индекс для вновь созданного поля DepartmentID (Код отдела) в таблице Employees (Сотрудники). Щелкните правой кнопкой мыши по таблице Employees в окне схемы базы данных и выберите в контекстном меню команду Свойства (Properties) или выделите таблицу Employees и нажмите кнопку Свойства (Properties) на панели инструментов. Появится диалоговое окно Свойства (Properties). Раскройте вкладку Индексы и ключи (Indexes/Keys), нажмите кнопку Создать (New) и создайте новый индекс, как это было описано ранее.
Замечание
Индексы и ограничения не отображаются на схеме базы данных.
Сохранение и откат изменений в структуре базы данных
Сохранение изменений, которые выполнены в структуре таблиц и связей в схеме базы данных, выполняется после закрытия окна схемы. При этом выдается диалоговое окно Сохранить (Save), в котором перечисляются все измененные объекты. Пользователь имеет возможность проконтролировать, какие объекты подлежат изменению, и принять решение о том, сохранять или нет внесенные изменения. Можно даже сохранить информацию об измененных объектах в текстовом файле. Для этого нужно нажать кнопку Сохранить как текст (Save Text File). Текстовый файл, полученный при сохранении внесенных нами изменений, представлен на.
Если вы не хотите сохранять в базе данных те изменения, которые были внесены в структуру при работе со схемой данных, достаточно на вопрос Сохранить изменения макета или структуры схемы ‘<имя схемы>’?, который будет задан при закрытии окна схемы данных, нажать кнопку Нет (No). Произойдет откат всех изменений.
Замечание

При сохранении изменений, внесенных в схему базы данных, не всегда удается просто перенести все изменения в таблицы на сервере из-за ограничений сервера (например, в таблицах SQL Server нельзя поменять порядок полей). В этом случае таблица сначала удаляется из базы данных, а потом создается заново. Кроме того, если изменения вносятся в таблицу, которая связана с другими таблицами, то изменения могут затронуть и связанные таблицы. В этом случае в списке, который отображается в диалоговом окне Сохранить (Save), могут появиться таблицы, которые вы явно не изменяли.