Hai khóa chính có thể có cùng giá trị không?

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ính

Tươ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ính

Tạ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]
4

Trong 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]
3

Khó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ôi

Cá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]
1

Sau đâ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

Các khóa chính có thể có cùng giá trị không?

Bạn có thể xác định các khóa cho phép các giá trị trùng lặp. Tuy nhiên, không cho phép trùng lặp trên khóa chính vì giá trị của khóa chính của bản ghi phải là duy nhất.

Hai khóa chính có thể giống nhau không?

Khóa chính phải chứa giá trị ĐỘC ĐÁO và không thể chứa giá trị NULL. Một bảng chỉ được có MỘT khóa chính ; .

Hai bản ghi có thể có cùng giá trị trong trường khóa chính không?

Nếu một bảng có khóa chính được xác định trên [các] trường bất kỳ, thì bạn không thể có hai bản ghi có cùng giá trị của [các] trường đó.

Có thể có 2 khóa chính trong một bảng không?

Mỗi bảng chỉ được có một khóa chính . Access có thể tự động tạo trường khóa chính cho bạn khi bạn tạo bảng hoặc bạn có thể chỉ định các trường mà bạn muốn sử dụng làm khóa chính.

Chủ Đề