Thứ Năm, 10 tháng 2, 2022

Sự khác nhau giữa PRIMARY KEY và UNIQUE KEY

Sự khác biệt cơ bản giữa primary key và unique key là primary key không chấp nhận giá trị NULL trong khi giá trị NULL được cho phép trong các ràng buộc unique key.

Bảng so sánh

Tiêu chíPrimary keyUnique key
Công dụngNó được sử dụng để làm định danh duy nhất cho mỗi hàng trong bảng.Nó cũng xác định duy nhất một hàng, nhưng không là khóa chính.
NULLkhông chấp nhận giá trị NULLchấp nhận giá trị NULL
Số lượng khóa có thể được xác định trong bảngChỉ có duy nhất 1 primary key trong 1 bảngCó thể nhiều hơn 1
IndexTạo chỉ mục theo nhómTạo chỉ mục không phân cụm

Primary key

Một cột có thể được gọi là primary key của bảng nếu nó xác định duy nhất từng bộ (hàng) trong bảng đó. Nó thực thi các ràng buộc toàn vẹn đối với bảng. Chỉ có một primary key trong một bảng. Primary key không chấp nhận các giá trị trùng lặp và NULL. Primary key được chọn cẩn thận khi các thay đổi có thể xảy ra theo cách hiếm khi xảy ra, có nghĩa là khóa chính trong bảng rất hiếm khi thay đổi.

Hãy hiểu khái niệm về primary key với thông qua ví dụ sau. Ở đây chúng ta đang tạo một bảng có tên là bảng Student, bảng này có các thuộc tính như Roll_number, Name, Batch, Phone_number, Citizen_ID.

Trong ví dụ này, Roll_number không bao giờ được có giá trị giống hệt nhau và NULL, bởi vì mọi student đăng ký vào một trường đại học có một Roll_number duy nhất. Không có hai student nào có thể có cùng Roll_number và mỗi hàng trong bảng được xác định duy nhất bằng Roll_number của student. Vì vậy, chúng ta có thể đặt thuộc tính Roll_number làm primary key trong trường hợp cụ thể này.

Primary key có thể được tham chiếu bằng foreign key. Nó tạo ra một chỉ mục nhóm duy nhất trên bảng. Trong một chỉ mục được phân nhóm, các hàng dữ liệu được sắp xếp và lưu trữ trong một bảng hoặc các views trên cơ sở các giá trị chính của nó. Chỉ có thể có một chỉ mục nhóm trong một bảng, lý do đằng sau điều này là một hàng dữ liệu trong bảng chỉ có thể được sắp xếp theo một thứ tự.

Unique key

Tương tự như primary key, ràng buộc unique key cũng xác định duy nhất một bộ giá trị riêng lẻ trong một mối quan hệ. Nhưng, có những khác biệt nhất định giữa chúng. Một bảng có thể có nhiều hơn một khóa duy nhất. Ràng buộc unique key chỉ có thể chấp nhận một giá trị NULL cho một cột.

Hãy hiểu điều này với ví dụ tương tự, trong đó chúng ta có bảng Student với các thuộc tính Roll_number, Name, Batch, Phone_number và Citizen_ID. Thuộc tính Roll_number được gán primary key.

Tại đây, Citizen_ID có thể được chỉ định với các ràng buộc duy nhất trong đó mỗi mục trong cột Citizen_ID phải là duy nhất, không được trùng lặp vì mỗi công dân của một quốc gia phải có số nhận dạng duy nhất của mình. Tuy nhiên, nếu một student di cư từ một quốc gia khác, trong trường hợp đó, họ sẽ không có Citizen_ID và mục nhập có thể có giá trị NULL vì một NULL được cho phép trong ràng buộc duy nhất.

Các ràng buộc duy nhất cũng được tham chiếu bởi foreign key. Nó có thể được sử dụng khi ai đó muốn thực thi các ràng buộc trên một cột và một nhóm các cột không phải là primary key. Không giống như primary key, nó tạo chỉ mục không phân cụm. Các chỉ mục không phân cụm có cấu trúc khác biệt với các hàng dữ liệu. Mỗi mục nhập khóa-giá trị trong đó trỏ đến hàng dữ liệu chứa giá trị khóa do đó nó sử dụng con trỏ.

Tổng kết

Primary key và unique key đều phục vụ mục đích của một mã định danh duy nhất cho các hàng của bảng với các giá trị duy nhất trong một cột hoặc nhóm cột. Các ràng buộc khóa này được phân biệt đáng kể khi mỗi bảng có thể có nhiều nhất một khóa chính trong khi một bảng có thể có nhiều unique key không phải là primary key.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master