Khóa ngoại (Foreign Key) là gì?

Khóa nước ngoài là 1 cột (column) hoặc một đội các cột trong một bảng tyêu thích chiếu tới một mặt hàng trong một bảng khác. Nói biện pháp không giống, khóa nước ngoài được xác định trong bảng tđam mê chiếu cho khóa chủ yếu của bảng không giống.

Bạn đang xem: Foreign key là gì

Một bảng có thể có khá nhiều khóa nước ngoài tùy ở trong vào quan hệ của nó với những bảng khác.

Xem thêm: Bảng Kê Tiếng Anh Là Gì ? Bảng Kê Tiếng Anh Là Gì, Nghĩa Của Từ Bảng Kê

Trong PostgreSquốc lộ, bạn khẳng định khóa nước ngoài thông qua buộc ràng khóa nước ngoài. Ràng buộc khóa ngoại trừ cho là những cực hiếm trong một cột hoặc một đội các cột vào bảng nhỏ khớp cùng với những cực hiếm vào một cột hoặc một nhóm những cột của bảng phụ vương.

Định nghĩa khóa nước ngoài (Foreign Key) Lúc tạo bảng

Để khái niệm 1 column là một trong khóa ngoại Khi sản xuất bảng, chúng ta sử dụng tự khóa: REFERENCES

Cú pháp:

CREATE TABLE ( REFERENCES (),);Ví dụ: Chúng ta gồm 2 bảng usersgroups có quan hệ như sau:

*

Với group_id của bảng users là column bao gồm rằng buộc khóa ngoại link tới khóa chủ yếu của của bảng groups

Để sinh sản bảng users có group_id là column bao gồm rằng buộc khóa nước ngoài, chúng ta sử dụng câu lệnh SQL sau:

CREATE TABLE public.users( user_id integer NOT NULL, group_id integer REFERENCES groups(group_id), username character varying COLLATE pg_catalog."default" NOT NULL, password character varying COLLATE pg_catalog."default" NOT NULL, gmail character varying COLLATE pg_catalog."default", created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, deleted_at timestamp without time zone)Chụ ý: Bảng groups cần được sản xuất trước.

Dường như rất có thể thực hiện keyword: FOREIGN KEY

CREATE TABLE public.users( user_id integer NOT NULL, group_id integer NOT NULL, username character varying COLLATE pg_catalog."default" NOT NULL, password character varying COLLATE pg_catalog."default" NOT NULL, tin nhắn character varying COLLATE pg_catalog."default", created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, deleted_at timestamp without time zone, FOREIGN KEY (group_id) REFERENCES groups(group_id))

Định nghĩa khóa ngoại cho 1 tập thích hợp các column

Trong ngôi trường hợp khóa ngoại là một trong những team cột, họ định nghĩa khóa nước ngoài nlỗi sau:

CREATE TABLE child_table(child_column_1 INTEGER PRIMARY KEY,child_column_2 INTEGER,child_column_3 INTEGER,FOREIGN KEY (child_column_2 , child_column_3 ) REFERENCES parent_table (parent_column_1, parent_column_2));Ví dụ: Chúng ta có 2 bảng DataBase là employee (Bảng con) với company (Bảng cha) bao gồm mối quan hệ nlỗi sau:

*

Lệnh SQL sản xuất bảng employee có khóa ngoại link tới bảng compangiống như sau:

CREATE TABLE public.employee( employee_id integer NOT NULL PRIMARY KEY, company_id integer, company_code integer, fullname character varying, position character varying, salary money, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, deleted_at timestamp without time zone, FOREIGN KEY (company_id , company_code ) REFERENCES company (company_id, company_code))

*

Thêm khóa nước ngoài vào bảng

Để thêm 1 buộc ràng khóa ngoại vào bảng hiện bao gồm, các bạn sử dụng câu lệnh ALTER TABLE nhỏng sau:

ALTER TABLE child_tableĐịa chỉ cửa hàng CONSTRAINT constraint_name FOREIGN KEY (child_column_1) REFERENCES parent_table (parent_column_1);Ví dụ: Thêm column group_id vào thêm khóa ngoại link cho tới bảng groups

ALTER TABLE employee Showroom COLUMN group_id integer;ALTER TABLE employee ADD CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(group_id);

*