Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп.docx
Скачиваний:
36
Добавлен:
26.03.2016
Размер:
115.88 Кб
Скачать

2.5.2 Создание или изменение ограничения primary key.

При создании таблицы в ее определении может быть указано ограничение PRIMARY KEY. Если таблица уже существует, ограничение PRIMARY KEY может быть добавлено только в том случае, если для таблицы еще не определено ни одного такого ограничения. У таблицы может быть только одно ограничение PRIMARY KEY.

Если ограничение PRIMARY KEY уже существует, его можно изменить или удалить. Например, может потребоваться, чтобы ограничение PRIMARY KEY ссылалось на другие столбцы, или нужно изменение порядка столбцов, имени индекса, параметров кластеризации или коэффициента заполнения. Но длину столбца, определенного с ограничением PRIMARY KEY, изменить нельзя.

Примечание. Чтобы изменить ограничение PRIMARY KEY, необходимо сначала удалить существующее ограничение PRIMARY KEY, а затем создать новое с другим определением.

2.5.2.1 Свойство identity.

Столбец первичного ключа является столбцом идентификаторов.

Реализовать столбцы идентификаторов можно при помощи свойства IDENITY. Это позволяет разработчику указать как начальное значение идентификатора для первой строки, вставляемой в таблицу (свойство Начальное значение идентификатора), так и увеличение (свойство Шаг приращения идентификатора), добавляемое к начальному значению для определения последующих номеров идентификаторов. При вставке значений в таблицу со столбцом идентификаторов SQL Server 2005 Database Engine автоматически формирует следующее значение идентификатора, добавляя значение шага приращения идентификатора к начальному значению.

При добавлении столбцов идентификатора к существующим таблицам номера идентификатора добавляются в существующие строки таблицы; при этом начальное значение и значения приращения применяются в том же порядке, в котором строки были добавлены. Номера идентификаторов также формируются для всех новых строк, которые добавляются. Нельзя изменить существующий столбец таблицы, добавив в него свойство IDENTITY.

2.5.2.2 Глобальные уникальные идентификаторы.

Несмотря на то, что свойство IDENTITY автоматизирует нумерацию строк в рамках одной таблицы, разные таблицы, каждая со своим столбцом идентификаторов, могут создавать одинаковые значения. Это обусловлено тем, что уникальность свойства IDENTITY гарантирована только в рамках таблицы, в которой оно использовано.

Если в приложении нужно сформировать столбец идентификатора, уникальный для всей базы данных или всех баз данных во всех сетях компьютеров в мире, используйте тип данных uniqueidentifier и функцию NEWID (Transact-SQL) или NEWSEQUENTIALID().

Database Engine не формирует значения для этого столбца автоматически. Чтобы вставить глобальное уникальное значение, создайте для столбца определение DEFAULT, которое использует функцию NEWID или NEWSEQUENTIALID для формирования глобального уникального значения.

2.6 Отношения между таблицами.

Таблицы составляют единую базу данных благодаря возможности устанавливать отношения через общее поле. Имеется ввиду, что если две таблицы имеют поля, значения которых принадлежат одному и тому же домену (общей области определения значений этих полей), то упомянутые таблицы могут быть связаны между собой благодаря наличию одинаковых значений в этих полях не только по формальным свойствам, но и по смыслу.

Столбцы, на основе которых устанавливается отношение, называют ключевыми. В большинстве случаев отношение устанавливают между первичным ключом родительской таблицы, который является уникальным идентификатором для каждой строки, и неуникальным ключом дочерней таблицы, который в таком случае называют внешним ключом.

Существуют три типа отношений:

- один - ко многим;

- многие - ко - многим;

- один - к - одному.

Отношение один - ко - многим является наиболее общим типом отношения. Для этого типа отношения строка в таблице А может иметь много (несколько) соответствующих ей строк в таблице Б, но, при этом, каждая строка в таблице Б имеет только одну соответствующую строку в таблице А. Например, между таблицами publishers и titles существует отношение один - ко - многим, поскольку каждый издатель издаёт много книг, но каждая конкретная книга может быть выпущена только определённым издателем. Отношение один ко многим создаётся только в случае, если один из связываемых столбцов является первичным ключом или имеет ограничение уникальности (Unique constraint).

В отношении один - к - одному строка в таблице А может иметь не более чем одной соответствующей строки в таблице Б и наоборот. Отношение "один - к - одному" создаётся, если в обеих таблицах имеются первичные ключи или ограничения уникальности. Этот тип ограничений используется редко, поскольку связанная таким образом информация может быть помещена в одну таблицу.

Отношения "многие ко многим" позволяют связать каждую строку одной таблицы с несколькими строками другой таблицы и наоборот. Например, отношение "многие ко многим" можно создать для таблиц authors и titles, чтобы связать каждого автора с его книгами и сопоставить каждой книге ее автора. Если создать отношение "один ко многим" в любой таблице, получится, что каждая книга сможет иметь только одного автора или каждый автор - только одну книгу.

Для осуществления отношений "многие ко многим" между таблицами базы данных применяются связующие таблицы. Они содержат столбцы первичных ключей двух таблиц, которые необходимо связать. После этого можно создать отношения между столбцами первичных ключей каждой таблицы и соответствующими столбцами в связующей таблице. В базе данных pubs связующей является таблица titleauthor.