Computer >> Máy Tính >  >> Lập trình >> MySQL

Cardinality trong MySQL là gì?

Trong MySQL, thuật ngữ cardinality đề cập đến tính duy nhất của các giá trị dữ liệu có thể được đưa vào các cột. Đây là một loại thuộc tính ảnh hưởng đến khả năng tìm kiếm, phân cụm và sắp xếp dữ liệu.

Cardinality có thể có hai loại như sau -

  • Bản số thấp - Tất cả các giá trị cho một cột phải giống nhau.

  • Số lượng cao - Tất cả các giá trị cho một cột phải là duy nhất.

Khái niệm về bản số cao được sử dụng nếu chúng ta đặt một ràng buộc đối với một cột để hạn chế các giá trị trùng lặp.

Bản số cao

Sau đây là một ví dụ về Số lượng cao, trong đó tất cả các giá trị của một cột phải là duy nhất.

mysql> create table UniqueDemo1
   -> (
   -> id int,
   -> name varchar(100),
   ->UNIQUE(id,name)
   -> );
Query OK, 0 rows affected (0.81 sec

Chèn các bản ghi vào bảng.

mysql> insert into UniqueDemo1 values(1,'John');
Query OK, 1 row affected (0.18 sec)

mysql> insert into UniqueDemo1 values(1,'John');
ERROR 1062 (23000): Duplicate entry '1-John' for key 'id'

Ở phần trên, chúng tôi gặp lỗi khi chèn các bản ghi giống nhau vào bảng.

Để hiển thị tất cả các bản ghi.

mysql> select *from UniqueDemo1;

Sau đây là kết quả đầu ra. Vì, đối với giá trị trùng lặp, nó hiển thị lỗi; do đó, hiện chỉ có 1 bản ghi trong bảng mà chúng tôi đã thêm trước đó.

+------+------+
| id   | name |
+------+------+
|    1 | John |
+------+------+
1 row in set (0.00 sec)

Mật độ thấp

Ví dụ về Cardinality thấp.

Tạo bảng.

mysql> create table LowCardinality
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.71 sec)

Chèn các bản ghi có giá trị trùng lặp.

mysql> insert into LowCardinality values(1,'John');
Query OK, 1 row affected (0.19 sec)

mysql> insert into LowCardinality values(1,'John');
Query OK, 1 row affected (0.14 sec)

Hiển thị tất cả các bản ghi.

mysql> select *from LowCardinality;

Đầu ra hiển thị các giá trị trùng lặp, vì chúng tôi đã không bao gồm UNIQUE khi tạo bảng.

+------+------+
| id   | name |
+------+------+
|    1 | John |
|    1 | John |
+------+------+
2 rows in set (0.00 sec)