04 - Relational Data Model, Relational Database Constraints

JeonghwanKim·2023년 8월 19일
0

데이터베이스

목록 보기
4/8

ER to Relational Mapping 방법

링크텍스트

Relational Model Concepts(관계형 모델 개념)

'Informal' 정의

Relation 정의

  • Sets(집합 : Element간 중복이 없는 집합)에 근거한 수학적 개념 , Table과 유사

  • Relational model에서 Database는 Relation의 집합으로 이루어져있다.

  • Ralation은 Flat(구성하는 Attribute간 계층이 없는)한 성질을 가진다.

  • Realation의 Row는 실제적 모델의 특정 Entity와 Relationship을 만족시키는 요소이다.

  • Row = Tuple이며 State와 유사한 개념이다.

  • Column은 속성을 대표하는 header값을 가지며, Attribute라고 부른다.

'Key' 정의

각 Row는 Table에 존재하는 Row를 유일하게 구분하는 Element를 가지고, 이를 'Key'라고 한다.

예시) STUDENT table -> Student_Number

혹은, 숫자형 row id, sequential number가 Key로 사용될 수 있는데 이를 Surrogate (or Artificial) Key 라고 한다. -> 즉, 의미있는 값만 Key로 쓰이진 않는다는 말이다.

'Formal' 정의

Relation Schema 정의

R(\combiA1, A2,\combiA3,..... \combiAn)R\left(\combi{A}_1,\ A_2,\combi{A}_3,.....\ \combi{A}_n\right)R(A1​, A2​,A3​,..... An​)​
R : Relation의 이름

A : List의 속성(attribute)

Relation R의 Degree (arity) : R의 Attributes 의 수.

각각의 Attributes는 Valid Values 집합의 Domain을 가진다.

Ex) Cust-id 는 6 digit으로 이루어져있다...

Tuple 정의

정의 : Relation Schema를 따르고 있는 Instance로, 값들의 Ordered(순서화된) set이다.

('<....>'로 표기)

Tuple의 각 값들은 appropriate Domain으로 부터 유도된다.

  • Ex) CUSTOMER relation(Table)의 한 Tuple은...

  • <632895, "홍길동", "서울 강남..." , "02-950-6372">....

  • Ordered(값의 순서화)의 이유는, 속성 (Attr)의 명칭 없이 해당되는 Element 값들만 가지고 있기 때문에 순서로 '무슨 속성'의 값인지 구분하기 때문이다.

  • Relation은 Tuple의 집합으로 이루어져있다.

Domain 정의

- Domain은 D로 표기되고, 단일 원자성 값들의 집합이다.

- Logical Definition, 또는 Name을 가진다.

Ex) 한국 폰 번호는 11개의 Digit의 집합으로 나타나고, 한국에서만 유효하다.

- 정의된 Data Type, Data Format을 가진다.

Ex) 폰번호는 (01X)-dddd-dddd 형식을 따른다.

Ex) Dates는 연,월,일에 대해 YYYY-MM-DD 등 형식을 따른다.

- Attribute Name

Relation에서 Domain을 알려주는 역학을 한다.

Data Elements의 의미를 해석하는데에 사용된다.

Ex) Invoice-date, Payment-date와 같이 서로 다른 의미를 이름으로 구분 가능.

State (변화 가능) 정의

Relation State

  • Attribute의 Domain을 만족하는 모든 가능한 조합의 부분집합을 가능한 값으로 갖는다.

  • Ex) Cust-id는 4Byte의 integers를 갖는데, 모든 가능한 조합들이 Cust-id의 값이 될 수 있다.

'Formal'의 요약 정리

Relation R(A1,A2,...,An) 에 대하여

  • r(R)⊆dom(A1)×dom(A2)×...×dom(An) -> 가능한 모든 조합은 state의 가능성이 있다.

R(A1​, A2,...,An)

: relation의 schema

R

: relation의 name

A1,A2,...,An

: relation의 attributes

r(R)

: relation R의 특정 state

R에 존재하는 tuples의 set

r(R)

=t1,t2,...,tm, ti는 n-tuple

