Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_BD.doc
Скачиваний:
20
Добавлен:
25.09.2019
Размер:
587.78 Кб
Скачать

Работа с таблицами

Для создания таблицы и определения ее структуры используется диалоговое окно New Table.

В этом окне имеется сетка для определения столбцов и их атрибутов. Для того, чтобы назначить столбец первичным ключом, нужно щелкнуть на кнопке панели инструментов Set primary key или выбрать одноименную команду из контекстного меню. В сетке задаются имя столбца, его тип данных и длина, а также указывается, может ли столбец содержать значения NULL. Остальные атрибуты определяются в области Columns, расположенной в нижней части окна.

Пример:

Создайте таблицу со следующими столбцами:

Column Name

Data Type

Length

AllowNulls

SectionId

Int

4

Title

Varchar

20

Для поля SectionId назначьте первичный ключ, а в свойствах Identity, Identity Seed и Identity Increment установите значения Yes,1,1 соответственно. Это означает, что значение первичного ключа при вводе новой записи будет автоматически увеличиваться на единицу, начиная со единицы. Сохраните таблицу под именем Section и закройте окно New Table.

Теперь в контекстном меню таблицы Section выберите пункт Open table->Return all rows. Появится диалоговое окно Data in table, предназначенное для ввода новых данных. Заполните таблицу.

Аналогично создайте таблицу Employee с полями:

EmployeeID

Int

4

FirstName

Vatchar

10

LastName

Vatchar

20

BirthDay

Smalldatetime

4

1

Money

Money

8

1

SectionID

Int

4

Для поля EmployeeID установите в свойстве Identity значение Yes и назначьте это поле первичным ключом.

Откройте диалоговое окно Table and Index Properties для таблицы Employee с помощью соответствующей кнопки на панели инструментов, либо при создании таблицы в окне New Table, либо при редактировании в окне Design Table. Выберите вкладку Indexes/Keys и создайте индекс для поля SectionID, назовите его IX_Sect. По этому полю будет осуществляться связь между таблицами.

Ограничения целостности

Ограничения целостности (constraints) гарантируют целостность данных для таблиц и столбцов.

  1. Ограничение PRIMARY KEY (ограничение по первичному ключу) используется для обеспечения логической целостности. Оно гарантирует, что для всех строк таблицы будет существовать уникальный ключ, не равный NULL. Применение ограничения первичного ключа, кроме всего, создает уникальный индекс по таблице. В нашем случае – это индекс PK_Employee, который был автоматически создан при назначении столбца EmployeeID первичным ключом.

  2. Ограничение NOT NULL (ограничение на неопределенное значение) используется для гарантии того, что столбец не будет содержать значений NULL.

  3. Ограничение UNIQUE (ограничение уникальности) предотвращает появление в любом столбце или наборе столбцов повторяющихся значений, но в отличие от первичного ключа может иметь значение NULL, при том одно.

  4. Ограничение CHECK (ограничение на значения) обеспечивает контроль значений, которые могут быть введены в столбец.

  5. Ограничение FOREIGN KEY (ограничение по внешнему ключу) используется для ссылочной целостности. Внешний ключ связывает один или несколько столбцов с первичным ключом, который был определен для другой таблицы. Внешний ключ гарантирует, что между двумя таблицами существуют указанные отношения.

Пример:

В окне Table and Index Properties выберите вкладку Check Constraints, создайте новое ограничение на значения, в поле Constraint Expression введите:

([Money] > 350)

Это значит, что при попытке ввести в поле Money значение, меньшее 350, будет генерироваться исключение.

Для того, чтобы связать таблицы по полю SectionId, нужно для таблицы Employee создать ограничение по внешнему ключу на вкладке Relationships в окне свойств таблицы. В поле Primary Key Table нужно указать таблицу Section и выбрать из списка ее столбцов первичный ключ SectionId, а в поле Foreign Key Table выбрать таблицу Employee и ее столбец SectionId (это будет внешний ключ).

Поставьте флажок Enforce relationship for INSERTs and UPDATEs (проверка связи таблиц при вводе и изменении значений), Cascade Update Related Fields (каскадное изменение связанных полей), Cascade Delete Related Records (каскадное удаление связанных полей). Теперь при попытке ввести в таблицу Employee значение SectionId, не совпадающее ни с одним из значений первичного ключа таблицы Section, будет сгенерировано исключение, а при изменении или удалении полей таблицы Section, будут изменены или удалены и соответствующие поля таблицы Employee.

Выберите в контекстном меню таблицы Employee команду Open table->Return all rows. Заполните таблицу произвольными значениями, обратите внимание, что SQL Server не позволяет вводить в столбец SectionID значения, которых нет в столбце SectionID таблицы Section. Попробуйте удалить из таблицы Section какую-либо запись и обратите внимание, что все связанные с ней записи таблицы Employee тоже будут удалены. Правда увидеть обновленные данные таблицы Employee можно будет только после выполнения команды Run вспомогательного меню. Дело в том, что когда вы выполняете команду Return all rows для таблицы Employee, SQL Server возвращает вам результаты следующего запроса:

SELECT *

FROM employee

Текст этого запроса вы можете увидеть, нажав кнопку SQL на панели инструментов, либо выбрав пункт контекстного меню Show Panes / SQL. Вы можете отредактировать текст этого запроса, например, следующим образом:

SELECT lastname, money

FROM employee

ORDER BY money

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

Попытайтесь ввести в поле Money величину, меньшую 350: в этом случае SQL Server сгенерирует исключение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]