관계형 데이터 모델의 개념
Relation릴레이션(Relation): 행과 열로 구성된 테이블, Entity라고도 한다.
속성(Attribute): 세로 값으로 열(Column)이라고도 한다.
튜플(Tuple): 값으로 행(Row)라고도 한다.
차수: 속성의 수
카디날리티: 튜플의 수
인스턴스: 정의된 스키마에 따라 테이블에 실제 저장된 데이터의 집합
스키마: 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의(첫 행의 헤더)
스키마의 구성요소속성(Attribute): 릴레이션 스키마의 열
도메인(Domain): 속성이 가질 수 있는 값의 집합 ex) {속성1:도메인(Integer), 속성2:도메인(Varchar(10)), …}
차수(Degree): 속성의 개수
인스턴스의 구성요소튜플(Tuple): 릴레이션의 속성
카디날리티(Cardinality): 튜플의 수
릴레이션의 속성속성의 단일 값을 가진다.
속성은 서로 다른 이름을 가진다.
한 속성의 값은 모두 같은 도메인 값을 가진다.
속성의 순서는 상관이 없다.
릴레이션 내의 중복된 튜플은 허용하지 않는다.
튜플의 순서는 상관없다.
키(KEY)특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합
키가 되는 속성(혹은 속성의 집합)은 값이 반드시 달라서 튜플들을 구별할 수 있어야 한다.
키는 릴레이션간의 관계를 맺는데도 사용된다.(FK)
위의 릴레이션에서 (고객번호, 도서번호), (고객번호, 주문일자)와 같은 집합을 키로 사용가능
슈퍼키튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집
합
튜플을 식별할 수 있으면, 모두 슈퍼키가 될 수 있다.
위의 릴레이션에서 고객번호, 주민번호는 고유한 값으로 슈퍼키가 될 수 있으며, 이를 포함한 집합이 슈퍼키가 될 수 있다.
ex) (주민번호), (주민번호, 이름), (고객번호, 이름, 주민번호, 주소, 핸드폰) 등
후보키튜플을 유일하게 식별할 수 있는 속성의 최소 집합
위의 릴레이션에서 단일 속성으로 튜플을 유일하게 식별하는 것은 불가능
2개의 속성을 합한 (고객번호, 도서번호)가 후보키가 된다.(복합키_Composite Key)
기본키(PK)여러 후보키 중 하나를 선정하여 대표로 삼는 키
후보키가 하나뿐이라면 그 후보키를 기본키(Primary Key)로 사용
후보키가 여러개라면 릴레이션 특성을 반영하는 하나를 선택
위의 릴레이션에선느 도서번호 혹은 도서번호가 후보키가 되며,
두 속성 중 하나의 속성을 기본키로 설정
릴레이션 스키마에서 기본키는 밑줄을 그어서 표시함
기본키 선정 시 고려사항릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 한다.
NULL 값을 허용하지 않음
키 값의 변동이 일어나지 않아야 한다.
최대한 적은 수의 속성을 가진것이어야 한다.
향후 키를 사용하는데 있어서 문제 발생 소지가 없어야 한다.
대체키(Alternate Key)기본키로 선정되지 않은 후보키
외래키(FK)다른 릴레이션의 기본키를 참조하는 속성
위의 릴레이션에서 주문번호가 기본키(Primary Key)가 되며,
고객번호와 도서번호는 다른 릴레이션에서의 기본키가 되며 이는 외래키(Foreig Key)가 된다.
외래키를 사용할 때 참조하는 릴레이션과 참조되는 릴레이션이 다를 필요는 없다.
자기자신의 기본키(PK)를 외래키(FK)로 가질 수 있다.
외래키는 NULL 값이 되어도 상관이 없다.
무결성 제약조건데이터 무결성(Integrity)는 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말한다.
- 도메인 무결성 제약조건(Domain Constraint)릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다.
SQL 문에서 데이터 형식(Type), 널(Null, Not Null), 기본값(Default), 체크(Check)등을 사용하여 지정
- 개체 무결성 제약조건(Entity Constraint)Primary Key Constraint라고도 한다.
릴레이션 기본키를 지정하고 그에 따른 무결성 원칙, 즉 기본값이 NULL값을 가지며 안되며 릴레이션 내에 하나만
존재해야 하나는 조건
삽입: 기본키 값이 같으면 삽입이 금지된다.
수정: 기본키 값이 같거나 NULL로도 수정이 금지
삭제: 특별한 확인이 필요하지 않으면 즉시 수행
- 참조 무결성 제약조건(Reference Constraint)
Foreign Key Constarint라고도 한다.
릴레이션 간의 참조 관계를 선언하는 제약조건으로
자식 릴레이션 외래키는 부모 릴레이션 기본키와 도메인이 동일해야 하고,
자식 릴레이션 값이 변경될 때, 부모 릴레이션이 제약을 받는다는 조건이다.
부모릴레이션 삽입: 정상적으로 수행
자식릴레이션 삽입: 참조받는 테이블에 외래키 값이 없으므로 삽입 금지
부모릴레이션 삭제: 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 추가작업을 요함
자식릴레이션 삭제: 바로 삭제 가능
수정: 삭제와 삽입의 연속수행으로 각 삭제와 삽입의 젝약을 고려하여 진행
관계 대수(Relation Algebra)관계대수: 릴레이션에서 원하는 결과를 얻기 위해 연산을 이용하여 질의하는 방법을 기술하는 언어
어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어로 DBMS 내부의 처리 언어로 사용된다.
관계해석: 어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 DBMS의 표준 언어인 SQL의 이론적인 기반 제공
관계대수와 관계해석은 모두 관계 데이터 모델의 중요한 언엉며 동일한 표현 능력을 가짐
관계대수 연산단항 연산자: 연산자<조건> 릴레이션
이항 연산자: 릴레이션1 연산자<조건> 릴레이션2
조인(Join)두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플(Tuple)을 수평으로 결합하는 연산
조인을 수행하기 위해서 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함
조인 연산의 결과는 공통 속성의 속성 값이 동일한 튜플만을 반환
세타조인, 동등조인, 자연조인, 세미조인, 외부조인 등이 존재한다.
세타조인(theta join): 조인에 참여하는 두 릴레이션 속성 값을 비교하여 조건을 만족하는 튜플만을 반환
동등조인(equi join): 세타조인에서 ‘=‘ 연산자를 사용한 조인
자연조인(natural join): 동등조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환
외부조인(outer join): 자연조인 시 조인에 실패한 튜플을 리턴, 대응 속성에는 NULL 값을 채워서 반환
세미조인(semi joint): 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환하며 기호에서 닫힌 쪽 릴레이션의 튜플을 반환
디비전(Division)릴레이션의 속성 값의 집합으로 연산을 수행
형식: R÷S