ti =<v1 ,v2,...,vn>, 각 vj는 dom(Aj)의 element

tuple의 순서는 중요하지 않지만, attribute의 순서는 중요하다.

Characteristics Of Ralation

  1. Tuple의 저장 순서는 상관없다.

  2. Tuple Orderin은 Relation Definition의 부분이 아니다. Logical/Abstract level에서 Facts를 표현하려고 하기 때문이다.

  3. 그러나 R(A1,A2,A3...An)의 Attributs의 순서는 지켜져야한다.

  4. Relation의 Definition에 의해 n-tuple n values의 정렬된 list형태이다.

위의 두 경우는 Identical한데, 이는 Relation 정의에 Ordering이 포함되지 않기 때문이다.

또한 이러한 Tuples는 Name과 Value가 함꼐 존재하기 때문에 "Self-Describing"이라고 한다.

  1. Values in a Tuple

모든 value는 단일원자성을 띈다.

  • 복합(Composite)과 다중값(Multi-values) Attribute는 허용되지 않는다.

  • 이에 대해 First Normal Form Auupmtion에 기반을 둔 Flat relational model이라고 한다.

  • Composite attributes -> simple Attributes로 변환한다.

  • Multi-valued ->separate relations로 나눈다.

이미지 출처 - https://velog.io/@bsu1209/DB-The-Relational-Data-Model-and-Relational-Database-Constraints

  • 각 Tuple의 value는 Column에 해당하는 attribute의 domain을 만족해야한다.
  1. NULL values in certain tuples (특정 Tuple의 NULL 값)

Unknown : 모를때 사용

Not available : 아직 이용 가능하지 않을때 사용

Inapplicable : 다른 Data Format 형태 때문에 사용

  1. Notation (표기법)

R.A : A = Attribute, R = Relation 즉, Relation에 속한 Attribute를 뜻한다.

ㄴ 이때 특정 Relation 안에서 Attribute의 이름은 각기 달라야한다.

t[Ai] or t.Ai : tuple T의 Attribute Ai의 값인 vi를 뜻함.

정답은 Benjamin Bayer, <305-61,2435, 3.21, 19 > 가 된다.

Constraints (제약조건)

제약조건은 DB의 일관성, 무결성을 유지하기 위해 사용되는 조건이다.

3가지의 분류가 있다.

1. Inherent, implicit constraints (내재된 제약조건)

Ex) Attributes, 이름이 다 달라야한다... 등등

2. Schema-based, Explicit constraints (외부 표출 제약조건)

Ex) A는 B를 참조한다... A : B = 1 : N 등등

3. Application-based, semantic constraints (응용단에서 거는 제약)

Ex) 나이가 65세 이상인 사람의 임금을 배로 하세요 등등

Data model 자체에서 표현이 안 되는 사항들임

1. Integrity Constraints

Integrity (무결성) : 정확한 Data를 가지고 있음을 뜻 함. 줄여서 IC

제약조건은 모든 유효한 Relation States에서 예외 없이 지켜져야 하는 Condition임.

Key (키 제약조건)

- Unique Constraints(유일 제약 조건)

: 단일 값을 가져야한다

Entity Integrity (엔티티 무결성 제약조건)

: Key 속성에 대해 NULL을 허용하지 않음

Referential Integrity (참조 무결성 제약조건 )

: 참조하는 속성이 무결해야한다.

Domain (도메인 제약조건)

: Tuple의 모든 값은 Domain을 지켜야한다.

Key Constraints

Relation안의 모든 Tuple은 구별 가능 해야한다.

이는 Sets (중복없는 집합)의 속성 때문이다

Superkey

  • 모든 Relation State 중에서 SK는 어떤 t[Ai]값과도 겹치지 않는다. (Uniqueness property)

  • Key는 Superkey이다. 그러나 그 역은 성립하지 않는다.

