4. Relational Model: Basic Concepts

코와->코어·2021년 10월 7일
0

데이터베이스

목록 보기
4/6
post-thumbnail

Relational Model

가장 널리 사용되는 데이터베이스 모델 : Relational Model
관계형 DBMS : MySQL, DB2, Oracle, Sybase, SQL server 등

"관계"기반 모델
관계는 "집합"에 기반을 둔 수학적 개념

장점:

  • 간단하고 사용자 친화적인 자료 구조
  • 데이터 추상화 제공
  • 데이터 독립성 제공
  • Provide High-level programming

관계는 주어진 집합들을 곱셈한 결과의 부분집합
관계는 튜플들의 유한한 집합

Example : Let D1 = {0, 1}, D2 = {a ,b, c}; Then,
- r1 = {<0, a>, <0, b>, <1, c>} 3 tuples
- r2 = {<1, a>, <1, b>} 2 tuples

관계는 “table(행/열)”로 표현 가능
행: 튜플-entity/relationship
열: 속성-attribute

Properties of Realtion

  • 관계의 튜플들의 개수는 유한하다
  • 튜플들의 순서는 중요하지 않다
  • 중복되는 튜플들은 허용되지 않는다
  • 관계의 각각의 속성은 서로 다른 이름을 가져야 한다

속성값:

  • 각각의 속성값은 쪼갤 수 없는 하나의 값이어야 한다. Multi-valued(or composite) 속성은 허용되지 않는다
  • NULL은 허용된다. “unknown”, “unavailable”, or “undefined”을 의미한다

Key

Super key: 유일성

  • 관계 R에 대한 속성들의 집합을 K라 할 때, K에 대한 어떤 튜플도 같은 값을 갖지 않는다
  • 속성 K의 값들은 관계 R의 튜플들을 유일하게 식별할 수 있다

Key: 유일성+최소성

  • superkey에 속하는 속성의 부분집합을 포함하지 않은 superkey.
  • superkey K에서 어떤 속성을 제거하면 더 이상 superkey가 아니게 된다. 즉, 더 이상 튜플들을 식별할 수 없게 된다
  • 모든 key는 superkey 이지만 그 역은 아니다

ex) 학생 식별
keys = {SSN}, {Name, Address}
{Name, Address}에서 둘 중에 어느 하나를 지워도 식별 못 하게 됨. 꼭 둘이 같이 있어야 식별할 수 있음 따라서 최소성을 만족함
superkey는 SSN을 포함한 모든 속성들의 부분집합 {SSN, Name} 등
식별할 때 superkey보다 최소성을 가진 key를 사용하는 것이 더 편리함

Candidate Key : 하나의 관계에는 key가 여러 개 있을 수 있다. 이때, 각각의 key를 candidate key라고 한다

Key 유형

  • Simple Key : 하나의 속성
  • Composite Key : 두 개 이상의 속성으로 구성됨

Primary Key 우선 키, 주 키

  • 하나의 관계에 여러 개의 키가 있을 때 실제 식별 목적으로 사용할 키를 골라야 한다. 이를 Primary Key (PK)라고 하고 밑줄로 표시한다

Good Primary Key

  • Stable : 데이터베이스 구축해서 운영하는 기간 동한 변하면 안 됨
  • Definitive : 값이 항상 존재해야 함
  • Numeric : 문자보다 숫자가 낫다
  • Minimal : 가능한 한 속성이 작아야 함
  • Short : 키 크기가 작아야 함
  • Security : 민감한 정보가 노출되면 안 됨

Relational Integrity Constraints

무결성 제약조건은 모든 관계들이 만족해야만 하는 조건으로, 세 가지 종류가 있다.

  • Key Integrity
  • Entity Integrity
  • Referential Integrity

Key Integrity

  • 어떤 key K의 속성값들은 서로 다른 값이어야 한다. 중복되는 값을 가지면 안 된다

Entity Integrity

  • 어떤 관계의 Primary key PK의 어떠한 튜플도 null 값을 가져서는 안 된다

Referencial integrity

참조 무결성은 관계들 사이의 튜플들의 관계를 명시한다

관계가 관계를 참조하고/참조할 때 공통 속성을 포함해야 한다
이때, 참조되는 관계에서 Primary key 속성을 주고, 참조하는 관계에서 이 속성을 받아Foreign key(FK)라고 부른다

FK에 허용되는 값들은? 즉, 다른 관계에서 불러올 수 있는, 참조할 수 있는 값은?
1) 참조되는 PK에 현재 존재하는 값이어야 한다
2) null value도 허용 가능하다 (단, 참조하는 FK값이 자기 자신의 PK를 구성할 때에는 허용 안 됨)

자기 자신 참조해도 됨

Referential integrity could be violated by following cases;
Case 1 : 참조되는 관계에서 퓨틀 삭제/업데이트
Case 2 : 참조하는 관계에서 튜플 삽입

If integrity violated, several optional actions can be taken:
(1) 해당 오퍼레이션 거절하고 사용자에게 이유 설명
(2) 오퍼레이션 수행하고 수정하라고 요청
(3) 추가적인 행동 일으키고 시스템에서 수정하라고 요청
- by CASCADE, SET NULL, SET DEFAULT

profile
풀스택 웹개발자👩‍💻✨️

0개의 댓글