-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathForeign Keys.txt
119 lines (87 loc) · 4.51 KB
/
Foreign Keys.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
****** Foreign Keys ******
Foreign Keys является способом обеспечить целостность данных в нашей базе
данных Oracle. Внешний ключ означает, что значения в одной таблице должны
также появиться (соответствовать) значениям в другой таблице (и ни каким
более).
Ссылающаяся таблица называется parent table (родительской таблицей),
а таблица с foreign key (внешним ключом) называется child table (дочерней
таблицей).
Foreign key в дочерней таблице, как правило, ссылается на primary key
(первичный ключ) в родительской таблице. Foreign key может быть определен
либо в операторе CREATE TABLE или в операторе ALTER TABLE.
****** Создание Foreign Keys с использованием CREATE TABLE ******
Синтаксис:
***************************************************************************
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
);
***************************************************************************
Пример:
***************************************************************************
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
);
***************************************************************************
В этом примере мы создали primary key таблицы supplier под названием supplier_pk.
Она состоит только из одного поля - supplier_id. Затем мы создали foreign key с
именем fk_supplier в таблице products, который ссылается на таблицу supplier на
основании поля supplier_id.
Можно создать foreign key с более чем одним полем:
***************************************************************************
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
CONSTRAINT fk_supplier_comp
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
);
***************************************************************************
В этом примере, наш foreign key называется fk_foreign_comp ссылается на таблицу
supplier на основании двух полей - supplier_id и supplier_name.
****** Создание FOREIGN KEY с использованием ALTER TABLE ******
Синтаксис:
***************************************************************************
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n);
***************************************************************************
Пример:
***************************************************************************
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id);
***************************************************************************
В этом примере мы создали foreign key с именем fk_supplier, который ссылается
на таблицу supplier, на основании поля supplier_id. Cоздания foreign key с более
чем одним полем:
***************************************************************************
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name);
***************************************************************************