관계 모델
-
관계 모델
실제 세게의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델
-
데이터 모델
”~~라는 개념을 사용해 데이터를 표현해 주세요”라고 정의 하는 것
수학의 집합론에 근거한 모델
릴레이션(테이블)의 연산을 술어 논리로 표현할 수 있어야 함
릴레이션 단위로 다양한 연산을 사용해 질의를 수행하는 데이터 모델
SQL과 다른 개념
RDB 에 직접 구현할 수 있도록 DB 구조 정의하는 방법 제공함. 테이블을 설계하는 과정으로 보면 되고 ER 다이어그램을 기반으로 작업하는 것이 순서
릴레이션의 관계를 표현 하는 것
-
릴레이션 (Relation)
개체를 표현하기 위한 데이터 구조
2차원 테이블로 표현
heading(스키마), body(본체)로 구성
SQL 의 테이블에 대응됨
-
heading
속성이 n개가 모인 집합
이름, 데이터형으로 구성됨
-
body
속성 값의 집합인 튜블의 집합
-
-
튜플
하나의 개체를 의미
Relation에서 행으로 표현하며 이를 릴레이션 상태(Relation State)라고도 함
각 튜플은 유일해야 한다는 특징이 있음
SQL의 row와 대응됨
-
애트리뷰트
개체의 속성들을 의미
Relation에서 열로 표현
SQL 의 column과 대응
-
-
제약 조건
관계 모델이 정의되기 위한 조건
-
무결성 제약 조건
한 객체에 저장되는 데이터를 제한하는 조건
-
도메인 제약 조건
각 튜플의 애트리뷰트는 도메인에 속하는 값이어야 함
-
엔티티 무결성 제약 조건
기본 키 값은 NULL이 될 수 없음
-
참조 무결성 제약 조건
어떤 릴레이션 A의 튜플이 다른 릴레이션 B의 튜플을 참조하려면, 참조하려는 그 튜플은 B릴레이션 내에 존재해야 함
외래 키(Foreign key)는 참조 무결성 제약 조건을 만족해야 함
-
-
키 제약 조건
서로 다른 튜플은 동일한 키 애트리뷰트를 갖지 않아야 한다는 조건
-
-
ER 모델을 관계 모델로 변환
개념적 설계인 ER 모델을 논리적 설계인 관계 모델로 바꾸는 방법
ER 모델을 Relation모델로 변환할 떄의 주의점, 두 Entity간의 관계성에 다라 릴레이션의 수를 줄일 수 있는 방법
릴레이션이 많아지는 것은 연산지 복잡해진다는 것을 의미하기 때문에 릴레이션의 수를 줄이는 것이 좋음
Attribute에 따라, Relationship에 조금 다른 방법 적용 되는데 이 부분 주의해서 모델 작성 해야 리소스 낭비 초래 방지됨
-
Relation Type
두 Entity의 primary key를 Attribute로 하는 하나의 릴레이션으로 만들 수 있음
-
일반적인 변환
하나의 Entity는 한 개의 Relation으로 대응
Entity가 가지고 있는 Attribute들은 Relation의 Attribute로 대응
Relation Entity인 Takes역시 하나의 Relation으로 표현
-
복합 Attribute
복합 Attribute를 구성하고 있는 독립된 Attribute들을 나눠서 관계 모델의 Attribute로 작성함
-
약한 개체
약한 개체를 독립된 Relation으로 작성해야 함
-
유도된 Attribute
유도된 Attribute는 Relation모델에서 생랴됨
-
다중값 Attribute
다중값 Attribute 의 각 Attribute값들은 Relation에서 하나의 튜플이 됨
-
정규화
중복을 없애는 작업
-
-
1:1 관계
Relation Type에 해당하는 릴레이션을 따로 만들 지 않고 한 쪽의 Entity에 다른 Entity에 primary key와 Relation Type의 Attribute들을 Attribute로 추가함
null이 적게 생기는 릴레이션 쪽으로 Attribute를 추가하는 것이 좋음
-
방법
-
Relation Type에 해당하는 릴레이션을 생성하지 않음
-
원래 Relation Type에 있어야 할 Attribute들의 관계를 맺는 두 릴레이션 중 한쪽으로 합침 (합칠 떄 null값이 적게 생기는 경우를 선택)
-
-
1:M 관계
Relation Type에 해당하는 릴레이션을 생성하지 않고 릴레이션을 합침
null 적게 생성 위해 Many에 해당하는 릴레이션 쪽으로 Attribute 함침
-
N:M 관계
일반적인 경우 처럼 관계로 생성
-