1. 관계형 데이터베이스란(Relational Database)? 🔔
- 관계형 데이터베이스는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류입니다.
- 관계형 데이터베이스란 2차원 테이블(Table) 형태로 이루어져 있으며, 이 테이블은 키(Key)와 값(Value)의 관계를 나타냅니다.
- 이처럼 데이터의 종속성을 관계(Relationship)로 표현하는 것이 관계형 데이터베이스의 특징입니다.
- 현재 많이 사용되는 관계 데이터 모델 DBMS는 Oracle, MySQL, SQL Server 등이 있습니다.
2. 관계 데이터 모델의 개념 👨🏫
2.1 릴레이션
- 릴레이션(Relation): 행과 열로 구성된 테이블
- 속성(Attribute): 세로 값으로 열(Column)이라고도 한다.
고유한 이름을 가지며 동일 릴레이션 내에서는 같은 이름의 속성 존재 불가
단, 릴레이션 다르면 OK
- 튜플(Tuple): 가로 값으로 행(Row)이라고도 한다.
- 차수: 속성의 개수
단, 유효한 릴레이션의 최소 차수는 1이다.
- 카디날리티: 튜플의 개수
- 스키마: 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의
첫 행 헤더에 나타내며각 데이터의 특징을 나타내는 속성, 자료타입등의 정보를 담아냄
- 인스턴스: 정의된 스키마에 따라 테이블에 실제 저장된 데이터의 집합
💨💨💨 위의 그림과 같이 릴레이션이란 데이터를 행과 열로 구성된 테이블로 표현한 것입니다. 세로의 값을 속성, 가로의 값을 튜플이라고 하고 여기서 도서번호, 도서이름, 출판사, 가격때문에 차수가 4가 되며, 5개의 가로줄을 가지므로 카디날리티가 5가 됩니다.
2.2 스키마 구성요소
- 속성(Attribute): 릴레이션 스키마 열
- 차수(Degree): 속성의 개수
- 도메인(Domain): 속성이 가질 수 있는 값의 집합
여기서 도메인이란 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합이라고 할 수 있습니다. 도메인이라는 개념이 필요한 이유는 릴레이션에 저장 되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리하기 위해서 입니다.
예를 들어 '성별'이라는 속성이 있다면 이 속성이 가질 수 있는 값은 '남' 또는 '여'입니다. 성별의 도메인으로 'SEX'를 정의하고 그 값으로 '남', '여'로 지정한 뒤 '성별'이라는 속성은 'SEX'도메인에 있는 값만을 가질 수 있다고 지정해 놓으면 사용자들이 실수로 남, 여 이외의 값을 입력하는 것을 방지할 수 있습니다.
2.3 인스턴스 구성요소
- 튜플(Tuple) : 릴레이션의 각 행
- 카디날리티(Cardinality): 튜플의 수
튜플(Tuple)이 가지는 속성의 개수는 릴레이션 스키마의 차수와 동일하고,
릴레이션 내의 모든 튜플들은 서로 중복되지 않아야 함
2.4 릴레이션 특징
- 속성은 단일 값을 가진다
- 속성은 서로 다른 이름을 가진다.
- 한 속성의 값은 모두 같은 도메인 값을 가진다
- 한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음
- 속성의 순서는 상관없다.
- 릴레이션 내의 중복된 튜플은 허용하지 않는다.
- 튜플의 순서도 상관없다.
3. 키(Key) 📚
3.1 키의 개념
- 키(Key)는 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
- 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)입니다.
3.2 키의 특성
- 유일성(=슈퍼키): 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함
- 최소성(=후보키): 꼭 필요한 최소한의 속성들로만 키를 구성함
키는 릴레이션 간의 관계를 맺는 데도 사용됨
3.3 키의 종류
-
슈퍼키(Super Key): 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음
-
후보키(Candidate Key): 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 합니다.
-
기본키(Primary Key): 여러 후보키 중 하나를 선정하여 대표로 삼는 키
- 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고, 여러 개라면 리레이션의 특성을 반영하여 하나를 선택하면 됨
- 후보키 중에서 선택한 주키
- NULL 값을 가질 수 없습니다.
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없습니다.
- 릴레이션 스키마를 표현할 때 기본키는 밑줄(_)을 그어 표시합니다.
여기서 NULL값이란?
- '없다', '존재하지 않는다'라는 의미로 데이터 값이 입력되는 않은 경우 DBMS는 NULL이라는 특수한 값을 저장합니다.
-
대체키(alternate Key): 기본키로 선정되는 않은 후보키
- 후보키가 두개 이상일 때 기본키를 제외한 나머지 후보키들을 말합니다.
- 보조키라고도 합니다.
-
외래키(foreign Key): 다른 릴레이션의 기본키를 참조하는 속성
- 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현함
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 합니다.
- 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됩니다.
- NULL값과 중복 값 등이 허용됩니다.
- 자기 자신의 기본키를 참조하는 외래키도 가능합니다.
3.4 키 예제
- 다음과 같은 릴레이션이 존재할 때 각각의 키값을 알아보자!
-
슈퍼키: 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 따라서 슈퍼키는 고객번호와 주민번호를 포함한 모든 속성의 집합이 슈퍼키로 가능하다.
ex) (고객번호), (주민번호), (고객번호, 이름), (고객번호, 이름, 주소), (주민번호, 이름), (주민번호, 이름, 주소, 핸드폰) 등
-
후보키: 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 고객번호, 도서번호가 해당
-
기본키: 고객번호, 도서번호 둘중에 하나 선택 가능
- 고객번호, 도서번호 둘 중에 하나 선택 가능
-
대체키: 기본키로 선정되지 않은 후보키
- 고객번호, 주민번호 중 고객번호를 기본키로 정하면 주민번호가 대체키가 됨
-
외래키: 다른 릴레이션의 기본키를 참조하는 속성을 말함
- 말그대로 다른 릴레이션의 기본키를 참조하게 되면 그 속성은 바로 외래키가 됨
4. 데이터 무결성(Integrity) 🤷♂️
4.1 데이터의 무결성
데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다.
데이터의 무결성을 유지하는 것은 데이터베이스 관리시스템(DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다.
데이터 베이스에서 말하는 무결성에는 다음과 같은 4가지 종류가 있다.
- 개체 무결성(Entity integrity)
- 모든 테이블이 기본 키(Primary key)로 선택된 필드를 가져야 한다.
기본 키로 선택된 필드는 고유한 값을 가져야 하며, 빈 값은 허용하지 않는다.
- 참조 무결성(Referential integrity)
- 관계형 데이터베이스 모델에서 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것을 말한다.
- 도메인 무결성 제약조건
- 도메인 무결성은 테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 필드의 타입, NULL 값의 허용 등에 대한 사항을 정의하고, 올바른 데이터의 입력을 되었는지를 확인하는 것이다. 예를 들어, 주민등록번호 필드에 알파벳이 입력되는 경우는 도메인 무결성이 꺠지는 경우라고 볼 수 있다. DBMS의 기본값 설정, NOT NULL 옵션 등의 제약 사항으로 도메인 무결성을 보장할 수 있다.