Định nghĩa rõ ràng về ràng buộc cơ sở dữ liệu là gì? Tại sao các ràng buộc lại quan trọng đối với cơ sở dữ liệu? Các loại ràng buộc là gì?
Định nghĩa rõ ràng về ràng buộc cơ sở dữ liệu là gì? Tại sao các ràng buộc lại quan trọng đối với cơ sở dữ liệu? Các loại ràng buộc là gì?
Câu trả lời:
Các ràng buộc là một phần của định nghĩa lược đồ cơ sở dữ liệu.
Một ràng buộc thường được liên kết với một bảng và được tạo bằng câu lệnh SQL CREATE CONSTRAINT
hoặc CREATE ASSERTION
.
Chúng xác định các thuộc tính nhất định mà dữ liệu trong cơ sở dữ liệu phải tuân theo. Chúng có thể áp dụng cho một cột, toàn bộ bảng, nhiều bảng hoặc toàn bộ lược đồ. Một hệ thống cơ sở dữ liệu đáng tin cậy đảm bảo rằng các ràng buộc luôn giữ (ngoại trừ có thể bên trong một giao dịch, được gọi là các ràng buộc hoãn lại).
Các loại ràng buộc phổ biến là:
Để hiểu tại sao chúng ta cần các ràng buộc, trước tiên bạn phải hiểu giá trị của tính toàn vẹn dữ liệu.
Tính toàn vẹn của dữ liệu đề cập đến tính hợp lệ của dữ liệu. Dữ liệu của bạn có hợp lệ không? Dữ liệu của bạn có đại diện cho những gì bạn đã thiết kế chúng không?
Bạn có thể nghĩ đến những câu hỏi kỳ lạ mà tôi hỏi, nhưng đáng buồn thay, cơ sở dữ liệu thường chứa đầy dữ liệu rác, tham chiếu không hợp lệ đến các hàng trong các bảng khác, đã biến mất từ lâu ... và các giá trị không có ý nghĩa gì đối với logic nghiệp vụ giải pháp của bạn lâu hơn.
Tất cả những thứ rác rưởi này không chỉ có xu hướng làm giảm hiệu suất của bạn mà còn là một quả bom hẹn giờ theo logic ứng dụng của bạn mà cuối cùng sẽ truy xuất dữ liệu mà nó không được thiết kế để hiểu.
Ràng buộc là các quy tắc bạn tạo tại thời điểm thiết kế để bảo vệ dữ liệu của bạn không bị hỏng. Điều cần thiết cho sự tồn tại lâu dài của đứa con trái tim của bạn là một giải pháp cơ sở dữ liệu. Nếu không có ràng buộc, giải pháp của bạn chắc chắn sẽ giảm dần theo thời gian và mức độ sử dụng nhiều.
Bạn phải thừa nhận rằng thiết kế cơ sở dữ liệu của bạn chỉ là sự ra đời của giải pháp của bạn. Ở đây sau khi nó phải tồn tại (hy vọng) một thời gian dài, và chịu đựng tất cả các loại hành vi (kỳ lạ) của người dùng cuối của nó (tức là các ứng dụng khách). Nhưng giai đoạn phát triển thiết kế này là rất quan trọng cho sự thành công lâu dài của giải pháp của bạn! Hãy tôn trọng nó, dành thời gian và sự chú ý mà nó cần.
Một nhà thông thái từng nói: "Dữ liệu phải tự bảo vệ mình!" . Và đây là những gì ràng buộc làm. Đó là các quy tắc giữ cho dữ liệu trong cơ sở dữ liệu của bạn hợp lệ nhất có thể.
Có nhiều cách để thực hiện việc này, nhưng về cơ bản, chúng chủ yếu là:
sys.check_constraints
chế độ xem trong cơ sở dữ liệu mẫu AdventureWorksNhư tôi đã gợi ý ở đây, cần có một số cân nhắc kỹ lưỡng để xây dựng phương pháp hạn chế tốt nhất và phòng thủ nhất cho thiết kế cơ sở dữ liệu của bạn. Trước tiên, bạn cần biết các khả năng và hạn chế của các loại ràng buộc khác nhau ở trên. Đọc thêm có thể bao gồm:
Các ràng buộc chính đối với nước ngoài - Microsoft
Ràng buộc khóa ngoại - w3schools
Chúc may mắn! ;)
Ràng buộc không là gì khác ngoài các quy tắc trên dữ liệu. Dữ liệu nào là hợp lệ và dữ liệu nào không hợp lệ có thể được xác định bằng các ràng buộc. Vì vậy, tính toàn vẹn của dữ liệu có thể được duy trì. Sau đây là các ràng buộc được sử dụng rộng rãi:
NOT NULL
. Ở đây chúng ta có thể chỉ định dữ liệu nào chúng ta có thể nhập cho cột cụ thể đó và dữ liệu nào không được mong đợi cho cột đó.Các ràng buộc quy định giá trị nào là hợp lệ cho dữ liệu trong cơ sở dữ liệu. Ví dụ: bạn có thể thực thi một giá trị không phải là null (một NOT NULL
ràng buộc) hoặc nó tồn tại dưới dạng một ràng buộc duy nhất trong một bảng khác (một FOREIGN KEY
ràng buộc) hoặc giá trị đó là duy nhất trong bảng này (một UNIQUE
ràng buộc hoặc có thể là PRIMARY KEY
ràng buộc tùy thuộc vào yêu cầu của bạn ). Các ràng buộc chung hơn có thể được thực hiện bằng cách sử dụng các CHECK
ràng buộc.
Các tài liệu MSDN cho năm 2008 trở ngại SQL Server có lẽ là nơi khởi đầu tốt nhất của bạn.
UNIQUE
ràng buộc (trong đó PRIMARY KEY
ràng buộc là một biến thể). Kiểm tra xem tất cả các giá trị của một trường đã cho là duy nhất trên bảng. Đây là X
ràng buộc -axis (bản ghi)
CHECK
ràng buộc (trong đó NOT NULL
ràng buộc là một biến thể). Kiểm tra xem một điều kiện nhất định có giữ cho biểu thức trên các trường của cùng một bản ghi hay không. Đây là Y
ràng buộc -axis (các trường)
FOREIGN KEY
hạn chế. Kiểm tra xem giá trị của trường có được tìm thấy trong số các giá trị của trường trong bảng khác không. Đây là Z
ràng buộc -axis (bảng).
CHECK
ràng buộc, vậy tại sao lại phân loại nó thành khác nhau? tức là " Y
-axis" (bất kể điều đó có nghĩa là gì).
FOREIGN KEY
một CHECK
ràng buộc?
SELECT
truy vấn đơn thuần . Bạn không thể sử dụng truy vấn con (hoặc bất kỳ cấu trúc nào khác tham chiếu đến các giá trị bên ngoài bản ghi hiện tại) trong các CHECK
ràng buộc trong SQL Server
.
Cơ sở dữ liệu là sự trình bày lôgic trên máy tính của một mô hình khái niệm (hoặc kinh doanh), bao gồm một tập hợp các quy tắc kinh doanh không chính thức. Các quy tắc này là ý nghĩa mà người dùng hiểu được của dữ liệu. Bởi vì máy tính chỉ hiểu được các biểu diễn chính thức, các quy tắc nghiệp vụ không thể được biểu diễn trực tiếp trong cơ sở dữ liệu. Chúng phải được ánh xạ tới một biểu diễn chính thức, một mô hình logic, bao gồm một tập hợp các ràng buộc toàn vẹn. Các ràng buộc này - lược đồ cơ sở dữ liệu - là biểu diễn logic trong cơ sở dữ liệu của các quy tắc nghiệp vụ và do đó, là ý nghĩa được DBMS hiểu của dữ liệu. Theo đó, nếu DBMS không biết và / hoặc không thực thi toàn bộ các ràng buộc đại diện cho các quy tắc kinh doanh, thì nó sẽ không hiểu đầy đủ về ý nghĩa của dữ liệu và do đó,
Lưu ý: Ý nghĩa “được hiểu” của DBMS - các ràng buộc về tính toàn vẹn - không giống với ý nghĩa mà người dùng hiểu - các quy tắc nghiệp vụ - nhưng, mặc dù mất đi một số ý nghĩa, chúng tôi có được khả năng cơ giới hóa các suy luận logic từ dữ liệu.
"Một lớp lỗi cũ" của Fabian Pascal
Về cơ bản có 4 loại ràng buộc chính trong SQL:
Ràng buộc miền: nếu một trong các giá trị thuộc tính được cung cấp cho một bộ giá trị mới không thuộc miền thuộc tính được chỉ định
Ràng buộc khóa: nếu giá trị của thuộc tính khóa trong một bộ mới đã tồn tại trong bộ khác trong quan hệ
Tính toàn vẹn tham chiếu: nếu giá trị khóa ngoại trong một bộ giá trị mới tham chiếu đến giá trị khóa chính không tồn tại trong quan hệ được tham chiếu
Tính toàn vẹn của thực thể: nếu giá trị khóa chính là rỗng trong một bộ giá trị mới
ràng buộc là điều kiện, có thể xác nhận điều kiện cụ thể. Các ràng buộc liên quan đến cơ sở dữ liệu là tính toàn vẹn của miền, tính toàn vẹn của thực thể, tính toàn vẹn của tham chiếu, ràng buộc về tính toàn vẹn do người dùng xác định, v.v.