Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание первичного ключа при создании таблицы
Рассмотрим один из операторов CREATE TABLE: CREATE TABLE "EMPLOYEES" ("EMPLOYEE_ID" NUMBER(6,0), "FIRST_NAME" VARCHAR2(20), "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE, "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, "PHONE_NUMBER" VARCHAR2(20), "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE, "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE, "SALARY" NUMBER(8,2), "COMMISSION_PCT" NUMBER(2,2), "MANAGER_ID" NUMBER(6,0), "DEPARTMENT_ID" NUMBER(4,0) ) В качестве первичного ключа обозначим столбец "EMPLOYEE_ID"
Чтобы внести корректировку в рассматриваемый оператор CREATE TABLE для задания в нем ограничения PRIMARY KEY, достаточно ввести информацию об ограничении сразу после определения столбцов, указав название столбца, который должен войти в состав первичного ключа. CREATE TABLE "EMPLOYEES" ("EMPLOYEE_ID" NUMBER(6,0), "FIRST_NAME" VARCHAR2(20), "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE, "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, "PHONE_NUMBER" VARCHAR2(20), "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE, "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE, "SALARY" NUMBER(8,2), "COMMISSION_PCT" NUMBER(2,2), "MANAGER_ID" NUMBER(6,0), "DEPARTMENT_ID" NUMBER(4,0), CONSTRAINT "EMP_EMP_ID_PK" PRIMARY KEY ("EMPLOYEE_ID") ENABLE )
Следует отметить, что для проверки этого кода необходимо вначале удалить существующую таблицу с помощью команды DROP TABLE EMPLOYEES Создание первичного ключа на существующей таблице Кроме объявления таблицы с первичным ключом, предусмотрена возможность создания первичного ключа на существующей таблице. Это — также несложная задача. Рассмотрим, как она решается, на примере таблицы Employees:
alter table " EMPLOYEES " add constraint " EMP_EMP_ID_PK" primary key ("EMPLOYEE_ID ")
Ниже описано, какие сведения передаются в СУБД SQL в рассматриваемой команде ALTER. - Указание на то, что должно быть сделано дополнение к определению таблицы (при желании можно было бы также исключить какую-то часть существующего определения таблицы). - Уточнение дополняемой части определения (согласно которому вводится ограничение). - Имя, предусмотренное для ограничения (которое позволит в дальнейшем непосредственно обращаться к ограничению). - Тип ограничения (PRIMARY KEY). - Столбец (столбцы), на который распространяется ограничение. Ограничения foreign key
Внешние ключи не только обеспечивают целостность данных, но и создают связи между таблицами. После задания внешнего ключа на таблице устанавливается зависимость между таблицей, для которой определяется внешний ключ (так называемой ссылающейся таблицей), и таблицей, на которую ссылается внешний ключ (так называемой таблицей, упомянутой в ссылке). После задания на ссылающейся таблице внешнего ключа любая строка, вставляемая в эту таблицу, должна соответствовать одному из следующих двух условий: иметь согласующуюся с ней строку в столбце (столбцах), которому соответствует внешний ключ таблицы, указанной в ссылке, или иметь значение столбца (столбцов) внешнего ключа, равное NULL. Такое определение может показаться немного запутанным, поэтому рассмотрим, как оно применяется на примере. Создадим еще одну таблицу и назовем ее DEPARTMENTS. В приведенном ниже сценарии с оператором CREATE заслуживает внимания то, что в таблицах предусмотрено применение и первичного, и внешнего ключа. Из дальнейшего описания рассматриваемого проекта станет ясно, что существенно важной частью объявления одной из таблиц является спецификация первичного ключа. С другой стороны, объявление внешнего ключа, который задается на таблице в этом сценарии, почти полностью совпадает с объявлением первичного ключа, не считая того, что в этом объявлении указана таблица, на которую ссылается внешний ключ. Синтаксическая структура объявления внешнего ключа предусматривает необходимость указания столбца или столбцов, на которые распространяется ограничение FOREIGN KEY. Таким образом, применительно к таблице Orders может быть подготовлен сценарий, который выглядит, как показано ниже.
CREATE TABLE "DEPARTMENTS" ("DEPARTMENT_ID" NUMBER(4,0), "DEPARTMENT_NAME" VARCHAR2(30) CONSTRAINT "DEPT_NAME_NN" NOT NULL ENABLE, "MANAGER_ID" NUMBER(6,0), "LOCATION_ID" NUMBER(4,0), CONSTRAINT "DEPT_LOC_FK" FOREIGN KEY ("LOCATION_ID") REFERENCES "LOCATIONS" ("LOCATION_ID") ENABLE, ) Следует учитывать, что столбец, на который фактически ссылается внешний ключ, должен иметь определенное на нем ограничение PRIMARY KEY или UNIQUE. Итак, определение внешнего ключа было задано непосредственно в объявлении таблицы. Таким образом, после создания этой таблицы внешний ключ становится ее неотъемлемой частью. Поддержание собственной целостности должна обеспечивать сама база данных; каждый внешний ключ принудительно вводит одно из ограничений, распространяющихся на хранимые данные, и поэтому гарантирует обеспечение целостности базы данных.
В отличие от первичных ключей, количество внешних ключей, заданных на таблице, не должно ограничиваться только одним. Для любой таблицы может быть задано от нуля до 253 внешних ключей. Единственным условием является то, что каждый конкретный столбец может упоминаться только в одном внешнем ключе. Тем не менее в каждом отдельном внешнем ключе может быть задано несколько столбцов. Кроме того, предусмотрена также возможность использовать какой-то конкретный столбец в качестве назначения ссылок, заданных во внешних ключах многих таблиц.
|
||||||
Последнее изменение этой страницы: 2017-02-09; просмотров: 383; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.72.78 (0.006 с.) |