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)