관계 데이터 모델과 관계 무결성 제약 조건
관계형 데이터베이스의 구조
릴레이션(Relation) = 표(Table)
- 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
- 학생에 관한 정보를 저장한 것을 학생 릴레이션
- 두 개 이상의 집합으로부터 구성하는 원소들의 순서쌍에 대한 집합
속성(Attribute) = 열(Column) = 필드(Field)
학번(no) | 이름(name) | 학과(dept) |
---|---|---|
001 | 정승현 | 전기 |
002 | 이지용 | 전자 |
003 | 최대성 | 컴퓨터 |
004 | 김산다라 | 데이터사이언스 |
속성의 개수 = 차수(Degree) = 3
- 학번(no) = {‘001’, ‘002’, ‘003’, ‘004’}
- 이름(name) = {‘정승현’, ‘이지용’, ‘최대성’, ‘김산다라’}
- 학과(dept) = {‘전기’, ‘전자’, ‘컴퓨터’, ‘컴퓨터사이언스’}
<'001', '정승현', '전기'>, <'002', '이지용', '전자'>,
<'003', '최대성', '컴퓨터'>, <'004', '김산다라', '데이터사이언스'>
속성 (Attribute)
- 데이터의 가장 작은 논리적 단위
- 하나의 개체는 한 개 이상의 속성으로 구성되며 각 속성은 개체의 특성, 상태 등을 기술
차수 (Degree)
- 릴레이션을 구성하는 속성의 개수
튜플 (Tuple) = 행 (Row) = 레코드 (Record)
- 속성의 모임으로 구성됨
- 릴레이션의 각 행(Row)을 나타냄
- 파일 구조상의 레코드(Record)에 해당
기수 (Cardinality) = 튜플 (Tuple)의 개수 = 행 (Row)의 개수 = 4
- 한 릴레이션에 포함된 튜플의 수
원자값 (Atomic)
- 더 이상 분리할 수 없는 형태의 값
도메인 (Domain)
- 한 필드가 가질 수 있는 같은 타입의 원자 값들의 집합
CREATE DOMAIN no INTEGER
-- 숫자형태의 학번
CREATE DOMAIN name VARCHAR(10)
-- 문자열 10글자이내의 이름
CREATE DOMAIN dept VARCHAR(10)
-- 문자열 10글자이내의 학번
릴레이션 스키마와 인스턴스
릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스
릴레이션 스키마 = 학번, 이름, 학과
릴레이션 인스턴스 = 001, 정승현, 전기
릴레이션이름(기본키, 속성이름1, 속성이름2, 속성이름3…)
(기본키에 언더라인 붙음)
학생(학번(no), 이름(name), 학과(dept), 학과(dept))
릴레이션의 특징
릴레이션 = 추상적인 개념
, 테이블 = 구체적인 표현
튜플의 유일성(Uniqueness of Tuples)
- 한 릴레이션에 포함된 튜플들은 서로 다름
- 하나의 릴레이션에 정확하게 동일한 값을 가진 튜플이 존재할 수 없다는 것을 의미함
- 튜플을 식별하는 방법이 됨
튜플의 무순서성(No Ordering of Tuples)
- 릴레이션에서 튜플이 몇 번 째 레코드인지는 의미가 없음
- 릴레이션 인스턴스가 테이블 형태로 표현될 때나 물리적으로 저장될 때에는 특정 순서에 따라서 저장
- 릴레이션을 표현하거나 저장하는데 발생하는 부수적인 역할을 할뿐 그 정의 자체에서 레코드의 순서는 고려하지 않음
학생1 릴레이션
학번(no) | 이름(name) | 학과(dept) |
---|---|---|
001 | 정승현 | 전기 |
002 | 이지용 | 전자 |
003 | 최대성 | 컴퓨터 |
004 | 김산다라 | 데이터사이언스 |
학생2 릴레이션
학번(no) | 이름(name) | 학과(dept) |
---|---|---|
004 | 김산다라 | 데이터사이언스 |
003 | 최대성 | 컴퓨터 |
002 | 이지용 | 전자 |
001 | 정승현 | 전기 |
학생1 릴레이션과 학생2 릴레이션은 같다.
테이블은 다르지만 같은 원소값을 가진 동일한 릴레이션이기 때문
속성의 무순서성(No Ordering of Attributes)
- 릴레이션을 구성하는 속성 사이에는 순서가 없음
- 속성의 물리적 위치나 상대적 위치를 나열한 것이 아님
- 어떤 하나의 튜플은 <속성이름: 값>과 같이 쌍의 집합으로 표현
속성의 원자성(Atomicity of Attribute)
- 모든 속성 값은 원자값(Atomic Value)로 구성되어야 함
- 원자값(Atomic) : 관계 데이터 모델에서 데이터 값들은 더이상 분리할 수 없는 형태의 값
- 튜플의 속성 값이 하나의 값만을 허용
키와 개념과 종류
키(Key)
- 간단히 키라고 함
- 각 개체 인스턴스를 유일하게 식별하는 데 사용
- 동명이인의 경우 누구를 원하는지 모를때 키가 있으면 바로 알 수 있다.
- 키는 유니크해야한다. (동일한 값이 없어야 함)
- 릴레이션의 특징 중의 하나가 한 릴레이션에 포함된 튜플들은 모두 달라야 함
- 속성 혹은 속성의 집합으로 튜플을 고유하게 식별할 수 있도록 하는 속성 혹은 속성의 집합
- 데이터를 검색하거나 정렬할 때 기준이 되게 유일하게 구분되는 속성 (슈퍼키, 후보키, 기본키, 외래키..)
이상(Anomaly) 현상
- 데이터가 중복 저장되면 릴레이션 조작 시 예상하지 못한 곤란한 현상이 발생하는 현상
약한 개체와 강한 개체
서치해서 좀 더 알아보기
약한 개체 타입(Weak Entity Type)
- 키를 형성하기에 충분한 속성들을 갖지 못한 것
- 자기 자신의 속성만으로는 키를 명세할 수 없는 개체
- 종속 개체, 자식 개체라고도 함
- 소유 개체 타입이 있어야 존재
- 소유 개체 타입을 식별 개체 타입(Indentifying Entity Type)이라고도 부름
강한 개체 타입(Strong Entity Type)
- 개체 타입 내에서 자신의 키를 사용하여 고유하게 개체들을 식별할 수 있는 개체 타입
- 독립 개체, 부모 개체, 정규 개체 타입이라고도 함
- 독자적으로 존재함
슈퍼키와 후보키
슈퍼키(Super Key) - 유일성 O, 최소성 X
- 릴레이션을 구성하는 속성들 중에서 각 튜플을 유일하게 식별하기 위해 사용하는 하나 혹은 그 이상의 속성들의 집합
- 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있는 성격
- 최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성되어야 하는 성격
후보키(Candidate Key)
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- 슈퍼키와 공통점 : 릴레이션에 있는 각 튜플을 고유하게 식별할 수 있어야 한다는 점
- 슈퍼키와 차이점 : 최소한의 속성으로 구성된 유일성을 갖는 속성의 집합
기본키(Primary Key: PK)
- 후보키 중 튜플을 식별하는데 기준으로 사용하는 키
- 후보키 중에서 선택한 것이기에 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없음 (Null != 공백)
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키로 선택되지 않은 나머지 후보키
- 보조키라고도 함
- 사원번호를 기본키로 정의하였다면 주민번호가 대체키가 됨
외래키(Foreign Key)
- 상호 관련이 있는 테이블들 사이에서 데이터의 일관성을 보장해 주는 수단
교수(교수번호, 교수이름, 학과번호
, 직급)
학과(학과번호
, 학과이름, 학과장, 학생수)
외래키
무결성 제약 조건
데이터 모델링 구성요소 : 데이터 구조, 연산, 제약조건
개체 무결성 제약(Entity Integrity Constraint)
- 기본 키에 지정되어 있는 속성의 값은 절대 널(Null)이나 중복될 수 없다는 것을 의미
- 데이터베이스에서 정의하는 널이란 공백(Blank) 또는 영(Zero)와 다른 개념
- 아직 알려지지 않은 값, 값이 있지만 아직 모르는 값, 속성에 해당되지 않는 값을 표시하기 위한 특수한 값을 의미함
- 널 자체도 하나의 의미 있는 값임
- 기본 키 값이 널(Null)이나 중복된 값을 가지게 된다면, 튜플을 유일하게 식별할 수 없게 됨 (개체 무결성 제약조건에 위반되게 됨)
참조 무결성 제약(Referential Integrity Constraint)
- 릴레이션간에 적용되는 제약조건으로 외래키를 통해 릴레이션을 참조할 수 없는 외래키 값을 가질 수 없도록 하여 두 테이블간의 데이터 무결성을 유지
- 참조 릴레이션에 참조할 수 없는 값을 외래키 값으로 가질 수 없음
참조 무결성 제약조건의 유지
두 테이블 간에 외래키에 의한 참조 관계에 있고 두 테이블 간 데이터 불일치가 발생하는 상황이 될 때, DBMS는 제한(Restrict), 연쇄(Cascade), 널 값으로 대체(Nullify)와
같은 조치를 취할 수 있음
부서테이블의 첫 번째 튜플을 삭제하려 할 때
- 제한(Restict)은 삭제하려는 튜플의 부서 번호 값을 사원 테이블에서 가지고 있는 튜플이 있으므로 삭제 연산을 거절
- 연쇄(Cascade)는 삭제된 부서 번호 값을 갖는 사원 테이블의 튜플도 함께 삭제
- 널 값으로 대체(Nullify)는 삭제연산을 수행한 뒤 삭제된 부서 번호 값을 갖는 사원 테이블의 튜플에서 부서 번호를 Null 값으로 대체