DB- 데이터를 저장하는 시스템
why사용? 데이터 저장
, 연산
, 보존
위해
DB< -> Memory(휘발성(종료시 날아감), but 속도면에서 장점을 갖음, memory에서 데이터를 읽음)
영구적
저장은 DB, but why not file, but DB? 접근 및 관리
가 편리편집, 가공 및 보존을 쉽게해줌
RDBMS / SQL
모든데이터에는 상호관계
(=테이블 간의 관계)가 있음을 기본개념
모든 데이터는 '테이블'로 구성 (
column- 테이블의 각 항목(행)
row- 열, 각 항목의 실제값
, 고유키
(primary key
이용)-row 찾고, 인용하는데 이용
table간의 관계(=연결), not data to data(3가지)
one to one
table A
와 table B
의 관계가 정확히 1:1
인 관계(데이터 간의 관계가 아님!)참조
(reference
)one to many
: 하나의 정보를, 여러개의 데이터와 관계를 갖음
(ex) 하나의 주체가 , 여러개의 상태값을 갖을 수 있는 관계
many to many
(ex) 하나의 책에, 여러명의 저자가 존재
왜 테이블은 나눠져 있는가? 왜 여러 테이블에 정보 나누어 저장?
동일한 정보
가 중복해서 저장 가능중간 테이블
(보통 PK 1개,FK 2개로 구성)을 생성해서 관계를 설명하게 도와줌정규화(normalization)
- 필요하 테이블 끼리 연결,
트렌지션(transaction
)(check) (ADDDDD)
-질의를 하나의 묶음 처리,
롤백
커밋 - 한번의 질의 모두 수행, 뭐누머?!?!?
TPS - 데이터 부정합을 막기위해 사용
ACID(Atomicity, Consistenecy, Isolation, Durability) - 다시 한번 개념 잡고 갈 것
Atomicity
OR or Nothing
Consistency - 성공적으로 , type, - 중간과정에서 변질되지 않는 것
Isolation - 트렌지션 수행중에 다른 트렌지션이 간섭을 못하는 것 의미. 끼리 간섭 안함
Durability -
NoSQL(비관계형 DB)
스키마(schema) - 정형화가 필요없음 - 빠른 속도 ex)MongoDB, Cassandra, Redis
key
value
형태로 관리SQL VS NoSQL
SQL
체계적 효율적 저장 및 관리
데이터의 완전성 보장
테이블 구조 변화에 덜 유연
확정성이 쉽지 않음
ex) 전자상거래정보, 은행정보, 거래정보
NoSQL
구조 변화에 유연
확정성이 좋음(서버의 '수'를 늘리면 됨)
방대한 양의 데이터 저장 가능
데이터의 완전성이 '덜' 보장됨
트렌제션이 안되거나, 불안정함
완전성이 '덜' 중요한 데이터 저장에 유리
ex) 로그 데이터 수집
Normalization
1st Normal Form
2nd Normal Form
3rd Normal Form
BCBF(Boyce-Codd Normal Form)
Definition
Why?
To avoid data redundancy
- repetition of data
- it can possibly cause insertion
deletion
updation
problems
ERD(Entity Relationship Diagram)
Cardinality
key
primary keys
foreign keys
: 외래키
unique table
users
table to -> user_profileYou can combine primary key
and foreign key
to create and use composite primary key
rules to create a Composite Primary Key