Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

THÔNG TIN CHỨNG TỪ KHÓA NGOẠI LỆ SQL:Hướng dẫn Cơ bản, Dễ dàng cho Người mới

Thành viên mới? Khi đó, một khóa ngoại SQL có thể là ngoại lai đối với bạn.

Bạn có thể đã nghe những ý kiến ​​khác nhau về khóa ngoại SQL. Nếu bạn chưa làm vậy, bạn sẽ sớm làm được. Hoặc trải nghiệm của bạn sẽ ảnh hưởng đến quan điểm của bạn. Điều chính cần biết là, khóa ngoại là phải có trong cơ sở dữ liệu quan hệ.

Tuy nhiên, một số nhà phát triển có thể loại bỏ hoặc bỏ qua các khóa ngoại khi gặp một số phức tạp. Vậy lam gi? Để sử dụng khóa ngoại hay không sử dụng nó? Có khi nào bạn không cần sử dụng chúng không?

Hướng dẫn này là để bạn thấy điều này quan trọng như thế nào. Bạn cũng sẽ biết một số lỗi trong mã và tìm hiểu cách khắc phục chúng. Bên cạnh đó, tất nhiên, chúng tôi sẽ sử dụng các ví dụ thực tế. Không có gì bạn không thể xử lý.

Khóa ngoại SQL là gì?

Những điều đầu tiên trước tiên. Khóa ngoại trong SQL là gì? Nói một cách dễ hiểu, nó là một chìa khóa liên kết 2 bảng. Giả sử bạn có một bảng mẹ và một bảng con. Có một số điểm chung khiến chúng trở thành cha và con - chìa khóa liên quan đến 2 bảng này.

Tuy nhiên, trong cơ sở dữ liệu SQL, khóa ngoại không chỉ liên quan đến các bảng. Nó thực thi mối quan hệ. Đó là lý do tại sao nó được gọi là ràng buộc khóa ngoại.

Sẽ xảy ra lỗi nếu bạn cố gắng thêm bản ghi con có giá trị khóa ngoại không tồn tại trong các khóa chính của bảng mẹ. Sau đó, chúng ta sẽ thấy các mẫu mã minh họa điều này.

Bảng nào nên có ràng buộc về khóa ngoại SQL?

Bảng con có thể có khóa ngoại. Một khóa ngoại có thể đang tham chiếu đến một bảng khác. Ngoài ra, có thể có một số khóa ngoại trong bảng “con”. Trong SQL Server, khóa ngoại có thể tham chiếu khóa chính hoặc khóa duy nhất trong bảng khác.

Làm thế nào về Tự tham khảo?

Điều này vượt ra khỏi định nghĩa chung về khóa ngoại. A tự tham khảo nghĩa là bạn có thể chỉ định khóa ngoại tham chiếu một cột khác trong cùng một bảng . SQL Server, MySQL và Oracle hỗ trợ điều này.

Tự tham chiếu có thể áp dụng khi bạn muốn tạo thứ bậc như mối quan hệ giữa người quản lý và nhân viên. Vẫn được phép, hầu hết các triển khai khóa ngoại đều nằm giữa 2 bảng.

Sau đó, chúng tôi sẽ có các ví dụ.

4 Lợi ích của việc Sử dụng Khóa Ngoại SQL

Hãy cùng khám phá khóa chính và khóa ngoại trong SQL một cách chi tiết. Điều gì làm cho các khóa ngoại trở thành thứ bắt buộc phải có đối với cơ sở dữ liệu SQL? Hãy xem xét 4 điểm (ở đây, cú pháp ràng buộc sẽ không quan trọng).

1. Tránh "Thiếu" Dữ liệu

Dữ liệu “bị thiếu” là các giá trị khóa ngoại từ bảng con không có giá trị khóa chính được liên kết từ bảng mẹ. Họ cũng được gọi là hàng mồ côi. Khi điều đó xảy ra, chúng ta có thể nói rằng cơ sở dữ liệu có ít hoặc không có tính toàn vẹn tham chiếu.

Với các ràng buộc khóa ngoại được thực thi, dữ liệu “bị thiếu” sẽ hoàn toàn không xảy ra. Công cụ cơ sở dữ liệu sẽ không cho phép xóa giá trị khóa chính được tham chiếu bởi một bảng khác. Tương tự như vậy, việc chèn khóa ngoại vào bảng con không tồn tại trong khóa chính của bảng mẹ sẽ gây ra lỗi.

