
모든 데이터를 테이블 형태로 저장하고 관리하는데 테이블의 열(column) 을 필드라 부르고 이는 관계 데이터 모델의 애트리뷰트라고 한다. 테이블의 행(row) 를 레코드라고 부르고 관계 데이터 모델의 투플이라고 부르게 된다.
열 → 애트리뷰트
행 → 투플
- 애트리뷰트
- 릴레이션(테이블)의 한 속성
- 한 릴레이션 내에서 애트리뷰트 이름들은 모두 달라야한다.
- 도메인의 역할(role) 이름을 말한다.
- 도메인(domain)
- 각 애트리뷰트가 취할 수 있는 값들의 집합
- 각 애트리뷰트의 타입에 이름을 부여한 것이다
- 모든 DBMS 가 도메인을 명시적으로 지원하지는 않는다.
릴레이션의 개념
학생이라는 테이블을 만들때 학번, 이름, 학과, 학년같은 개체들의 속성들을 애트리뷰트로 정하게 되는데 애트리뷰트의 타입도 당연히 정하게 된다. int , Char 등등
도메인을 정의해서 해당 도메인에 구체적인 타입을 정할 수 있다.
create domain DSNO INTEGER;
create table STUDENT(Sno DSNO)
Create table STUDENT
(Sno INTEGER,
Sname VARCHAR(),
Year INTEGER,
Dept CHAR())
이렇게도 작성 가능하다.

- 릴레이션 스키마
- 애트리뷰트의 집합
- 시간에 따라 변경되지 않는 정적인 성질
- 릴레이션 인스턴스
- 어느 한 시점에 릴레이션 R 이 포함하고 있는 투플들의 집합
- 삽입, 삭제, 갱신으로 시간에 따라 변하는 동적 성질
- 릴레이션
- 개념정인 정의로는 릴레이션 스키마 + 릴레이션 인스턴스
- 수학적인 정의로는 애트리뷰트 도메인들의 곱집합의 부분집합
차수와 카디날리티
릴레이션의 차수(degree) : 릴레이션의 애트리뷰트 갯수
릴레이션의 카디날리티(cardinality) : 릴레이션의 투플의 갯수
두개의 릴레이션을 곱집합할 때 차수는 양쪽 릴레이션 차수의 합이 되고 카디날리티는 양쪽 릴레이션 카디날리티의 곱 만큼 늘어나게 된다.
연습문제

