학습 목표
관계 데이터 모델의 개념 및 제약조건을 알아본다
관계 데이터 모델을 SQL DDL을 이용해 정의하는 방법을 배워 본다.
학습 내용
관계 데이터 모델 소개
관계 데이터 모델의 개념
관계 데이터 모델의 스키마 기반 제약 조건들
관계 데이터 모델 소개
1970년데 E.F.Codd가 제안한 논리적 데이터 모델 (RDBMS)
관계 데이터베이스 시스템에 직접 구현될 수 있도록 데이터베이스 구조를 정의하는 방법을 제공
관계 데이터 모델의 장점
- 대수 연산의 지원을 받는 탄탄한 수학적 기초를 가짐
- 사용자에게 단순성을 제공 (표 형태)
릴레이션의 조작을 위한 연산인 관계 대수의 지원을 받음
관계 데이터 모델의 개념 : 릴레이션
릴레이션 (== 테이블 , SQL에서 CREATE TABLE)
- 개체를 표현하기 위한 데이터 구조
- 2차원 테이블로 표현
- 행 (Row) : 개체를 포현, 관련된 데이터 값들의 모임. Tuple이라고 부름
- 열 (Column) : 각 행의 값들을 의미를 해석하는데 사용. 애트리뷰트(속성)이라고 부름
- 릴레이션은 튜플들의 집합(Set)
⇒ 데이터베이스는 릴레이션들의 모임


Schema ( 구조, 제약조건)을 잘 세워야함
릴레이션 상태
- 한 시점에 릴레이션 R에 포함되어 있는 튜플들의 집합
- 한 개의 튜플은 한 개체가 가지는 애트리뷰트 값들의 집합
- 릴레이션은 튜플들의 집합이므로 각 튜플은 유일해야함
- 릴레이션 외포(Extension)이라고도함
Primary key : 기본키
Foregin key : 외래키
SQL을 이용한 스키마 생성
- Create Table 명령
- 테이블 이름과 테이블이 가지는 애트리뷰트들 지정
- 각 애트리뷰트는 이름과 데이터 타입을 가짐
- 초기 제약 조건들을 명시

지금 위 사진은 구조 (Structure)만 정의됨
⇒ Create Table은 스키마의 구조를 정의할 수 있다.

이론 강의에서는 표준을 설명
실습 강의에서는 Oracle 설명
Schema = Structure + Constraints
스키마 = 구조 + 제약 조건
관계 데이터 모델의 스키마 기반 제약 조건들
- 도메인 제약 조건
- 널 제약 조건
- 키 제약 조건
- 엔티티 무결성 제약 조건
- 참조 무결성 제약 조건
도메인 제약 조건
정의 :
각각의 튜플 내에서 각각의 애트리뷰트 A의 값이 반드시 A의 도메인 DOM(A)에 속하는 원자값 이어야 한다.
데이터 타입 :
- 전형적인 데이터 타입들
- 정수와 실수, 논리형 , 문자, 고정 길이 문자열, 가변 길이 문자열, 날짜 …
- 어떤 데이터 타입의 전체 값의 일부 범위를 지정
- 모든 가능한 값을 명시적으로 나열 (Enumeratel value ,열거형 값)

rating varchar(5) : Data Type , check (rating in (~~~))
- rating은 공백 _ _ _ _ _ 부터 zzzzz까지 다 되는데(varchar(5)) 이때 check로 조건 → G, PG~NC~~만 나올 수 있음
애트리뷰트 널 제약조건과 Default 값 명
애트리뷰트 제약 조건
- Not null 제약 조건 : 어떤 애트리뷰트에 널 값을 허용하지 않음
- Default <값> : 애트리뷰트에 명시적으로 값을 주지 않으면, 새로운 튜플을 사입할 때 이 애트리뷰트의 디폴트 값이 들어감

애트리뷰트가 NULL일 경우의 의미
- 각 애트리뷰트에 대한 값을 가지지만, 그 값은 NULL이 될 수도 있음
- Null값은 비어 있는 필드로 표현
- Null일 경우의 의미
- 적용되지않음 : 이 애트리뷰트를 적용할 수 없으므로 값을 갖지 않음
- 기록되지 않음 : 애트리뷰트 값이 존재하지만 지정되지 않는다
- 알수없음 : 애트리뷰트 값이 없거나 혹은 적용할 수 없다.
키 제약 조건
- 슈퍼키
- 릴레이션 R에 대한 슈퍼키 SK는 다음 조건을 가지는 R의 애트리뷰트들의 집합임
- 유효한 릴레이션 상태 r(R)에서 서로 다른 튜플들을 SK에 대해 같은 값을 가지지 않음
- 키(Key) : 릴레이션 R에 대한 키의 조건, 서로 다르게 식별할 수 있는 속성
-
서로 다른 튜플은 동일한 키 애트리뷰트 값을 가질 수 없음
-
키는 최소의 슈퍼키임
ex) STUDENT 릴레이션
- {Ssn} : 키
- {Ssn, Name, Age} , {Ssm ,Name } , {Ssm,Age}, {Ssn} : 슈퍼키
- 만일 릴레이션 스키마가 하나 이상의 키를 가질 경우, 각 키를 후보키 (Candidate Key)라 함
- 후보 키들 중에 하나를 기본 키로 지정함
- 기본키 (Primary Key)
- 튜플들을 식별할 수 있는 후보키
- 기본 키를 구성하는 애트리뷰트들은 밑줄을 그어 표시
- 다른 후보키는 유일키(Unique Key)라 함
엔티티 무결성 제약 조건(EIC)과 참조 무결성 제약 조건(RIC)
EIC : Entity Integrity Constraints
RIC : Referential Integrity Constraints
- 엔티티 무결성 제약 조건
- 어떠한 기본키 값도 널 값이 될 수 없음
- 이유 : 기본키는 한 릴레이션 내의 각 튜플을 식별하는데 사용되기 때문에 기본키 값이 널 값이 되면 튜플들을 식별할 수 없임
- 참조 무결성 제약 조건 (잘못된 것이 없다)
- 두 릴레이션 사이에 명시되는 조건
- 한 릴레이션에 있는 튜플이 다른 릴레이션에 있는 튜플을 참조하려면 반드시 참조되는 튜플이 그 릴레이션 내에 존재해야 함
- 외래키(Foreign Key)는 참조 무결성 제약조건을 만족해야함



외래키는 이어진 다른 릴레이션의 기본키와 매핑됨
SQL에선…


RDBMS가 EIC와 RIC를 지켜줌, 그래서 사용자는 정의를 잘 해야함

무결성 제약 조건
Integrity Constraints : IC
데이터 베이스의 인스턴스에 저장될 수 있는 데이터를 제한함
데이터베이스 스키마에 명시되며, 그 스키마의 모든 데이터베이스 상태는 이를 만족해야함
무결성 제약 조건은 서로 다른 시점에 명시되며 시행됨
- DBA나 최종 사용자가 데이터베이스 스키마를 정의할 때 IC를 명시
- 데이터베이스 응용이 실행될 때, DBMS는 명시된 IC를 만족하는 인스턴스들만 데이터베이스에 저장하도록함


스키마와 카탈로그(Catalog)
스키마
카탈로그
- 한 SQL 환경에서 있는 스키마들의 집합
- Information_Schema를 포함 ( Schema of Schema : 메타 데이터)
- 모든 스키마들과 모든 구성요소에 대한 Description 정보를 제공
- 같은 카탈로그 안에 있는 릴레이션들 간의 제약 조건 정의 가능
- 같은 가탈로그 안에 있는 스키마를은 도메인 공유도 가능