Điều tồi tệ nhất có thể xảy ra nếu bạn không sử dụng các ràng buộc khóa ngoại là gì? Dưới đây là một số:

  • Khách hàng sẽ không nhận được sản phẩm mà họ đã trả tiền.
  • Việc điều trị không được thực hiện cho bệnh nhân.
  • Thiếu danh sách kiểm tra bỏ qua các biện pháp phòng ngừa an toàn.

Bạn có thể xử lý nội dung này bên ngoài cơ sở dữ liệu, nhưng bạn phải mã hóa nó. Sẽ có thêm thông tin về điều này.

Giả sử một nhà phát triển trong tổ chức của bạn đã xử lý cùng một ràng buộc bên ngoài cơ sở dữ liệu. Liệu anh ta có chịu trách nhiệm và khắc phục sự cố trong quá trình sản xuất nếu mã lỗi không? Tôi không nghĩ vậy. Và nếu bạn là quản trị viên cơ sở dữ liệu thì sao? Sau đó, bạn sẽ phải dọn dẹp đống lộn xộn của chúng. Không quá khích nếu bạn hỏi tôi.

2. Tránh các báo cáo không nhất quán

Nó liên quan đến điểm đầu tiên. Nếu một số dữ liệu bị “thiếu”, các tổng số không nhất quán sẽ xuất hiện trong các báo cáo khác nhau. Thông tin chi tiết không khớp với phần tóm tắt. Các hàng mồ côi cộng lại thành tổng của các bản tóm tắt. Trong khi đó, báo cáo chi tiết không nắm bắt được các hàng mồ côi do có liên kết bên trong với các bảng mẹ.

Nếu nhiệm vụ của bạn là giữ cho cơ sở dữ liệu của bạn ở tình trạng tốt, bạn cũng sẽ dọn dẹp đống hỗn độn này.

3. Không cần mã để tránh hàng mồ côi

Các ràng buộc khóa ngoại hoạt động giống như tác nhân tự làm sạch. Thay vì bạn dọn dẹp đống lộn xộn, cơ sở dữ liệu sẽ làm điều đó bằng cách không cho phép các hàng bị mất tích. Các ràng buộc khóa nước ngoài cũng hoạt động như cảnh sát. Họ bắt giữ logic bị lỗi gây ra các hàng bị lỗi, coi nó như một tội ác được thực hiện bên ngoài cơ sở dữ liệu.

Bạn có muốn một cơ sở dữ liệu sáng bóng không có các hàng mồ côi không? Tất nhiên, bạn có. Nếu bạn muốn phân tích dữ liệu vào một ngày nào đó, bạn rất vui vì mình đã sử dụng khóa ngoại. Cơ sở dữ liệu này sẽ là một nguồn tốt để sao chép dữ liệu cần thiết vào vùng tổ chức của bạn.

4. Hiểu nhanh các mối quan hệ của bảng trong một sơ đồ

SQL Server Management Studio có một công cụ sơ đồ tích hợp sẵn cho cơ sở dữ liệu của bạn. Các khóa chính và khóa ngoài làm cho sơ đồ cơ sở dữ liệu có nhiều thông tin trong nháy mắt. Tuy nhiên, nó sẽ phụ thuộc vào số lượng bảng với các mối quan hệ mà bạn đã đưa vào sơ đồ.

Sơ đồ giúp các thành viên mới trong nhóm hiểu cấu trúc dữ liệu. Đối với các đồng đội cấp cao, nó cũng có thể hữu ích như một tài liệu.

Khi Khóa ngoại SQL có thể là “Sự cố” (cộng với Cách khắc phục)

Để di chuyển dữ liệu cũ sang cơ sở dữ liệu mới, bạn sẽ chèn hàng loạt bản ghi. Nếu cơ sở dữ liệu nguồn có tính toàn vẹn tham chiếu thấp, sẽ rất khó để chèn các bản ghi từ nguồn. Nguyên nhân là do lỗi khóa ngoại xuất hiện ở đây và ở đó.

