본문 바로가기

ComputerScience/Database 이론

[Database] 5. 관계형 데이터 모델(Relational data model) 개념 정리

 

안녕하세요. CS지식 정리도 할 겸, 학교에서 배운 데이터베이스 개념 + "데이터베이스 개론-IT COOKBOOK" 의 책을 공부하며 알게 된 내용을 정리하려고 합니다. 지난 포스트 "Data modeling 개념 정리"에 이어 이번에는 관계형 데이터 모델(Relational data model) 개념을 정리해보려고 합니다. 주관적으로 작성된 글이기에 틀린 내용이 있을 수 있습니다.(댓글로 알려주시면 감사합니다:) 

 

관계 데이터 모델(관계형 데이터 모델)은 논리적 데이터 모델 중 가장 인기있는 데이터 모델입니다. 관계 데이터 모델을 통해 관계 데이터베이스를 만들 수 있습니다.

1. Relational data model

SoTalk 앱 프로젝트 내 Message relational schema

cf. SoTalk앱의 Message Relational schema는 네트워크 과제를 하며 정의된 relation schema입니다.

Relation(릴레이션) | Relation schema(릴레이션 스키마)

Relation은 2차원 테이블 형식으로 데이터를 표현합니다. Relation schema는 릴레이션의 이름, 속성의 이름과 도메인(타입), 데이터를 넣을 수 있는 형태입니다. 위 사진에서 Relation schema는 Message Relation(id, send_time, message, group_id, user_id)의 행입니다.

 

즉 릴레이션 스키마는 릴레이션이름(속성이름1,속성이름2...)

 

개념적 모델링 -> 논리적 모델링으로 변환할 때 E-R model은 relational data model에 담을 수 있습니다. 개념적 모델링에서 얻어낸 E-R model 안에 Message Entity가 존재했다면 이를 기반으로 논리적 모델링으로 변환할 때 Message schema가 결과로 나올 수 있습니다.

Attribute(속성) | Domain(도메인) | Degree

릴레이션의 열을 속성(Attribute)이라 칭합니다. 각 속성의 이름은 서로 다른 이름을 통해 구별합니다. Relation에서 attribute's domain은 속성이 가질 수 있는 모든 값의 집합입니다.

위 사진에서 user_id's type: varchar(255)라고 정의되어 있습니다. '집합'이라는 개념으로 domain이 정의되었기에, domain은 vachar(0...255)가 될 것입니다. 또한 값의 범위도 지정할 수 있고 이는 domain에서 constraint(제약조건)도 정의될 수 있습니다.

 

Not null이 아닌 경우 실제 속성의 값으로 null이 부여될 수 있습니다.(특정 속성의 데이터가 없을 경우)

 

Message Relation은 5개의 열을 갖고 있습니다. Degree: 5. Degree는 속성의 수를 의미합니다.

튜플(Tuple) | Cardinality | Relation instance

Relation에서 릴레이션 스키마 Message relation schema(id, send_time, message, group_id, user_id) 행을 제외한 아래의 행은  릴레이션 스키마의 cosntraint, domain 집합에 포함되는 각각의 데이터가 담깁니다. 각각의 행은 tuple, 행 또는 relation instance라 부릅니다.

 

Message Relation은 3개의 행을 갖고 있습니다. Cardinality: 3. Cardinaliry는 튜플, 행 개수를 의미합니다.

중요! 릴레이션의 특성(Case 4)

  1. 튜플(tuple)의 유일성: 한 릴레이션에서 동일 데이터 존재할 수 없음
  2. 튜플의 무순서: 튜플 간 순서 의미 없음
  3. 속성(Attribute)의 무순서: 한 릴레이션에서 속성 간 순서는 의미 없음
  4. 속성의 원자성(atomical): 속성 값으로 원자 값(더 이상 분해 x 값)만 사용 가능

속성(Attribute)에 부여할 수 있는 키(Key)의 종류

Super key(슈퍼 키), foreign key(왜래 키 or FK), alternate key(대체 키), primary key(기본 키 or PK), candidate key(후보 키)

 

유일성: 하나의 릴레이션에서 릴레이션 인스턴스는 서로 다른 pk를 가져야 합니다.

최소성: 하나의 릴레이션에서 릴레이션 스키마는 꼭 필요한 최소한의 속성들로(attribute set) 키를 구성해야 합니다.

 

  • 슈퍼키: 유일성(모든 행 구별할 수 있는..)만족하는 속성 or 속성 집합(여러 개의 속성. attribute set)
  • 후보키: 유일성 + 최소성을 만족하는 속성 or attribute set
  • 기본키: 후보키 중에서 tuple을 식별하기 위해 선택한 키 (Not null)
  • 대체키: 기본키로 선택되지 못한 후보키
  • 왜래키: 다른 릴레이션의 기본키 참조하는 속성 or attribute set

 

키의 관계에서 후보키는 기본키에 포함되어 있습니다. 추후 정규화에서 BCNF할 때 이 개념을 잘 기억하고 있어야 합니다.

 

 

위 사진에서 user_id, gruop_id를 FK(Foreign Key)로 지정했기 때문에 user info 릴레이션의 데이터와 message group릴레이션의 데이터를 포함해서 query 할 때 message 릴레이션의 데이터와 함께 3개의 릴레이션 데이터를 전부 다룰 수 있습니다.

즉 이 3개의 릴레이션 데이터를 join 해서 필요한 정보를 포함하는 query를 작성할 수 있게 됩니다. 

 

기본키 선정 방법으로는 null값을 갖지 않아야 하며, 값이 자주 변경될 수 있는 속성 값의 속성은 pk로 부적절합니다. 또한 여러 개의 후보키가 있을 경우 가장 단순한.. attribute set의 개수가 적거나 단순 문자열 일 경우가 선호됩니다.

2. Database 구성

 

데이터베이스에서의 스키마는 message relation schema, message gruop relation schema, user info relation schema 등 데이터 베이스를 구성하는 릴레이션 스키마의 모임입니다. 즉 일반적인 데이터베이스는 여러개의 릴레이션으로 구성되어 있습니다. Database's instance는 데이터베이스에 들어있는 data set을 의미합니다.

3. Relational data model's constraint

개체 무결성 제약조건: pk를 구성하는 모든 속성은 not null

참조 무결성 제약조건: fk는 참조할 수 없는 값을 가지면 안 된다.

 

 

틀린 부분 발견 시 댓글로 남겨주시면 정말 감사합니다.