Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 카디널리티란 무엇입니까?

<시간/>

MySQL에서 카디널리티라는 용어는 열에 넣을 수 있는 데이터 값의 고유성을 나타냅니다. 데이터를 검색, 클러스터링 및 정렬하는 기능에 영향을 미치는 일종의 속성입니다.

카디널리티는 다음과 같은 두 가지 유형이 될 수 있습니다. -

  • 낮은 카디널리티 − 열의 모든 값은 동일해야 합니다.

  • 높은 카디널리티 − 열의 모든 값은 고유해야 합니다.

중복 값을 제한하기 위해 열에 제약 조건을 두는 경우 높은 카디널리티의 개념이 사용됩니다.

높은 카디널리티

다음은 열의 모든 값이 고유해야 하는 High Cardinality의 예입니다.

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

테이블에 레코드 삽입하기.

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'

위의 경우 테이블에 동일한 레코드를 삽입하면 오류가 발생합니다.

모든 기록을 표시합니다.

mysql> select *from UniqueDemo1;

다음은 출력입니다. 중복 값의 경우 오류가 표시되기 때문입니다. 따라서 이전에 추가한 1개의 레코드만 현재 테이블에 있습니다.

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

낮은 카디널리티

낮은 카디널리티의 예.

테이블 생성 중.

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

중복 값이 ​​있는 레코드를 삽입합니다.

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)

모든 기록을 표시합니다.

mysql> select *from LowCardinality;

테이블을 생성하는 동안 UNIQUE를 포함하지 않았기 때문에 출력에 중복 값이 ​​표시됩니다.

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