Có cách nào khắc phục không? Bạn có 2 lựa chọn.

  1. Trước tiên, hãy đảm bảo điền các bảng tham chiếu hoặc bảng mẹ. Sau đó, điền các bảng con. Một điều phức tạp là chạy rất chậm. Trong các trường hợp khác, nhiều lỗi ràng buộc khóa ngoại xảy ra hơn. Nếu trường hợp sau xảy ra, bạn cần đánh giá lại trình tự các lần chèn và đảm bảo các khóa chính được đưa vào trước. Nếu có vấn đề "chạy chậm", hãy xem xét tùy chọn tiếp theo.
  2. Tạm thời vô hiệu hóa các khóa ngoại và bật chúng sau khi quá trình di chuyển hoàn tất (và làm sạch). Bạn có thể thực hiện trong SQL Server Management Studio hoặc sử dụng T-SQL ALTER TABLE. Tuy nhiên, nói thì dễ hơn làm. Lúc này, bạn cần thêm sự kiên nhẫn bên cạnh sự thông minh và ý chí. Sau đó, chúng ta sẽ tìm thấy cú pháp để tắt và bật lại khóa ngoại.

Một điều khác cần xem xét là sử dụng cơ sở dữ liệu làm khu vực tổ chức cho OLAP hoặc phân tích dữ liệu. Giả sử cơ sở dữ liệu giao dịch nguồn sạch sẽ khỏi các hàng mồ côi. Hoặc bạn có thể quản lý để tránh những hàng này thông qua mã. Sau đó, bạn có thể chọn không sử dụng khóa ngoại. Khóa ngoại sẽ làm chậm quá trình chèn và cập nhật hàng loạt, đặc biệt là trên các bộ dữ liệu khổng lồ.

3 cách dễ dàng để thêm, chỉnh sửa và xóa các ràng buộc về khóa ngoại trong SQL

Thêm, chỉnh sửa hoặc xóa khóa ngoài cần những gì? Thật dễ dàng với 3 mẹo sau.

Hai bước đầu tiên sử dụng giao diện người dùng đồ họa. Các công cụ như SQL Server Management Studio hoặc dbForge Studio cho SQL Server là những ứng cử viên rất tốt. Cái thứ ba sẽ sử dụng mã T-SQL. Việc lựa chọn GUI hoặc mã T-SQL tùy thuộc vào tình huống.

1. Sử dụng Trình thiết kế bảng để thêm, chỉnh sửa và xóa ràng buộc khóa ngoại SQL

Trong SQL có thể thêm các ràng buộc khóa ngoại khi tạo hoặc thay đổi cấu trúc bảng bằng Trình thiết kế bảng trong SSMS. Hình 1 dưới đây cho thấy cách truy cập nó từ menu chính khi cấu trúc bảng đang mở.

Một tùy chọn khác là nhấp chuột phải vào bất kỳ đâu từ trình thiết kế bảng và chọn Mối quan hệ từ menu ngữ cảnh:

Khi bạn đã chọn Mối quan hệ , Mối quan hệ chính đối ngoại cửa sổ sẽ bật lên:

Trong Mối quan hệ chính đối ngoại , bạn có thể chọn thêm khóa ngoại mới hoặc chỉnh sửa / xóa khóa hiện có.

Nếu bạn chọn thêm hoặc chỉnh sửa, hãy nhấp để mở rộng Bảng và Cột Các thông số kỹ thuật. Sau đó, nhấp vào dấu chấm lửng để xác định hoặc chỉnh sửa bảng khóa chính và khóa ngoại.

Từ đó, bạn có thể chỉ ra các cột khóa chính và khóa ngoài.

Sau khi xác định khóa chính và khóa ngoại, hãy nhấp vào OK . Sau đó, điều hướng trở lại trình thiết kế bảng và lưu các thay đổi.

2. Sử dụng Sơ đồ cơ sở dữ liệu để thêm, chỉnh sửa và xóa ràng buộc khóa ngoại SQL

Bạn có thể sử dụng Sơ đồ cơ sở dữ liệu để tạo các ràng buộc khóa ngoại SQL. Hình 5 cho thấy cách tạo mối quan hệ giữa hai bảng bằng cách nhấp vào bảng khóa ngoại và kéo nó vào bảng khóa chính.

Khi bạn thả chuột, các nút Bảng và Cột cửa sổ sẽ bật lên giống như trong Hình 4. Sau đó, bạn có thể chỉ ra các cột khóa chính và khóa ngoại. Sau đó nhấp vào OK.

