내가 맡기로한 챗봇 구현(Amazon Lex V2)이 기획 상에서 사라져서 급하게 ERD 설계와 API 명세 작성을 도맡았다. 

2-3 주 간 Lex에만 매달렸고 이번 주에 Amazon에서 제공하는 챗봇 서비스를 학습&연동 시킬 기대감이 컸어서

너무 아쉬웠지만,, 아쉬운 마음이 큰 만큼 할 수 있는 것에 최선을 다하여 기여도를 높이기로 다짐했다..🥲

 

암튼 각설하고! 사실 이렇게 본격적으로 ERD를 처음 설계해봐서 공부할 게 매우 많았다.

이 포스팅을 통해 하나씩 정리해보려고 한다.


Relational data model

Relation in mathematics

set은 서로 다른(중복 없는), 순서와 상관없는 요소를 가지는 collection이다. 

두 개의 집합에 쌍(pair)를 설정해보자. 가능한 모든 pair의 조합은 A x B로 표현하고 이는 카르테지안 프로덕트라고 한다. 

아래와 같은 pair를 갖는 집합은 카르테시안 프로덕트 집합의 부분집합이다. 이러한 관계를 Relation이라고 한다. 

이산수학 때 배운 내용인듯하다.

집합이 두개니까 binary relation

각각의 pair는 튜플이라고 부른다. n 개의 집합이 있을 때 이 집합들의 pair를 모두 연결한 하나의 구성을 리스트라고 하며, 리스트 구성요소 각각을 튜플이라고 하는 것이다.

 

결론적으로 수학에서의 관계는 

  1. 카르테시안 프로덕트의 부분집합
  2. 튜플들의 집합

그래서 데이터모델이랑 무슨 상관?

relational data model에서 set은 도메인을 의미한다. 도메인마다 이름이 붙고, 튜플들을 가지며 이 구성의 전체를 relation이라고 부른다.

 

쉬운코드님 유튜브 강의 자료

도메인들의 역할을 분배하여 이름을 정하는 것이 Attribute이고, 각 속성에 대한 값을 가지고 있는 것들(각각의 행 값)이 튜플, 이 전체 relation을 데이터베이스에서는 위와 같은 테이블로 나타낸다. 하나의 relation == 하나의 table

 

domain set of atomic values
domain name domain 이름
attribute domain이 relation에서 맡은 역할 이름
tuple  각 attribute의 값으로 이루어진 리스트, NULL 가능성 o
relation set of tuples
relation name relation(table)의 이름

relation schema

relation 이름과 attributes 리스트로 표기되며, relation의 구조를 나타낸다

e.g. STUDENT(id, name, grade, major, phone_num, emer_phone_num)

테이블명(속성1, 속성2, 속성3...)  그럼 스키마부터 먼저 작성하고 ERD 설계하면서 관계/종류 식별하면 될듯?

attribudtes와 관련된 constraints도 포함한다.

💡 degree of a relation: 스키마에서 att의 수


✔️ 결론
- Relational Database는 relational model(앞서 설명한 것)에 기반하여 구조화된 database이다.
- relational database는 여러 개의 relations로 구성된다.

Relation의 특징_ERD 설계할 때 참고하자!

  1. 서로 다른 튜플의 모든 값이 같은 중복된 tuple은 불가능하다.
  2. relation의 tuple을 식별하기 위해 att의 부분 집합을 key로 설정한다. 즉, 각 튜플을 고유의 값으로 구분하여 관리한다.
  3. 튜플의 순서, att의 순서는 상관 x
  4. 하나의 relation에서 att의 이름은 중복x(당연)
  5. att는 atomic해야 한다. 주소값을 시, 구, 동 단위로 저장한다면 이걸 각각 세세하게 나눠서 저장해야 한다는 뜻이다. 이게 젤 어려울듯하다,, 하나의 값만! 들어가야 함.

Reference

https://www.youtube.com/watch?v=gjcbqZjlXjM 

 

sebinChu