데이터모델링 정리 글(2019)
👆🏻 2019년 아무것도 모르던 코린이 시절에 정리한 글
1. 관계형 데이터베이스의 정의
2. null값 입력으로 인한 "L자형 테이블"
3. 키의 개념과 정류
4. 무결성(integrity)
5. 이상(anomaly) 현상과 데이터의 중복
6. 정규화
7. 1 정규화
8. 2 정규화
9. 3 정규화
10. 카디널리티
** 다대다(M:N) 테이블의 문제점 & 해결방법
11. 데이터모델링의 규칙
과거 국비생 시절에 데이터베이스를 처음 접했을 땐
이해했다고 생각했지만, 정규화에 대해서는 개념이 잘 잡혀있지 않은 상태였다
그래서 참 많이 싸웠지.. 정규화 알고 다시와서 이야기하자고 그랬었던 우리..
다들 기억 하시나요..? (혼자 아련)
그 땐 1:1, 1:N, M:N 이 개념이 참 설명하려면 힘들었던, 그런 개념이었는데
그래도 한번 다 겪어봐서인지 지금은 세션 듣는 동안 이해가 좀 더 수월하게 갔다.
그래도 다시한번 정리 꼬!
(소중한 세션시간)
- A database generally refers to a structured collection of structured information or data stored electronically in a computer system.
- The database is usually controlled by a database management system (DBMS). Data and DBMS are referred to as 'database systems' along with related applications, and are also collectively referred to as 'databases' for short.
- 관계형 데이터베이스 (RDBMS) 👉🏻 Relational
- 비관계형 데이터베이스 (NoSQL) 👉🏻 Non-Relational
관계형 데이터베이스
- 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템
- Relational Database Management System
: MySQL, Postgres, Oracle DB
One To One
각 테이블의 row가 정확히 1:1 매칭이 되는 관계
(회원 T / 회원정보 T)
One To Many
한 테이블의 row가 다른 테이블의 여러 row와 연결이 되는 관계
(고객 T / 구매 내역 T)
Many To Many
한 테이블의 여러 row - 다른 테이블의 여러 row와 연결이 되는 관계
(작가 T / 여러 책 T / 작가와 책 T)
Atomicity(원자성)
- 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
- 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것
예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안됨
Consistency(일관성)
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단됨
Isolation(고립성)
- 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
- 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음
은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없음
공식적으로 고립성은 '트랜잭션 실행내역은 연속적이어야 함'을 의미
성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건
Durability(지속성)
지속성(Durability)
은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미- 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미
- 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있음
트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있습니다.
스타벅스 Korea 공홈 - 음료 메뉴에 한정된 데이터베이스 ERD 그려보기
category 👈🏻 drink (1:N)
drink 👈🏻 image (1:N)
drink 👈🏻👉🏻 allergy (M:M)
👇🏻👇🏻👇🏻
allergy_drink (중간 Table)
👇🏻 우리 조가 짠 ERD, 음료에 대한 정보를 음료테이블에 모두 넣고
음료와 알러지테이블은 서로 다대다 관계일것 같아서
중간테이블을 생성했다.
👇🏻 첨삭해주신 ERD!