내가 맡기로한 챗봇 구현(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이라고 한다.
이산수학 때 배운 내용인듯하다.
각각의 pair는 튜플이라고 부른다. n 개의 집합이 있을 때 이 집합들의 pair를 모두 연결한 하나의 구성을 리스트라고 하며, 리스트 구성요소 각각을 튜플이라고 하는 것이다.
결론적으로 수학에서의 관계는
- 카르테시안 프로덕트의 부분집합
- 튜플들의 집합
그래서 데이터모델이랑 무슨 상관?
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 설계할 때 참고하자!
- 서로 다른 튜플의 모든 값이 같은 중복된 tuple은 불가능하다.
- relation의 tuple을 식별하기 위해 att의 부분 집합을 key로 설정한다. 즉, 각 튜플을 고유의 값으로 구분하여 관리한다.
- 튜플의 순서, att의 순서는 상관 x
- 하나의 relation에서 att의 이름은 중복x(당연)
- att는 atomic해야 한다. 주소값을 시, 구, 동 단위로 저장한다면 이걸 각각 세세하게 나눠서 저장해야 한다는 뜻이다. 이게 젤 어려울듯하다,, 하나의 값만! 들어가야 함.
Reference
https://www.youtube.com/watch?v=gjcbqZjlXjM
'DB' 카테고리의 다른 글
[DB] H2 DB 설치와 초기세팅 (0) | 2023.08.14 |
---|---|
[DB] SQL vs NoSQL (0) | 2023.04.11 |
[DB/MySQL] 기본 명령어 4 | HAVING, ROLLUP, JOIN,.. etc. (0) | 2023.02.24 |
[DB/MySQL] 기본 명령어3 | ORDER BY, GROUP BY, DISTINCT, LIMIT (2) | 2023.02.24 |
[DB/MySQL] 기본 명령어2 | BEETWEEN, IN, LIKE, ALY, ALL (1) | 2023.02.23 |