Foreign key là gì

Khóa nước ngoài (Foreign Key) là gì?

Khóa nước ngoài là một trong những cột (column) hoặc một tổ những cột trong một bảng tmê man chiếu cho tới một mặt hàng trong một bảng khác. Nói bí quyết khác, khóa nước ngoài được khẳng định vào bảng tham mê chiếu đến khóa thiết yếu của bảng khác.

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

Một bảng hoàn toàn có thể có tương đối nhiều khóa ngoại tùy trực thuộc vào mối quan hệ của nó với những bảng khác.

Xem thêm: Ps Mac - Use Vanishing Point In Photoshop

Trong PostgreSquốc lộ, các bạn khẳng định khóa ngoại trải qua buộc ràng khóa nước ngoài. Ràng buộc khóa quanh đó cho rằng các quý giá trong một cột hoặc một nhóm các cột vào bảng nhỏ khớp với những giá trị vào một cột hoặc một đội nhóm các cột của bảng phụ thân.

Định nghĩa khóa ngoại (Foreign Key) khi sinh sản bảng

Để có mang 1 column là một trong những khóa nước ngoài lúc chế tác bảng, chúng ta sử dụng từ bỏ khóa: REFERENCES

Cú pháp:

CREATE TABLE ( REFERENCES (),);Ví dụ: Chúng ta bao gồm 2 bảng users cùng groups gồm mối quan hệ nlỗi sau:

*

Với group_id của bảng users là column có rằng buộc khóa ngoại links cho tới khóa chính của của bảng groups

Để tạo ra bảng users tất cả group_id là column bao gồm rằng buộc khóa 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, email 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 phải tạo nên trước.

Ngoài ra 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, 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, FOREIGN KEY (group_id) REFERENCES groups(group_id))

Định nghĩa khóa nước ngoài cho một tập hòa hợp các column

Trong ngôi trường hợp khóa ngoại là một trong nhóm cột, chúng ta định nghĩa khóa 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 cơ sở dữ liệu là employee (Bảng con) và company (Bảng cha) bao gồm mối quan hệ nhỏng sau:

*

Lệnh SQL chế tạo ra bảng employee bao gồm khóa nước ngoài link cho tới bảng company hệt 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 ngoại vào bảng

Để thêm một ràng buộc khóa nước ngoài vào bảng hiện tại gồm, chúng ta sử dụng câu lệnh ALTER TABLE như sau:

ALTER TABLE child_tableĐịa Chỉ 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 ADD COLUMN group_id integer;ALTER TABLE employee Showroom CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(group_id);

*