Để chỉnh sửa mối quan hệ hiện có, hãy nhấp chuột phải vào mối quan hệ trong sơ đồ. Sau đó chọn Thuộc tính :

Sau đó, trong Thuộc tính cửa sổ, mở rộng Bảng và Cột và nhấp vào dấu chấm lửng nút:

Sau khi nhấp vào dấu chấm lửng nút Bảng và Cột cửa sổ sẽ xuất hiện. Bạn có thể thay đổi cột chính và cột khóa ngoài (tham khảo lại Hình 4 ở trên).

Trong khi đó, xóa mối quan hệ yêu cầu nhấp chuột phải vào hiện có mối quan hệ. Chọn Xóa các mối quan hệ khỏi Cơ sở dữ liệu và nhấp vào khi được nhắc.

3. Sử dụng T-SQL để thêm, chỉnh sửa và xóa ràng buộc khóa ngoại SQL

Cách thứ ba để thêm khóa ngoại là thông qua mã T-SQL. Bạn có thể sử dụng SQL CREATE TABLE và thêm ràng buộc khóa ngoại. Hoặc bạn cũng có thể sử dụng ALTER TABLE để thêm ràng buộc này sau khi tạo bảng.

Đây là cú pháp để sử dụng TẠO BẢNG:

-- Single-column foreign key
CREATE TABLE Table2
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
 col1 INT NULL REFERENCES Table1(col1)
)
GO

Sau khi xác định tên và kiểu cột, bạn có thể thêm TÀI LIỆU THAM KHẢO vào bảng và cột. Cú pháp trên hiển thị the Table1 bảng trên col1 cột. Lưu ý rằng tên cột trên cả hai bảng phải giống nhau để hợp lệ cho các khóa ngoại.

Cú pháp trên dành cho khóa ngoại một cột. Nếu bạn cần nhiều cột làm khóa ngoại, hãy sử dụng mệnh đề NGOẠI KHÓA như bên dưới:

-- Multiple-column foreign key
CREATE TABLE Table2
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
 col1 INT NOT NULL,
 col2 INT NOT NULL,
 col3 VARCHAR(10) NULL
 CONSTRAINT FK_Table1_Table2 FOREIGN KEY(col1, col2)
	REFERENCES Table1(col1,col2)
)
GO

Sau khi tạo bảng, bạn có thể thêm khóa ngoại bằng ALTER TABLE. Đây là cú pháp:

ALTER TABLE Table2 WITH CHECK ADD CONSTRAINT FK_Table1_Table2_2 FOREIGN KEY(col3)
	REFERENCES Table3(col1)
GO

Để xóa ràng buộc khóa ngoại, bạn có thể sử dụng ALTER TABLE với DROP CONSTRAINT:

ALTER TABLE Table2 
DROP CONSTRAINT FK_Table1_Table2_2
GO

Bây giờ, chúng ta có thể tóm tắt 3 cách để thêm, chỉnh sửa và xóa khóa ngoại:

Ví dụ về ràng buộc khóa ngoại trong SQL (MySQL)

Bảng con có 1 tham chiếu đến bảng mẹ

-- Single Reference
CREATE TABLE [dbo].[Countries](
	[CountryID] [int] IDENTITY(1,1) NOT NULL,
	[Country] [nvarchar](50) NOT NULL,
	[ContinentID] [int] NULL,
	[Modified] [datetime] NOT NULL,
 CONSTRAINT [PK_Country] PRIMARY KEY CLUSTERED 
(
	[CountryID] ASC
))
GO

ALTER TABLE [dbo].[Countries]  WITH CHECK ADD CONSTRAINT [FK_Countries_Continent] FOREIGN KEY([ContinentID])
REFERENCES [dbo].[Continent] ([ContinentID])

GO

ALTER TABLE [dbo].[Countries] CHECK CONSTRAINT [FK_Countries_Continent]
GO

Để hình dung mối quan hệ này, hãy xem Hình 9 bên dưới:

ContinentID là khóa liên kết hai bảng với nhau.

Bảng con có nhiều tham chiếu

SportsCar bảng có nhiều tham chiếu đến ba bảng khác nhau:

