데이터를 저장하는 데 있어서 데이터베이스는
일관성을 유지하고, 중복을 제거하는 등 데이터의 신뢰도를 유지해야 한다.
따라서 데이터의 삽입, 삭제, 수정 시 여러 가지 제약조건이 따른다.
1. 키
관계 데이터베이스에서 키는 릴레이션에서 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합이다.
릴레이션은 중복된 튜플을 허용하지 않기 때문에
각각의 튜플에 포함된 속성 중 어느 하나는 값이 달라야 한다.
즉, 키가 되는 속성은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 한다.
위 사진은 마당서점 데이터의 일부이다.
이 테이블들을 중심으로 키의 개념과 제약 조건에 대해 알아보자.
슈퍼키(Super Key)
슈퍼키는 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합을 말한다.
고객 릴레이션 예)
고객번호 : 고객별로 유일한 값이 부여되어 있기 때문에 투플을 식별할 수 있음
이름 : 동명이인이 있을 경우 투플을 유일하게 식별할 수 없음
주민번호 : 개인별로 유일한 값이 부여되어 있기 때문에 투플을 식별할 수 있음
주소 : 가족끼리는 같은 정보를 사용하므로 투플을 식별할 수 없음
핸드폰 : 한 사람이 여러 개의 핸드폰을 사용할 수 있고 반대로 핸드폰을 사용하지 않는
사람이 있을 수 있기 때문에 투플을 식별할 수 없음
고객 릴레이션은 고객번호와 주민번호를 포함한 모든 속성의 집합이 슈퍼키가 된다.
( 주민번호 ), (주민번호 , 이름 ), (주민번호 , 이름 , 주소 ), (주민번호 , 이름 , 핸드폰), ( 고객번호 ), (고객번호 , 이름 , 주소 ),( 고객번호 , 이름 , 주민번호 , 주소 , 핸드폰 ) 등
후보키(Candidate Key)
후보키는 튜플을 유일하게 식별할 수 있는 속성의 최소 집합이다.
주문 릴레이션 예)
고객번호: 한 명의 고객이 여러 권의 도서를 구입할 수 있으므로 후보키가 될 수 없음
고객번호가 1 인 박지성 고객은 세 번의 주문 기록이 있으므로 투플을 유일하게 식별할 수 없음
도서번호: 도서번호가 2 인 축구아는 여자 는 두 번의 주문 기록이 있으므로 투플을 유일하게
식별할 수 없음
주문 릴레이션의 휴보키는 2개의 속성을 합한 (고객번호, 도서번호)가 된다.
※이렇게 2개 이상의 속성으로 이루어진 키를 복합키라고 한다.
기본키(Primary Key)
기본키는 여러 후보키 중 하나를 선정하여 대표로 삼는 키를 말한다.
기본키 선정 시 고려사항 1. 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함. 2. Null값은 허용하지 않음. 3. 키 값의 변동이 일어나지 않아야 함. 4. 최대한 적은 수의 속성을 가진 것이라야 함. 5. 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함. |
릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함
고객 (고객번호 , 이름 , 주민번호 , 주소 , 핸드폰)
도서 (도서번호 , 도서이름 , 출판사 , 가격)
대리키(Surrogate Key)
대리키는 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나,
마땅한 기본키가 없을 때는 일련번호같은 가상의 속성을 만들어 기본키로 삼는 경우가 있다.
이러한 키를 대리키 혹은 인조키라고 한다.
대체키(Alternate Key)
대체키는 기본키로 선정되지 않은 후보키를 말한다.
고객 릴레이션의 경우 고객번호와 주민번호 중 고객번호를 기본키로 정하면
주민번호가 대체키가 된다.
외래키(Foreign Key)
외래키는 다른 릴레이션의 기본키를 참조하는 속성을 말한다.
다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현한다.
외래키의 특징 1. 관계 데이터 모델의 릴레이션 간의 관계를 표현함 2. 다른 릴레이션의 기본키를 참조하는 속성임 3. 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함 4. 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨 5. NULL 값과 중복 값 등이 허용됨 6. 자기 자신의 기본키를 참조하는 외래키도 가능함 7. 외래키가 기본키의 일부가 될 수 있음 |
외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없다.
즉, 자기 자신의 기본키를 참조할 수도 있다.
키 내용 정리
2. 무결성 제약 조건
무결성 제약조건은 튜플에 삽입 가능한 데이터의 값을 제한하는 도메인 무결성 제약조건과 관계 데이터 모델의 핵심인 관계 표현을 위한 개체 무결성 제약조건, 참조 무결성 제약조건이 있다.
1. 도메인 무결성 제약조건
도메인 제약이라고도 하며, 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건
SQL문에서 데이터 형식, 널, 기본 값, 체크등을 사용하여 지정할 수 있음.
2. 개체 무결성 제약조건
기본키 제약이라고도 함.
릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL 값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임.
3. 참조 무결성 제약조건
외래키 제약이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건.
자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것
3. 무결성의 수행 제약조건
1. 개체 무결성 제약 조건
삽입: 기본키 값이 같으면 삽입이 금지됨.
수정: 기본키 값이 같거나 NULL로도 수정이 금지됨.
삭제: 특별한 확인이 필요하지 않으며 즉시 수행함.
2. 참조 무결성 제약조건
삽입
학과: 튜플 삽입한 후 수행하면 정상적으로 진행
학생: 참조받는 테이블에 외래키 값이 없으므로 삽입이 금지
삭제
학과: 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요함.
학생: 바로 삭제 가능
※ 부모 릴레이션에서 투플을 삭제할 경우 참조 무결성 조건을 수행하기 위한 고려사항
① 즉시 작업을 중지
② 자식 릴레이션의 관련 투플을 삭제
③ 초기에 설정된 다른 어떤 값으로 변경
④ NULL 값으로 설정
수정
삭제와 삽입 명령이 연속해서 수행됨.
부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨.
'Database' 카테고리의 다른 글
[Database] 데이터 모델링 (0) | 2023.05.31 |
---|---|
[Database/Oracle] SQL 내장함수, NULL값 처리, ROWNUM (0) | 2023.04.17 |
[Database] 정규화(Normalization) (0) | 2023.02.27 |
[D/B] 관계 대수 (0) | 2022.10.31 |
[Database] 관계 데이터 모델의 개념 (0) | 2022.10.24 |