대학교 Database 시간에 하루도 빠짐없이 강조받는 말은 DB를 설계할 때부터 각 테이블에 대해 정확히 정의해야 한다는 말이다. 즉, 무작정 DB를 설계하는 것이 아니라 Table간의 관계를 고려하여 필요한 테이블만 효율적으로 만들도록 해야한다는 의미이다.
교수님께서 DB 설계에 대해 이야기하며 데이터 무결성이라는 말을 잠깐 언급하셨는데, 깊게 설명하지 않으셨지만 DB 설계 시 데이터 무결성 제약조건에 대해 깊이 생각해볼 필요가 있을 것 같아 따로 정리해보고자 한다.
데이터 무결성, 그리고 제약 조건
데이터 무결성 제약조건이란 무엇일까? 보통 데이터 무결성과 제약조건이라는 단어는 함께 쓰이는 용어이다. 이번엔 이 둘을 나누어 구분해보고자 한다.
데이터 무결성이란, DB 내에 있는 데이터의 정확성을 유지하는 것이며, 제약 조건은 바람직하지 않은 데이터가 저장되는 것을 방지하는 조건이다. 즉, 제약 조건을 통해 DB내의 데이터 무결성을 유지하는 것이라고 할 수 있으며 이는 모든 DB에 있는 데이터가 Insert/Delete/Update 되더라도 지속적으로 만족해야 한다는 것을 의미한다.
데이터 무결성 제약조건에는 참조 무결성 제약조건, 도메인 무결성 제약조건, 개체 무결성 제약조건이 존재한다.
참조 무결성 제약조건
참조 무결성 제약조건은 Foreign key와 관련이 있다. 우선 참조 무결성 제약조건에 앞서 자식 테이블, 부모 테이블 개념을 알 필요가 있다.
RDBMS에서는 컬럼을 통해 테이블끼리 연결(참조)하는데, 이때 참조하는 쪽의 테이블을 자식 테이블이라고 하고 값을 가진 컬럼을 외래 키라고 한다. 반대로 참조되는 쪽의 테이블을 부모 테이블이라고 하며 값을 가진 컬럼을 부모 키라고 부르며 부모키는 Primary Key여야 한다.
아래 두 테이블(Department, Employee)이 있다고 가정하자. 두 테이블은 부서번호 컬럼에 의해 서로 연결(참조)되어 있다. Department 테이블의 부서번호 값을 Emplyee 테이블이 참조하고 있음을 확인할 수 있다. 이 때 Department 테이블을 부모 테이블이라고 하며 Employee 테이블을 자식 테이블이라고 하고 Department 테이블의 부서번호가 Primary Key, Employee 테이블의 부서번호가 Foreign Key라고 한다.
참조 무결성 제약조건은 참조하는 테이블(자식 테이블)의 값이 참조되는 테이블(부모 테이블)의 컬럼의 값에 존재해야한다는 조건을 의미한다. 이 때 Foreign Key의 값은 NULL 값이거나 부모 테이블의 Primary Key의 값과 동일해야 한다.
도메인 무결성 제약 조건
도메인 무결성 제약 조건은 테이블의 attribute 값이 해당 도메인에 속한 값들 중 하나여야 한다는 것이다.
예시로 널 값의 허용 여부, 속성의 기본 값, 데이터 형식, Unique 조건(중복X), Check(입력 가능 범위 지정) 조건 등이 존재한다.
개체 무결성 제약조건
마지막 개체 무결성 제약조건은 Primary Key와 관련이 있다.
개체 무결성이란 Primary Key를 구성하는 어떤 속성도 NULL 값을 가질 수 없으며 언제나 Unique한 값을 가져야한다는 조건이다.
- Primary Key = Unique + Not NULL
Reference
'Database' 카테고리의 다른 글
[Database] 정규화(Normalization)/비정규화(Denormalization) (0) | 2024.06.12 |
---|---|
[Database] Entity Relationships (3) (1) | 2024.06.11 |
[Database] Entity Relationships (2) (0) | 2024.06.11 |
[Database] Entity Relationships (1) (2) | 2024.06.11 |
[Database] Functional Dependency(함수적 의존성) (2) | 2024.04.21 |