-- Multiple References
CREATE TABLE [dbo].[SportsCars](
	[SportsCarID] [int] IDENTITY(1,1) NOT NULL,
	[ManufacturerID] [int] NULL,
	[StyleID] [int] NULL,
	[CountryID] [int] NULL,
	[Model] [nvarchar](50) NOT NULL,
	[Years] [varchar](50) NOT NULL,
	[Notes] [varchar](255) NOT NULL,
	[Modified] [datetime] NOT NULL,
 CONSTRAINT [PK_SportsCars] PRIMARY KEY CLUSTERED 
(
	[SportsCarID] ASC
))
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Country] FOREIGN KEY([CountryID])
REFERENCES [dbo].[Countries] ([CountryID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Country]
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Manufacturer] FOREIGN KEY([ManufacturerID])
REFERENCES [dbo].[Manufacturers] ([ManufacturerID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Manufacturer]
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Styles] FOREIGN KEY([StyleID])
REFERENCES [dbo].[Styles] ([StyleID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Styles]
GO

Đây là cách nó xuất hiện trong sơ đồ cơ sở dữ liệu:

Tự tham khảo

Cấu trúc phân cấp vị trí hiển thị tự tham chiếu trong bảng sau:

CREATE TABLE [dbo].[Ranks](
	[RankId] [int] IDENTITY(1,1) NOT NULL,
	[Rank] [varchar](50) NOT NULL,
	[RankLevel] [smallint] NOT NULL,
	[RankParentId] [int] NULL,
 CONSTRAINT [PK_Ranks] PRIMARY KEY CLUSTERED 
(
	[RankId] ASC
)) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Ranks] WITH CHECK ADD CONSTRAINT [FK_Ranks_Ranks] FOREIGN KEY([RankParentId])
REFERENCES [dbo].[Ranks] ([RankId])
GO

ALTER TABLE [dbo].[Ranks] CHECK CONSTRAINT [FK_Ranks_Ranks]
GO

Sơ đồ của tự tham chiếu này rất đơn giản. Dòng trỏ đến cùng một bảng trong tự tham chiếu.

BẬT CẬP NHẬT và BẬT XÓA

Với BẬT CẬP NHẬT CASCADE, việc cập nhật giá trị cột khóa chính cũng sẽ cập nhật các giá trị khóa ngoại trong các bảng liên quan. Trong khi đó, khi bạn sử dụng ON DELETE CASCADE, việc xóa khóa chính cũng sẽ xóa các khóa ngoại. Mặc định cho BẬT CẬP NHẬT và BẬT XÓA là KHÔNG CÓ HÀNH ĐỘNG.

Dưới đây là một ví dụ về CẬP NHẬT và XÓA CASCADE:

ALTER TABLE [dbo].[Countries] WITH CHECK ADD CONSTRAINT [FK_Countries_Continent] FOREIGN KEY([ContinentID])
REFERENCES [dbo].[Continent] ([ContinentID]) 
ON UPDATE CASCADE 
ON DELETE CASCADE
GO

Vô hiệu hóa ràng buộc khóa ngoại SQL

Thao tác sau sẽ vô hiệu hóa ràng buộc khóa ngoại hiện có. Lưu ý rằng mối quan hệ vẫn tồn tại.

ALTER TABLE [dbo].[SportsCars] NOCHECK CONSTRAINT [FK_SportsCars_Country]
GO

Đây không phải là mặc định và nó không được khuyến khích. Nhưng để tăng tốc độ chèn và cập nhật hàng loạt, bạn có thể tạm thời tắt khóa ngoại như cách trên. Sau khi hoàn tất, bạn phải chuyển lại bằng CHECK CONSTRAINT.

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Country]
GO

Gotchas và Fixes

Phần này sẽ cho bạn biết điều gì sẽ xảy ra khi bạn CHÈN, CẬP NHẬT hoặc XÓA bản ghi bằng khóa ngoại. Điều này cũng giả định rằng các khóa ngoại không bị vô hiệu hóa với NOCHECK CONSTRAINT. Điều này sẽ giúp bạn khi bạn gặp phải những sự cố phổ biến này.

Trên INSERT

-- This will cause an error because countryID = 47 does not exist in the Countries table
INSERT INTO SportsCars 
(ManufacturerID, StyleID, CountryID, Model, Years, Notes) 
VALUES (108, 10, 47, 'F2', '2021', 'Limited Edition')
GO

Đây là thông báo lỗi:

