데이터베이스

Peter Oh·2020년 11월 24일
0

Database

목록 보기
1/2
post-thumbnail
  1. 데이터베이스란?
  2. RDBMS란? 왜 관계형 테이블을 쓰는가?
  3. TABLE이란? Column과 Row 그리고 Primary Key란?
  4. 테이블의 관계 , One to One, One to Many, Many to Many는 무엇인가?
  5. 트랜잭션이란? ACID는 무엇인가?
  6. 관계형 데이터베이스 와 비관계형 데이터베이스의 차이는?
  7. ERD 구성도로 모델링하기

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

  • User table / user profiles
  • table Atable B의 관계가 정확히 1:1인 관계(데이터 간의 관계가 아님!)
  • 참조(reference)

one to many: 하나의 정보를, 여러개의 데이터와 관계를 갖음
(ex) 하나의 주체가 , 여러개의 상태값을 갖을 수 있는 관계

  • 한 유저가 Amazon에서 여러번의 order를 함
  • 하나의 카테고리에, 여러제품이 들어감

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
    - unique
    • never changing
    • never null
  • foreign keys: 외래키
    - don't have to be unique
    • can be repeated in a table
    • not originally from the unique table
    (ADD) Naming Convention
    • table- > 복수
      from users table to -> user_profile

You can combine primary key and foreign key to create and use composite primary key

rules to create a Composite Primary Key

  • use the fewest number of attributes possible
  • don't use attributes that are apt to change
profile
def backend_engineer():

0개의 댓글