<데이터베이스 개론과 실습>을 요약 정리한 글입니다.
문제가 될 시 글을 내리도록 하겠습니다.
1. 관계데이터모델?
관계 데이터모델은 IBM 연구소에서 근무하던 수학자 에드가 코트 박사가 제안한 개념이다.
이는 수학의 집합 이론에 근거하고 있어 타모델에 비해 튼튼한 이론적 토대를 가지고 있고,
비절차적인 언어로 원하는 데이터를 쉽게 표현하는 장점이 있다.
대표적인 DBMS로는 Oracle, SQL Server, DB2, MySQL, PostgreSQL, SQLite 등이 있다.
용어정리
데이터모델에서
relation은 관계가 아닌 행과 열로 된 테이블이다.
Schema은 관계데이터베이스의 relation(테이블)이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다.
스키마는 테이블의 첫 행인 헤더에 나타나며 각 데이터의 특징을 나타내는 속성, 자료 타입 등의 정보를 담고 있다.
Instance는 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합이다.
그림으로 나타내면 아래와 같다.
릴레이션의 특징은 아래와 같다.
- 속성의 값은 단일 값을 가진다. 즉, 도메인에 정의된 값만 가지며 모두 단일 값이여야 한다.
- 속성은 서로 다른 이름을 가진다. 즉, 속성은 한 relation에서 서로 다른 이름을 가져야만 한다.
- 한 속성의 값은 모두 같은 도메인 값을 가진다.
- 속성의 순서는 상관없다.
- relation 내의 중복된 투플은 허용하지 않는다.
- 투플의 순서는 상관없다.
릴레이션의 구성은 아래와 같다.
- 데이터를 2차원 테이블 형태인 relation으로 표현한다.
- relation에 대한 제약조건을 가진다.
- 관계연산을 위한 관계대수를 정의한다.
⇒ 이러한 관계데이터모델을 컴퓨터 시스템에 구현한 것이 관계데이터베이스 시스템(DBMS)이라고 할 수 있다.
2. 무결성 제약조건
1) 키 (key)
관계데이터베이스에서 키(KEY)는 relation에서 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합이다.
키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 한다.
즉, 키를 통해서 각 relation의 투플을 유일하게 식별할 수 있으며, 동시에 키는 각 relation 간의 관계를 말해주는 연결고리이다.
슈퍼키 (Super key)는
튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합이다.
튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키 가능하며, 아래와 같은 예시를 가진다.
- (주민번호), (주민번호, 이름), (주민번호, 이름, 주소), (주민번호, 이름, 핸드폰),
(고객번호), (고객번호, 이름, 주소), (고객번호, 이름, 주민번호, 주소, 핸드폰)
후보키(Candidate key)는
튜플을 유일하게 식별할 수 있는 속성의 최소집합이다.
아래와 같은 예시를 가진다.
- (고객번호), (주민번호), (고객번호, 주민번호)
기본키(Primary key)는
여러 후보키 중 하나를 선정하여 대표로 삼는 키로서,
후보키가 하나 뿐이라면 그 후보키를 기본키로 사용하면 되고 여러개라면 릴레이션의 특성을 반영하여 하나를 선택한다.
기본키는 릴레이션을 대표하므로 선택하기 전 여러사항을 고려해야함 (개인정보 등)
제약조건은 아래와 같다.
- relation 내 tuple을 식별할 수 있는 고유한 값을 가져야함
- NULL 값은 허용되지 않음
- 키 값의 변동이 일어나지 않아야 함
- 최대한 적은 수의 속성을 가진 것이어야 함
- 향후 키를 사용하는 데 있어서 문제발생 소지가 없어야 함
대리키(surrogate key, artificial key)는
일련번호와 같은 가상의 속성을 만들어 기본키로 삼는 경우이다.
기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 경우 대리키를 사용한다.
대체키(alternate key)는 기본키로 선정되지 않은 후보키이다.
외래키(foreign key)는
단일 relation 기준이 아닌 다른 relation의 기본키를 참조, 관계 데이터 모델의 특징인 릴레이션 간의 관계 relationship을 표현하며,
외래키 성립을 위해서는 참조하고 참조되는 양쪽 릴레이션의 도메인이 같아야한다.
특징은 아래와 같다.
- 또한 참조되는 릴레이션의 기본키 값이 변경되는 참조하는 외래키값도 변경 되어야 한다.
- 꼭 다른 릴레이션일 필요는 없고, 자기 자신의 기본키를 참조할 수도 있다.
- NULL 값 및 중복값 허용된다.
- 외래키가 기본키의 일부가 될 수 있다.
2) 무결성 제약조건
데이터 무결성은 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것이다.
DBMS가 데이터의 삽입, 삭제, 수정 시 필요한 기본적인 제약조건을 지켜준다면 프로그래머의 부담을 줄일 수 있음
무결성 제약조건에는 몇가지 종류가 있는데 아래와 같다.
- 도메인 무결성 제약조건(Domain Integrity Constraint)
- relation 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야한다는 조건
- 예를 들어, 주문일은 날짜만, 영문 도서명에는 영문만
- 개체 무결성 제약조건(Entity Integrity Constraint)
- (=기본키 제약(Primary Key Constraint))
- 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야한다는 조건
- 참조 무결성 제약조건(Referential Integrity Constraint)
- (=외래키 제약(Foreign Key Constraint)
- 참조되는(제공하는) 릴레이션 = 부모 릴레이션
- 참조하는(제공받는) 릴레이션) = 자식 릴레이션
- 자식릴레이션의 외래키는 부모 릴레이션의 기본키와 동일해야하며,
자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것 - 부모 릴레이션의 도메인과 다른 값을 삽입하거나, 수정될 경우 거부됨
- 반대로 자식 릴레이션에서 참조하고 있는 값을 부모 릴레이션에서 삭제하거나 다른 값으로 변경하려고 하면 거부됨
- 삭제시 좀 더 구체적으로는 아래와 같음
'Study > DB' 카테고리의 다른 글
[DB] Join과 인덱스 (2) | 2023.04.02 |
---|---|
[DB] 트랜잭션, 동시성제어, 트랜잭션고립수준 (0) | 2023.04.02 |
[DB] 이상현상, 함수종속성, 정규화, 정규형 (0) | 2023.04.02 |
[DB] 데이터베이스 시스템이란? (0) | 2023.04.02 |