[SQL] RDBMS

Inah-_-·2021년 2월 22일
0

데이터베이스

목록 보기
2/13
post-thumbnail

💡 Today I Learned


📁 DB

  • 데이터베이스란?
  • RDBMS란? 왜 관계형 테이블을 쓰는가?
  • TABLE이란? Column과 Row 그리고 Primary Key란?
  • 테이블의 관계 , One to One, One to Many, Many to Many는 무엇인가?
  • 트랜잭션이란? ACID는 무엇인가?
  • ERD 구성도로 모델링하기



1. 데이터베이스란?

데이터베이스란 일반적으로 컴퓨터 시스템에 저장된 정보 또는 데이터의 집합을 의미한다.
데이터베이스는 보통 데이터베이스 관리 시스템(DBMS)로 제어하는데,
데이터와 DBMS는 연관된 어플리케이션들과 함께 '데이터베이스 시스템'으로 일컬어지며,
더 짧게는 '데이터베이스'라고 통칭되기도 한다.
References




2. RDBMS란? 왜 관계형 테이블을 쓰는가?

Application에서는 데이터가 메모리 상에서 존재한다.
메모리에 존재하는 데이터는 보존이 되지 않기 때문에 애플리케이션이 종료하면
메모리에 있던 데이터들은 다시 읽어 들일 수 없다.

따라서, 데이터를 오랜 기간 저장 및 보존 하기 위해서 데이터 베이스를 사용하는 것.
일반적으로 database에는 크게 관계형 데이터베이스(RDBMS)"NoSQL"로 명칭되는 비관계형(Non-relational) database가 있다.

관계형 데이터베이스

RDBMS, Relational DataBase Management System
관계형 데이터에 기초를 둔 데이터베이스 시스템
ex) MySQL, Postgres, Oracle DB

모든 데이터들은 2차원 테이블(table)로 표현할 수 있는데,
각각의 테이블들은 서로 상호관련성을 가지고 연결될 수 있다.




3. TABLE이란? Column과 Row 그리고 Primary Key란?

모든 데이터들은 테이블(table)들로 표현 된다.

각각의 테이블은 컬럼(column)과 row(로우)로 구성되어 있다.

Column

  • 테이블의 각 항목을 뜻한다.

Row

  • 각 학목들의 실제 값을 뜻한다.

Primary Key

  • 각각의 row(로우)는 저만의 고유 키가 있다. 주로 이 Primary Key를 통해
    해당 로우를 찾거나 인용(reference)한다.



4. 테이블의 관계

테이블 연결 3가지

one to one

  • 테이블'A'의 로우와 테이블 'B'의 로우가 정확히 1:1 매칭이 되는 관계

one to many

  • 테이블'A'의 로우가 테이블 'B'의 여러 로우와 연결이 되는 관계 (1:n)
  • Customer 테이블과 order 테이블은 1:N 관계
  • Order 테이블의 customer_id 컬럼이 customer 테이블의 primary key를 참조

many to many

  • 테이블 'A'의 로우가 테이블 'B'의 여러 로우와 연결이 되는 관계



테이블과 테이블을 연결하는 법

Foreign key(외부키)라는 개념을 사용하여 주로 연결한다. = FK

one to one의 예에서 user_profiles 테이블의
user_id 컬럼은 users 테이블에 걸려있는 외부 키라고 지정한다.

데이터베이스에게 user_id의 값은 users 테이블의 id 값이며
그러므로 users 테이블의 id 컬럼에 존재하는 값만 생성
만일 users 테이블에 없는 id 값이 user_id 에 지정되면 에러가 발생

테이블들을 왜 연결할까?

왜 저장소를 여러 테이블에 나누어서 저장할까?

one to many의 예를 보면 알 수 있다.
하나의 테이블에 모든 정보를 다 넣게 되면 동일한 정보들이
불필요하게 중복되어 저장된다.

더 많은 디스크를 사용하게 되고, 잘못된 데이터가 저장 될 가능성이 높아진다.

예를 들어, 어떤 쇼핑몰의 고객은 아이디가 1개다. 하지만 주문한 이름이 다 제 각각이라면,
각각의 값만큼 디스크를 낭비하게 되고 어떤 이름이 고객의 정확한 이름인지 알 수 없다.

필요한 테이블끼리 연결 시켜 저장하면 이런 문제가 사라진다.
- 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고,
- 서로 같은 데이터이지만 부분적으로만 내용이 다른 데이터가 생기는 문제가 없어진다.
- 이것을 **normalization**(정규화) 이라고 한다.




5. 트랜잭션? ACID?

트랜잭션(Transaction)

ACID를 제공함으로 따라서 트랜잭션(일련의 작업들을 한번에 하나의 unit으로 실행하는것) 기능을 제공

트랜잭션은 일련의 작업들이 하나의 작업처럼 취급되어 모두 성공 아니면 모두 다 실패함을 이야기 하는 것


ACID

Atomicity, Consistency, Isolation, Durability
원자성, 일관성, 고립성, 지속성

- 원자성(Atomicity) = 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것

- 일관성(Consistency) = 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태를 유지하는 것

- 고립성(Isolation) = 트랜잭션 수행 시 다른 트랜잭션이 끼어들지 못하도록 보장하는 것

- 지속성(Durability) = 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미



7. ERD 구성도로 스타벅스 모델링

✔️ Team Assignment

profile
Backend Developer

0개의 댓글