Msg 547, Level 16, State 0, Line 56
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_SportsCars_Country". The conflict occurred in database "Vehicles", table "dbo.Countries", column 'CountryID'.
The statement has been terminated.

Cách khắc phục :Thêm CountryID =47 vào Quốc gia bàn đầu tiên. Sau đó, chạy lại câu lệnh INSERT ở trên. Trình tự bắt đầu với việc chèn các bản ghi vào bảng mẹ, sau đó vào bảng con.

Vào CẬP NHẬT

-- Update CountryID to 47 will trigger an error.
UPDATE SportsCars
SET CountryID = 47
WHERE ManufacturerID = 108
GO

Đây là lỗi CẬP NHẬT:

Msg 547, Level 16, State 0, Line 60
The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_SportsCars_Country". The conflict occurred in database "Vehicles", table "dbo.Countries", column 'CountryID'.
The statement has been terminated.

Cách khắc phục :Thêm CountryID =47 vào Quốc gia bàn. Sau đó, chạy lại câu lệnh UPDATE.

Khi XÓA

-- This will trigger an error because ManufacturerID = 108 is referenced in the SportsCars table
DELETE FROM Manufacturers
WHERE ManufacturerID = 108

Mã này sẽ gây ra lỗi như sau:

Msg 547, Level 16, State 0, Line 64
The DELETE statement conflicted with the REFERENCE constraint "FK_SportsCars_Manufacturer". The conflict occurred in database "Vehicles", table "dbo.SportsCars", column 'ManufacturerID'.
The statement has been terminated.

Cách khắc phục :Xóa các bản ghi tương ứng khỏi SportsCars bảng với ManufacturerID =108. Sau đó, chạy lại câu lệnh DELETE ở trên. Một cách khác là bật BẬT XÓA CASCADE nếu có. Trình tự bắt đầu bằng việc xóa bản ghi khỏi bảng con, sau đó - khỏi bảng mẹ.

Bài học rút ra

Vì vậy, các khóa ngoại có còn xa lạ với bạn không?

Hãy tóm tắt lại những gì chúng ta đã học được cho đến nay.

  • Các khóa ngoại liên kết hai bảng (hoặc một bảng khi sử dụng tự tham chiếu). Bạn cần chúng để đảm bảo tính toàn vẹn của tham chiếu.
  • Bạn có thể sử dụng công cụ GUI hoặc T-SQL để thêm, chỉnh sửa hoặc xóa các ràng buộc khóa ngoại.
  • Đối với các công cụ GUI, bạn có thể sử dụng SQL Server Management Studio hoặc dbForge Studio cho SQL Server. Cả hai đều cung cấp sơ đồ cơ sở dữ liệu và trình thiết kế bảng để tạo bảng có khóa chính và khóa ngoài.
  • CREATE TABLE và ALTER TABLE phù hợp để thêm và xóa các ràng buộc khóa ngoại.
  • Bạn có thể tạm thời vô hiệu hóa các khóa ngoại bằng NOCHECK CONSTRAINT trong ALTER TABLE. Điều này sẽ tăng tốc độ chèn và cập nhật hàng loạt. Nhưng hãy nhớ bật lại bằng CHECK CONSTRAINT.
  • Để tránh mắc lỗi với khóa ngoại, hãy đảm bảo làm theo đúng trình tự. Đối với CHÈN và CẬP NHẬT, trước tiên hãy chèn vào bảng mẹ, sau đó chèn vào các bảng con. Đối với DELETE, trước tiên hãy xóa các bản ghi con, sau đó xóa các bản ghi mẹ.

Bạn có muốn thêm điều gì đó để giúp người mới nắm vững khóa ngoại không? Nhận xét phần mở ra cho những ý tưởng sáng sủa của bạn. Nếu bạn thích bài đăng này, hãy chia sẻ nó trên các nền tảng mạng xã hội yêu thích của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách theo dõi những gì người dùng làm

  2. Sử dụng JShell trong Java 9 trong NetBeans 9.0, Phần 3

  3. Phân tích dữ liệu ODBC trong IBM SPSS

  4. Phỏng vấn Oren Eini của RavenDB về quản lý cơ sở dữ liệu, phân tích và bảo mật

  5. Nơi làm việc gặp phải:Đòi lại không gian từ cơ sở dữ liệu quá khổ