(1) R : 3 / S : 2
(2) R : 2 / S : 3
(3)
a1 | a2 | a3 | b1 | b2 |
1 | 2 | 3 | 가 | 나 |
1 | 2 | 3 | 나 | 다 |
1 | 2 | 3 | 다 | 라 |
11 | 12 | 13 | 가 | 나 |
11 | 12 | 13 | 나 | 다 |
11 | 12 | 13 | 다 | 라 |
(4) 차수 : 5 / 카디날리티 : 6
릴레이션의 특성- 테이블과의 차이점
1) 투플의 유일성 : 테이블에서는 같은 내용이 있어도 되지만, 릴레이션에서는 동일한 투플이 있으면 안된다.
2) 투플의 무순서성 : 테이블은 순서가 있지만 릴레이션은 집합이기 때문에 그 안에 순서없이 저장되어 있다고 봐야한다.
3) 애트리뷰트의 무순서성 : 집합이기때문에 순서는 없다.
4) 애트리뷰트의 원자성 : 애트리뷰트 값은 단일값을 가져야하고 복수의 값을 가지면 안된다. 복수의 값을 가지고 있으면 정규화가 되어있지 않다고 본다. → 애트리뷰트 값으로 원자값만 허용되고 널 값도 원자 값을 취급한다.
개체간의 카디날리티 관계 유형
- 1:1 관계 개인 : 면허증, 자동차 : 자동차 등록증, 국가 : 수도 릴레이션 설계 - 한쪽은 기본키, 한쪽은 외래키로 연결
- 1:N 관계 부모 : 자녀, 강좌 : 강의, 회사 : 직원 릴레이션 설계 - 1쪽에 기본키, N쪽에 외래키로 연결
- M:N 관계 학생 : 과목, 배우 : 영화, 프로젝트 : 팀원 릴레이션 설계 - 새로운 관계 테이블을 만들고, 양쪽의 기본키를 외래키로 배치
관계 데이터베이스 개념
관계 데이터베이스
= 테이블들의 집합, 데이터베이스를 시간에 따라 그 내용이 변할 수 있는 테이블 형태로 표현
관계 데이터베이스 스키마
= 릴레이션 스키마 + 무결성 제약 조건 + 인덱스 구성
으로 이루어져있다.
database : a set of relations
relation instance : a set of tuples
relation schema : a set of attributes
라고 표현할 수 있다.
릴레이션의 키(key)
- 키 (key)
- 릴레이션 안에서 각 투플을 유일하게 식별할 수 있는 애트리뷰트, 애트리뷰트의 집합을 말한다.
- 후보 키
- 릴레이션 R (A1, … An) 에 대한 애트리뷰트 부분집합, K 이 다음 두 성질을 만족해야한다.
- 유일성
각 투플에 대해 K 의 값이 유일하다. - 최소성
K 는 각 투플을 유일하게 식별하는데 필요한 애트리뷰트만 포함한다. 예를 들어서 k = {a1, a2, a3} 이런 애트리뷰트 조합을 가지고 있는 후보키가 있다고 보자. 유일성을 만족하려면 a1, a2,a3 가 전부 다른 값이어야한다. 만약에 a3 가 없어도 유일성을 가질 수 있다면 이 키는 최소성을 만족시키지 못한것.
- 유일성
- 릴레이션 R (A1, … An) 에 대한 애트리뷰트 부분집합, K 이 다음 두 성질을 만족해야한다.
- 슈퍼 키
- 유일성은 만족하지만 최소성은 만족하지않은 애트리뷰트의 집합
- 기본 키 (primary key)
- 후보 키 중에서 지정된 하나의 키를 말한다. (데이터베이스 설계자가 지정)
- 각 투플에 대한 기본 키 값은 항상 유효한 값이어야 한다. (null 값은 허용 x)
- 대체 키 (alternate key)
- 후보 키 중에서 기본 키를 제외한 나머지 후보 키
연습문제

키 : sno, email
후보키 : sno, email
기본키 : sno
수퍼키 : sno+sname 와 같이 후보키를 가지고 있으면 괜찮음
대체키 : email
외래키(Foreign key)
릴레이션 R 의 애트리뷰트 FK 가 릴레이션 S 의 기본키를 가리킬 때, 이 FK 는 R 의 외래키이다. → (R 의 FK 도메인) = (S의 기본키의 도메인)
null 값도 가능하다.
R 의 참조 릴레이션, S 를 피참조 릴레이션이라고 한다.
관계형 데이터 모델에서는 기본키와 외래키에 의해서 개체 간의 관계를 유지한다. 기본키 - 외래키 개념은 관계형 데이터베이스의 핵심 아이디어다!

관계형 데이터베이스의 무결성 제약
- 개체 무결성
기본 키 값은 언제 어느 때고 null 값을 가질 수 없고 중복 값을 가질 수 없다. - 참조 무결성
외래 키 값은 반드시 피참조 릴레이션의 기본키 값으로 존재하는 값이거나 null 값이어야 한다. - 도메인 무결성
애트리뷰트의 값이 해당 도메인에 속한 값이어야 한다.
데이터베이스 상태(database state)
- 어느 한 시점에 데이터베이스에 저장되어 있는 모든 데이터 값
- 어느 한 시점의 릴레이션 인스턴스의 집합
- 데이터베이스 상태는 삽입, 삭제, 변경 연산으로 계속적으로 변화한다.
DBMS 는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족시켜야한다.
'Database' 카테고리의 다른 글
MySQL 로 테이블만들고, 간단한 검색하기 (0) | 2024.04.08 |
---|---|
SQL 개요 및 DDL (0) | 2024.04.04 |
관계대수 (0) | 2024.04.03 |