관계 데이터 모델의 개념
수학의 집합이론에 근거하고 있어 타 모델에 비해 튼튼한 이론적 토대를 가지고 있다. 또한 관계 데이터 모델이 적용된 SQL 언어는 비절차적 언어로 원하는 데이터를 쉽게 표현하는 장점이 있다.
현재 많이 사용되는 관계 데이터 모델 DBMS로는 Oracle, SQL Server, MySQL, PostgreSQL과 모바일 용인 SQLite등이 있다.
릴레이션(relation)
수학의 집합에서 나온 개념으로, 테이블은 릴레이션의 시각적인 표현방법이다.
relationship(관계)는 릴레이션 내에서 생성되는 관계와 릴레이션 간의 관계를 포함한다.
전자는 관련있는 실제 데이터의 집합, 후자는 릴레이션끼리 식별값을 이용하여 연결함을 뜻한다.
릴레이션과 테이블은 같은 의미로 사용된다. 릴레이션은 주로 구조를 강조하는 의미로 이론 설명시 사용되고, 테이블은 데이터를 강조하는 의미로 실무에서 많이 사용된다.
스키마
릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조 정의
- 속성 : 릴레이션 스키마의 열
- 도메인 : 속성이 가질 수 있는 값의 집합
- 차수 : 속성의 개수인스턴스정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합
- 투플 : 릴레이션의 행
- 카디날리티(cardinality) : 투플의 수
릴레이션 특징
- 속성은 단일 값을 가지며 도메인에 정의된 값을 가진다.
- 속성은 서로 다른 이름을 가진다.
- 한 속성의 값은 모두 같은 도메인의 값을 가진다.
- 속성의 순서는 상관 없다.
- 릴레이션 내의 중복된 튜플은 허용하지 않는다.
- 투플의 순서는 상관이 없다.
관계 데이터 모델(ERD)
관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수를 정의한다.
관계 데이터 시스템
관계 데이터 모델을 컴퓨터 시스템에 구현한 것
SQL을 기반으로 구현한다.
무결성 제약조건
데이터를 저장하는 데이터베이스는 일관성을 유지하고 중복을 제거하는 등 데이터의 신뢰도를 유지해야 한다.
키(key)
- 릴레이션에서 특정 투플을 식별할때 사용하는 속성 혹은 속성의 집합
- 키가 되는 속성(또는 속성의 집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야한다.
- 릴레이션 간의 관계를 맺는데도 사용된다.(참조키)
슈퍼키
투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 포함하지 않아도 되는 속성(식별에 필요하지 않은 속성)도 포함할 수 있다.
후보키(candidate key)
투플을 유일하게 식별할 수 있는 최소의 집합
- 2개 이상의 속성으로 이루어진 키를 복합키(composite key)라고 한다.
기본키(PK, Primary Key)
여러 후보키 중 하나를 선정하여 대표로 삼는 키
대체키(alternate key)
기본키로 선정되지 않은 후보키
대리키(surrogate key)
기본키가 보안을 요하거나 여러개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을때는 일련번호같은 가상의 속성을 만들어 기본키로 삼을 수 있다.
대리키는 dbms나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없다.
복합키: (고객번호, 도서번호) -> 대리키: 주문번호
외래키(FK, Foreign Key)
다른 릴레이션의 기본키를 참조하는 속성
관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현한다.
외래키는 기본키와 달리 NULL값과 중복값이 허용된다.
무결성 제약조건
데이터 무결성이란 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것
도메인 무결성 제약조건
도메인 제약이라고도 한다.
릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야한다는 조건이다.
개체 무결성 제약조건
기본키 제약이라고도 한다.
릴레이션은 기본키를 지정하고 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야한다는 조건이다.
참조 무결성 제약조건
외래키 제약이라고 한다.
릴레이션 간의 참조 관계를 선언하는 제약조건이며 참조하는 릴레이션을 자식 릴레이션, 참조되는(제공하는) 릴레이션을 부모 릴레이션이라고 한다.
자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야하며, 자식 릴레이션 값이 변경될 때 부모 릴레이션의 제약을 받는다.
삭제 과정
자식 릴레이션에서 투플이 삭제되는 경우 부모 릴레이션에 영향을 주지 않지만, 부모 릴레이션에서 투플이 삭제되는 경우 문제가 발생할 수 있다.
부모 릴레이션에서 투플을 삭제할 경우
RESTRICTED : 자식 릴레이션에서 참조하고 있을 경우 부모 릴레이션의 삭제를 거부함
CASCADE : 자식 릴레이션의 관련 투플을 같이 삭제함
DEFAULT : 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함
NULL : 자식 릴레이션의 관련 투플을 NULL값으로 설정함(NULL 허용경우)
+ 고유성 제약조건
키 제약이라고도 하며 키 속성의 모든 값들은 서로 같은 값이 없어야한다는 조건이다.
NULL값을 허용한다.
제약조건의 준수 여부는 데이터 변경(삽입, 수정, 삭제)가 있을때마다 확인해야한다.
관계대수
릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어
관계대수 연산자
- 순수 관계연산 : 셀렉션, 프로젝션, 조인, 디비전, 개명
- 일반 집합연산 : 합집합, 교집합, 차집합, 카티전 프로덕트
- 셀렉션 : 투플 추출
- 프로젝션 : 조건에 맞는 속성 추출
- 조인: 카티전 프로덕트를 구하여 조건에 맞는 투플 추출(셀렉션)
- 두 릴레이션의 공통속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산
- 세타 조인 : 속성값을 비교(=, !=, <=, <, >=, >)하여 조건을 만족하는 투플 반환
- 동등 조인(equi join, 내부 조인(inner join)) : 세타 조인에서 = 연산자를 사용한 조인
- 자연 조인(natural join) : 동등 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두번째 속성을 제거한 결과 반환
- 외부 조인(outer join) : 자연 조인의 확장된 형태, 자연조인시 조인에 실패한 투플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환
left outer, right outer, full outer 존재
- 세미 조인 : 자연 조인을 한 후 한쪽 릴레이션의 결과만 반환
- 카티전 프로덕트 : 두 릴레이션을 연결하여 하나로 합침, 수평적 연산
- 결과 릴레이션 차수 : 두 릴레이션의 차수의 합
- 결과 릴레이션 카디날리티 : 두 릴레이션의 카디날리티 곱
Reference
책 : SQL Server로 배우는 데이터베이스 개론과 실습
https://m.yes24.com/Goods/Detail/97538787
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 트랜잭션, 동시성 제어 (1) | 2024.04.04 |
---|---|
[데이터베이스] 인덱스 + 심화 (커버링 인덱스, 실행 계획, 인덱스 스캔) (1) | 2024.03.22 |
[데이터베이스] SQL 고급 (내장함수, subquery, 뷰) (1) | 2024.03.21 |
[데이터베이스] SQL 기초 이론 (1) | 2024.03.14 |
[데이터베이스] 데이터베이스와 데이터베이스 시스템 (3) | 2024.03.07 |