Foreign Key Là Gì

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

Khóa ngoại là một trong những cột (column) hoặc một đội nhóm các cột vào một bảng tham chiếu cho tới một sản phẩm trong một bảng khác. Nói phương pháp khác, khóa ngoại được xác minh trong bảng tham chiếu đến khóa bao gồm của bảng khác.Bạn đang xem: Foreign key là gì

Trong PostgreSQL, bạn khẳng định khóa ngoại thông qua ràng buộc khóa ngoại. Ràng buộc khóa bên cạnh chỉ ra rằng các giá trị trong một cột hoặc một nhóm các cột trong bảng con khớp với những giá trị vào một cột hoặc một nhóm các cột của bảng cha.

Định nghĩa khóa nước ngoài (Foreign Key) khi chế tác bảng

Để quan niệm 1 column là một trong những khóa ngoại khi tạo bảng, chúng ta sử dụng tự khóa: REFERENCES

Cú pháp:

CREATE TABLE ( REFERENCES (),);Ví dụ: chúng ta có 2 bảng users cùng groups có mối quan hệ như sau:


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

*

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

Để tạo ra bảng users tất cả group_id là column tất cả rằng buộc khóa ngoại, họ 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, e-mail 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 rất cần được tạo trước.

Ngoài ra rất có thể sử dụng 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, thư điện tử 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 một tập hợp những column

Trong trường vừa lòng khóa ngoại là 1 trong những nhóm cột, bọn họ định nghĩa khóa nước ngoài như 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ụ: họ có 2 bảng csdl là employee (Bảng con) cùng company (Bảng cha) có mối quan hệ như sau:


*

Xem thêm: Cách Ứng Dụng Discourse Markers Là Gì, Discourse Markers Là Gì

Lệnh SQL tạo ra bảng employee gồm khóa ngoại link tới bảng company 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 một ràng buộc khóa nước ngoài vào bảng hiện nay có, bạn sử dụng câu lệnh ALTER TABLE như sau:

ALTER TABLE child_tableADD 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 tới bảng groups

ALTER TABLE employee địa chỉ cửa hàng COLUMN group_id integer;ALTER TABLE employee add CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(group_id);