Skey1과 Skey2는 둘 다 SuperKey이다.

  • 어떠한 Key든 Superkey는 되지만 역은 성립 안 한다.

  • Key를 포함한 Attributes는 어떤 set이든 Superkey가 된다.

    	모든 tuple을 유일하게 식별할 수 있게 해줌 (Key)
    
    	다른 추가적인 atribute로 구분할 수 있다해도 이미 가진 걸로도 충분히 됨 (Superkey)

링크텍스트

이해를 위한 링크

요약하자면, Superkey는 유일성은 만족하지만 최소성을 만족하지 않기에 Key가 될 수 없다.

Relation Schema는 여러 개의 Key를 가질 수 있는데 이들을 Candidate Key(Secondary key)

즉, 후보키라고 부르고,

이 중 하나를 선택해서 (보통 Attribute의 Size가 가장 작은 걸 선택) Primary Key라고 한다.

SKEY1 = VIN

SKEY2 = State, REG#

이때 SKEY1이 primary key가 될 수 있겠다.

Primary Key는 아래의 경우에 사용된다.

Relation에서 각 Tuple을 유일하게 식별하는 경우

한 Tuple에서 다른 Tuple을 참조하는 경우, Foreign key(외래키) 로 표현

Relational Database Schema

동일한 Database에 속한 Relation Schemas S의 Set

S : Database Schema의 이름

S = R1, R2.... Rn 으로 이루어졌고, 각각의 Relation은 IC를 만족한다.

위의 E-R 다이어그램은 아래와 같은 Relational Database Schema로 거듭난다.

Relation Database의 State

State는 알다싶이 특정 상태이고.

이들의 State 역시나 Schema의 속성을 만족한다. (IC 등)

이를 Relation Database State 혹은 Relational database Snapshot( or Instance)라 한다.

제약 조건을 만족하지 않는 State는 타당하지 않다 (Invalid)

위 예시는 Valid한 State들이 Tuple로 Relation에 속해있음을 보여준다.

2. Entity Integrity (개채 무결성 제약 조건)

PK (Primary Key Attribute),는 NULL 값을 가지지 않는다는 조건.

PK는 후보키들 중에서 선정된 특별한 Key라는 사실을 다시 기억.

  • t[PK]는 NULL이 될 수 없다.

  • 왜냐면, PK는 각각의 Tuple을 구분해야하는 값인데 NULL이 되면 안 되겠지?

3.Referential Integrity (참조 무결성 제약 조건)

앞선 제약 조건은 1개의 Relation에 관해서만 다룬 제약이지만

참조 무결성 제약 조건은 두 Relations가 관련된 제약 조건이다.

  • 두 relations에 있는 Tuples 간의 일관성을 유지하기 위해 사용된다.

    	Ex) Eno of EMPLOYEE
    
    	모든 EMPLOYEE tuple에 있는 Dno 값은 DEPARTMENT relation에 있는 Dnumber값과 매치되어야한다.
  • 두 Relations에 있는 Tuples 간의 관계를 표현하기 위해 사용

Referencing Relation (참조하는 Relation) - FK (Foreign Key)를 가진다.

위 예시에서 Dno가 된다.

Referenced Relation (참조되는 Relation) - PK (Primary Key)를 가진다.

위 예시에서 Dnumber가 된다.

Referencing Relation의 Foreign Key는 아래의 두 값 중 하나를 가진다.

  • t1[FK] = t2[PK] : 두 값이 같은 값

  • 혹은 NULL, 이때 FK는 PK에 속해서는 안 됨, Entity Integrity 위반.

화살표 시작 = FK, 화살표 끝 = PK

제약 조건과 관련된 명령

1) INSERT, 2) DELETE, 3) UPDATE

위와 같은 명령을 수행할때 Relational DB에서 IC를 위반해서는 안 된다.

  • UPDATE는 자동적으로 다른 UPDATE를 유발 가능

  • IC 위반의 경우 몇가지 Actions이 발생가능

    	- Operation Cancel
    
    	- Operation 정상 수행 후 사용자에게 Alert
    
    	- 추가적인 UPDATE를 Trigger하여 위반 고치기
    
    		-- CASCADE (갱신 전파), SET NULL, SET DEFAULT 등
profile
제대로 한번 해보겠습니다.

0개의 댓글