Khóa chính và khóa ngoại là những thành phần cơ bản nhất mà lý thuyết quan hệ dựa trên. Mỗi thực thể phải có một hoặc nhiều thuộc tính, khóa chính, có giá trị xác định duy nhất từng phiên bản của thực thể. Mỗi thực thể con phải có một thuộc tính, khóa ngoại, hoàn thành liên kết với thực thể mẹ
Một bảng chỉ có thể có MỘT khóa chính;
SQL PRIMARY KEY trên TẠO BẢNG
SQL sau đây tạo một PRIMARY KEY
trên cột "ID" khi bảng "Người" được tạo
mysql
TẠO BẢNG Người [
ID int NOT NULL,
LastName varchar[255] NOT NULL,
FirstName
Age int,
PRIMARY KEY [ID]
];
Máy chủ SQL/Truy cập Oracle/MS
TẠO BẢNG Người [
ID int NOT NULL PRIMARY KEY,
LastName varchar[255] NOT NULL,
FirstName varchar[255],
Age int
];
Để cho phép đặt tên ràng buộc PRIMARY KEY
và để xác định ràng buộc PRIMARY KEY
trên nhiều cột, hãy sử dụng cú pháp SQL sau
Truy cập MySQL/SQL Server/Oracle/MS
TẠO BẢNG Người [
ID int NOT NULL,
LastName varchar[255] NOT NULL,
FirstName
Age int,
CONSTRAINT PK_Person PRIMARY KEY [ID,LastName]
];
Ghi chú. Trong ví dụ trên chỉ có MỘT PRIMARY KEY
[PK_Person]. Tuy nhiên, GIÁ TRỊ của khóa chính được tạo thành từ HAI CỘT [ID + Họ]
SQL PRIMARY KEY trên ALTER TABLE
Để tạo ràng buộc PRIMARY KEY
trên cột "ID" khi bảng đã được tạo, hãy sử dụng SQL sau
Truy cập MySQL/SQL Server/Oracle/MS
ALTER TABLE Persons
THÊM KHÓA CHÍNH [ID];
Để cho phép đặt tên ràng buộc PRIMARY KEY
và để xác định ràng buộc PRIMARY KEY
trên nhiều cột, hãy sử dụng cú pháp SQL sau
Truy cập MySQL/SQL Server/Oracle/MS
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY [ID,LastName];
Ghi chú. Nếu bạn sử dụng ALTER TABLE
để thêm khóa chính, [các] cột khóa chính phải được khai báo là không chứa giá trị NULL [khi bảng được tạo lần đầu tiên]
Trong video này, chúng ta sẽ hiểu khóa chính tổng hợp là gì và tại sao chúng ta cần nó với một ví dụ thực tế
khóa chính là gì
Khóa chính xác định duy nhất một hàng trong bảng. Bạn không thể lưu trữ các giá trị NULL hoặc trùng lặp trong cột khóa chính
Trong bảng
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
0, cột Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
1 là khóa chínhTương tự, trong bảng
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
2, Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
3 là khóa chínhTại sao chúng ta cần một khóa chính?
Vâng để xác định duy nhất một hàng của bảng. Ngay cả khi chúng tôi có 2 tác giả có cùng họ và tên, chúng tôi có thể xác định duy nhất họ bằng cách sử dụng cột
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
4Trong cả hai ví dụ này, khóa chính chỉ chứa một cột. Trong trường hợp của bảng
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
0, đó là cột Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
1 và trong trường hợp của bảng Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
2, đó là cột Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
3Khóa chính tổng hợp là gì
Chà, khóa chính được tạo thành từ 2 cột trở lên được gọi là khóa chính tổng hợp. Một trường hợp sử dụng phổ biến trong thế giới thực cho điều này là khi bạn có mối quan hệ nhiều-nhiều giữa hai bảng i. e khi nhiều hàng trong một bảng được liên kết với nhiều hàng trong một bảng khác
Ví dụ: có mối quan hệ nhiều-nhiều giữa bảng khách hàng và sản phẩm vì một khách hàng có thể mua nhiều sản phẩm và tương tự, một sản phẩm như iPhone chẳng hạn có thể được nhiều khách hàng mua
Một ví dụ khác, là
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
2 và Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
0. Một tác giả có thể viết nhiều sách và tương tự một cuốn sách nhất định có thể là tác giả của nhiều tác giả của tôiCác hệ thống cơ sở dữ liệu quan hệ thường không cho phép chúng tôi triển khai mối quan hệ nhiều-nhiều trực tiếp giữa hai bảng
Chúng ta cần một bảng thứ ba và bảng này chứa các hàng quan hệ nhiều-nhiều. Bảng thứ ba này thường được gọi là bảng liên kết, tham gia hoặc bảng nối
Trong một thế giới thực, bảng nối này sẽ chỉ chứa 2 cột khóa ngoài và không có gì khác. Trong ví dụ của chúng tôi, 2 cột đó là
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
3 và Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
1Sau đây là mã để tạo khóa chính tổng hợp. Trong ví dụ của chúng tôi, chúng tôi có 2 cột trong khóa chính tổng hợp. Chúng tôi có thể có nhiều hơn 2 cột nếu muốn, chỉ cần bao gồm một dấu phẩy khác và cột thứ ba của bạn.
Tạo khóa chính tổng hợp trong khi tạo bảng
Create table Authors_Books
[
AuthorId int not null foreign key references Authors[AuthorId],
BookId int not null foreign key references Books[BookId]
Constraint PK_Books_Authors Primary Key [AuthorId, BookId]
]
Go
Tạo khóa chính tổng hợp sau khi tạo bảng
Trong ví dụ trên, chúng tôi đang tạo khóa chính tổng hợp cùng với bảng i. e trong khi bảng đang được tạo, nhưng nếu chúng ta đã có một bảng và muốn tạo một khóa chính tổng hợp trên bảng hiện có đó thì sao?. Vâng, sau đây là mã cho điều đó
Alter table [Your_table_name]
Add constraint [Meaningful_name_for_the_constraint]
primary key [Column1, Column2, Column3]
Quy tắc khóa chính tổng hợp
Khóa chính tổng hợp giống như khóa chính trên một cột. Tất cả các quy tắc vẫn được áp dụng. Không cho phép giá trị null và không thể chứa giá trị trùng lặp. Các giá trị trong một cột riêng lẻ có thể được sao chép, nhưng trên các cột, chúng phải là duy nhất. Giá trị null không được phép trong bất kỳ cột nào trong khóa chính tổng hợp