데이터베이스에 저장된 값은 절대로 결합이 존재해서는 안됨!
SQL문으로 질의를 하였을때 답에 신뢰성이 존재해야함
ex) 이름 = 예지 나이 ? 200 -> 신뢰성 X
수강인원 40/41명 수강신청
--> 무결성 제약조건 위배 : 데이터를 저장하는데 데이터베이스는 일관성을 유지하고 중복을 제거하여 신뢰도를 유지해야 한다. 따라서 데이터의 삽입, 삭제, 수정 시 여러 제약조건이 필요
튜플을 식별할 수 있는 최소한의 속성들의 집합
튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음
ex) 주민번호, (주민번호,이름) ...
튜플을 유일하게 식별할 수 있는 속성의 최소 집합
주문 릴레이션의 후보키는 2개의 속성을 합한(고객번호, 도서번호)가 됨.
참고로 이렇게 2개 이상의 속성으로 이루어진 키를 복합키(composite key)라고 함.
후보키는 효율성 측면에서 매우 중요!
만약 한명의 고객이 동일한 도서를 구입할 수 있다고 하면
(고객번호, 도서번호) 후보키 될 수 x! 유일하게 식별하기 위해 주문번호 속성이 필요..
여러 후보키 중 하나를 선정하여 대표로 삼는 키
후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨.
기본키 선정 시 고려사항
- 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함.
- NULL 값은 허용하지 않음.
- 키 값이 변동이 일어나지 않아야 함.
- 최대한 적은 수의 속성을 가진 것이라야 함.
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함.
- 릴레이션 스키마를 표현할 때 키본키는 밑줄을 그어 표시함.
릴레이션 이름(속성1, 속성2, ..., 속성N)
ex) 고객(고객번호, 이름, 주민번호, 주소 핸드폰)
ex)
장점 : (고객번호, 도서번호) 같은 사람이 같은 도서 구입 -> 문제 발생!!
주문번호(대리키)를 만들어 놓으면 유일하게 식별 가능해진다.
-> 테이블의 기능이 향상되어 진다!
🔷 외래키의 특징
- 관계 데이터 모델의 릴레이션 간의 관계를 표현함.
- 다른 릴레이션의 기본키를 참조하는 속성임.
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야함.
- 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨.
- NULL 값과 중복 값 등이 허용됨.
- 자기 자신의 기본키를 참조하는 외래키도 가능함.
- 외래키가 기본키의 일부가 될 수 있음.
외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음
즉 자기 자신의 기본키를 참조할 수도 있음
데이터베이스의 일관성과 정확성을 위해서 !!
🔷 데이터 무결성
데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함.
🔷 도메인 무결성 제약조건
도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 튜풀들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건
SQL 문에서 데이터 형식(type), 널(null/not null), 기본 값(default), 체크(check)등을 사용하여 지정할 수 있음.
🔷 개체 무결성 제약조건
기본키 제약(primary key constraint)이라고도 함.
릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL 값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임.
🔷 참조 무결성 제약조건
외래키 제약(foreign key constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건
자식 릴레이션의 외래키는 부모 릴레잉션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것
데이터 변경이 발생할때마다 확인이 필요하다!
🔹 개체 무결성 제약조건
- 삽입 : 기본키 값이 같으면 삽입이 금지됨
- 수정 : 기본키 값이 같거나 NULL로도 수정이 금지됨
- 삭제 : 특별한 확인이 필요하지 않으며 즉시 수행함
🔹 참조 무결성 제약조건
- 부모 릴레이션 : 튜플 삽입한 후 수행하면 정상적으로 진행
- 자식 릴레이션 : 참조받는 테이블에 외래키 값이 없으므로 삽입이 금지
참조 무결성은 개체 무결성 제약조건과 달리 단일 릴레이션에 대한 내용x
따라서 참조 무결성 제약조건을 준수하기 위해 두 릴레이션의 관계에 따라 복잡한 처리를 수행하게 된다.