Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블에서 날짜를 참조하는 고유 키 생성 방법

날짜를 참조하는 고유 키란?

MySQL 테이블에서 날짜 컬럼을 참조하는 고유 키(Unique Key)를 생성하려면 두 개 이상의 컬럼을 조합한 복합 고유 키(composite unique key)를 사용해야 합니다. 예를 들어, 동일한 클라이언트가 같은 마감일로 중복 등록되는 것을 방지하고 싶다면 ID 컬럼과 날짜 컬럼을 함께 묶어 고유 제약 조건을 설정하면 됩니다.

기본 문법

다음은 날짜를 참조하는 고유 키를 생성하는 기본적인 CREATE TABLE 문법입니다.

CREATE TABLE yourTableName
(
    yourIdColumnName dataType,
    yourDateColumnName dataType,
    ...
    UNIQUE KEY(yourIdColumnName, yourDateColumnName)
);

실제 테이블 생성 예제

문법을 더 쉽게 이해하기 위해 실제 테이블을 생성해 보겠습니다. 아래 쿼리는 클라이언트 정보와 프로젝트 마감일을 저장하는 테이블에 복합 고유 키를 적용한 예입니다.

mysql> create table keyReferringToDateDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Client_Id int,
    -> ClientProjectDeadline date,
    -> ClientName varchar(100),
    -> ClientAge int,
    -> ClientCountryName varchar(20),
    -> UNIQUE KEY(Client_Id, ClientProjectDeadline)
    -> );
Query OK, 0 rows affected (0.63 sec)

위 예제에서 핵심은 마지막 줄의 UNIQUE KEY(Client_Id, ClientProjectDeadline) 부분입니다. 이렇게 설정하면 같은 클라이언트 ID가 동일한 프로젝트 마감일로 두 번 등록될 수 없으며, 데이터 무결성이 자동으로 보장됩니다.

SHOW CREATE TABLE로 구조 확인하기

테이블이 올바르게 생성되었는지 확인하려면 SHOW CREATE 명령어를 사용합니다.

mysql> show create table keyReferringToDateDemo;

실행 결과는 다음과 같습니다.

+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                  | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| keyReferringToDateDemo | CREATE TABLE `keyreferringtodatedemo` (`Id` int(11) NOT NULL AUTO_INCREMENT,`Client_Id` int(11) DEFAULT NULL,`ClientProjectDeadline` date DEFAULT NULL,`ClientName` varchar(100) DEFAULT NULL,`ClientAge` int(11) DEFAULT NULL,`ClientCountryName` varchar(20) DEFAULT NULL,PRIMARY KEY (`Id`),UNIQUE KEY `Client_Id` (`Client_Id`,`ClientProjectDeadline`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

정리 및 참고 사항

출력 결과를 보면 UNIQUE KEY Client_Id (Client_Id, ClientProjectDeadline)가 정상적으로 생성된 것을 확인할 수 있습니다. 몇 가지 유의할 점은 다음과 같습니다.

  • AUTO_INCREMENT 기본 키와 복합 고유 키는 함께 사용할 수 있습니다. 기본 키(Id)는 각 레코드를 식별하는 역할을 하고, 복합 고유 키는 비즈니스 규칙에 따른 중복 방지 역할을 담당합니다.
  • NULL 값 처리에 주의하세요. MySQL에서는 NULL 값을 서로 다른 값으로 취급하기 때문에, 고유 키에 포함된 컬럼에 NULL이 허용되면 의도치 않은 중복이 발생할 수 있습니다. 필요하다면 해당 컬럼에 NOT NULL 제약을 추가하는 것이 좋습니다.
  • InnoDB 엔진에서 고유 키는 인덱스 역할도 겸합니다. 따라서 조회 성능 향상 효과도 함께 얻을 수 있습니다.

이처럼 날짜 컬럼을 활용한 복합 고유 키는 일정 관리, 예약 시스템, 프로젝트 마감일 관리 등에서 데이터 중복을 효과적으로 방지하는 강력한 도구입니다.