관계형 모델은 실제 세계의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델임. 관계 모델은 릴레이션의 관계를 표현함.
데이터 모델이란?
높은 수준의 상위 개념적으로 데이터를 기술하는 구성자들의 집합. "~~라는 개념을 사용해 데이터를 표현해보아라"라고 정의하는 것을 말하며, 관계형 모델은 그 중에 하나라고 할 수 있음.
위는 관계모델의 핵심인 릴레이션에 대한 예시.
=> 정리하면 릴레이션은 튜플들의 모임이고
그 튜플들의 모임인 릴레이션의 관계를 정의한 것이 관계모델임. 관계모델은 릴레이션 단위로 다양한 여난을 사용해 질의를 수행하는 데이터 모델임.
👨💻단어
도메인 : 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 지합이라고 할 수 있음. 도메인이라는 개념이 필요한 이유는 릴레이션에 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리하기 위해서임. 이를 도메인 제약조건(각 필드의 데이터는 명시된 도메인에 속한 값이어야 함)이라고 부르기도 함. 예를 들어, '성별'이라는 속성이 있다면 이 속성이 가질 수 있는 값은 '남' 또는 '여'일텐데, 데이터베이스 설계자는 성별의 도메인으로 'gender'를 정의하고 그 값으로 '남', '여'로 지정한뒤 '성별'이라는 속성은 'gender'도메인에 있는 값만을 가질 수 있다고 지정해 놓으면 사용자들이 실수로 남, 여 이외의 값을 입력하는 것을 방지할수 있슴.
릴레이션: 릴레이션 스키마 + 릴레이션 인스턴스
릴레이션 스키마:릴레이션 이름, 필드 이름, 도메인
❖ 예:Students(sid:string, name:string, login:string, age:integer, gpa real)
❖ 필드: 속성, 열, 애트리뷰트
❖ 도메인: 데이터타입, string: 모든 문자열들의 집합
릴레이션 인스턴스
❖ 투플(행,레코드)들의 집합, 일종의 테이블, (현재:current)
❖ 투플들의 집합이므로 모든 행은 서로 다르다. 각 행의 위치는 상관없음
❖ 행의 수: 카디날리티(cardinality)
❖ 필드의 수: 차수(degree or arity)
❖ 예) 그림 3.1과 그림 3.2는 동일한 인스턴스임
❖ 차수: 5 카디날리티: 6
Null:Null 또는 NULL은 구조적 질의 언어 (SQL)에서 데이터베이스 내의 데이터 값이 존재하지 않는다는 것을 지시하는데 사용되는 특별한 표시어(special marker)이다.
다른 릴레이션의 기본키를 참조하는 속성
키는 릴레이션간의 관계를 맺는데 사용될 수 있다. 외래키(Foreign key)가 바로 그런 경우인데, 주문 릴레이션에서 우리는 고객 릴레이션의 기본키인 고객번호와 도서릴레이션의 기본키인 도서번호를 참조하여 쓰는데 주문릴레이션에서는 고객번호와 도서번호가 외래키가 되고, 주문번호가 기본키(Primary Key)가 됨.
데이터 무결성(Integrity)은 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함.
- 도메인 무결성 제약조건
- 개체 무결성 제약조건
- 참조 무결성 제약조건
1.도메인 무결성 제약조건 & 도메인 제약
=> 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건. SQL문에서 데이터 형식(Type), 널(Null/Not Null), 기본 값(Default)등을 사용하며 지정할 수 있습니다. 예를 들어 VARCHAR형으로 선언된 Name이라는 변수에는 정수형 Integer 값이 올 수 없는 경우를 의미합니다.
2.개체 무결성 제약조건
=> 기본키 제약(Primary Key Constraint)라고도 함. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임. 기본키는 릴레이션내에서 튜플들을 구별할 수 있게 해주는 속성이므로 자연스럽게 개체 무결성 제약조건이 등장하게 되었습니다.
3.참조 무결성 제약조건 & 외래키 제약(Foreign Key Constraint)
=> 릴레이션 간의 참조 관계를 선언하는 제약조건임. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받음.
개체 무결성 제약조건
아래의 그림과 같이 학번을 기본키로 갖는 릴레이션에서 이미 학번 501을 가진 학생이 존재할 때 중복된 학번 501을 가진 학생을 삽입하려고 하거나 501로 다른 학생의 학번을 수정하려고 하거나, 학번이 NULL값인 튜플을 삽입하려고 하는 경우에 삽입이 거부된다. 그에 반해 삭제 연산은 기본키의 중복 또는 NULL의 염려가 없으므로 즉시 수행가능.
개체 무결성: 기본키에 대한 제약조건
❖ 기본키의 열에 있는 값들은
❖ 1) 모두 유일하여야 하고 2) 널(null)이 될 수 없다.
❖ SQL에서 기본키와 후보키 명시
CREATE TABLE Students
(sid CHAR(20),
name CHAR(30),
login CHAR(20),
age INTEGER,
gpa REAL,
UNIQUE (name, age),
CONSTRAINT StudentsKey PRIMARY KEY (sid) )
제약조건에 관한 정보
테이블 생성 시에 Constraint, 즉 제약조건을 사용해서 입력하는 자료에 대해 제약을 정해줄 수 있슴
이때 정해진 제약에 따라서 데이터가 입력되는데 , 제약에 맞지 않다면 자료 입력이 거부되면서 오류가 남
RDMBS에서는 데이터의 무결성을 위해 5가지 제약조건을 제공..
참조 무결성 제약조건
부모릴레이션에 삽입: 정상적으로 진행됨
자식릴레이션에 삽입: 참조받는 테이블에 외래키 값이 없으므로 삽입 금지
부모릴레이션의 삭제: 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 추가작업이 필요
자식릴레이션의 삭제: 바로 삭제 가능함
수정: 삭제와 삽입의 연속 수행으로 각 삭제와 삽입의 제약을 고려하여 진행됨.
예를 들어 아래의 릴레이션에서 부모에 3001의 학과코드를 가진 학과를 추가하는 것은 문제가 없지만 자식 릴레이션에 부모 릴레이션에 존재하지 않는 3001의 학과 코드를 삽입하려고 하는 경우에는 문제가 발생함. 부모릴레이션에서 삭제를 하는 경우에는 해당 키를 다른 릴레이션에서 사용하고 있을 수 있으므로 삭제에 제한이 걸리지만 자식릴레이션은 바로 삭제를 할 수 있슴. 수정 연산은 부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨.
참조 무결성 처리 옵션 표현법
CASACADE (참조측도 삭제)
SET DEFAULT (참조측 값을 디폴트로 설정)
SET NULL (참조측 값을 널 값으로 설정)