Database

dongha1992·2020년 10월 29일
0

wecode

목록 보기
13/25

DB란?

DB란 엄청나게 많은 엑셀을 모아둔 것이다.

데이터 베이스 필요한 이유
사용자의 데이터를 보존하기 위해서

RDBMS

관계형 데이터베이스(RDBMS, Relational DataBase Management System)

관계를 미리 지정한 데이터베이스 시스템이다. -ex) MySQL, Postgres, Oracle DB

서로 상호관련성을 가진 형태로 _2차원 테이블_로 표현!

각 테이블은 컴럼(column)과 로우(row)로 구성된다. 각 로우는 고유 키(Primary Key)가 있는데 로우를 찾거나 인용하게 된다. 주로 이 primary key를 통해서 해당 로우를 찾거나 인용(reference)하게 된다.

Tables

테이블을 나눌 때 상호 관련성을 기준으로 나눈다.

1차 정규형 - 각 로우마다 컬럼의 값이 1개씩만 원자값(atomic value)를 갖는다는 표현이다.

2차 정규형 - 모든 속성은 기본키에 종속, 기본키가 복합키가 되었을 때 복합 키에 의존하지 않고 일부에 의존적인 열이 있으면 이를 제거해야한다. 복합키가 되었을 때 일부에 의존적인 열은 따로 테이블을 만든다!

3차 정규형 - 기본키 제외 서로 종속 불가하다. 기본키를 제외한 각각의 컬럼은 기본키에만 종속. 서로 종속되면 따로 분리!

정규화 - 중복된 것을 하나로 합치는 일

각각의 테이블들은 서로 상호관련성을 가지고 서로 연결될 수 있다. 테이블끼리의 연결에는 크게 3가지 종류가 있다.

Tables 관계

one to one

테이블 A의 로우와 테이블B의 로우가 정확히 일대일 매칭이 되는 관계다.

one to many

테이블 A의 로우가 테이블 B의 여러 로우와 연결되는 관계다. one과 many는 정해져 있다.

many to many

테이블이 두 개인데 서로 one to many 일 때다. 중간에 커넥션을 두고 서로를 참조한다(?) 참조는 Foreign key(외부키)라는 개념을 사용!

sql, Nosql

sql

장점 : 관계형 데이터베이스는 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리 할 수 있다. 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의 함으로 데이터의 완전성이 보장된다. 트랜잭션(transaction)

단점 : 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연한다. 확장성이 쉽지 않다.

NoSQL

장점 : 테이터 구조를 미리 정의하지 않아도 됨으로 저장하는 데이터의 구조 변화에 유연하다.확장하기가 비교적 쉽다. 그냥 서버 수를 늘리면 됨(scale out

erd

위 표에서 수강 과목에 두 개의 요소가 들어가 있다. 1차 정규형을 통해 각 로우마다 컬럼의 값이 하나씩 있게 만든다.

이렇게 만들면 중복되는 것들이 있는데 중복이 되면 따로 뺄 수 있다.

이제 2차 정규화가 필요한데 기본키라는 개념이 등장한다. 기본키란 각 테이블에 유일한 특성을 나타낼 수 있는 데이터다(?) 기본키가 여러개면 그것을 모아 복합키라고 한다. 모든 속성은 복합키에 종속되어야 하는데 복합 키에 의존하지 않고 일부에 의존적인 열이 있으면 이를 제거해야 한다. 복합키가 되었을 때 일부에 의존적인 열은 따로 테이블을 만든다!

수강 과목와 분야는 일부에 의존적이다. 가령 사는 곳은 같은 송도시라도 이름에 따라 다르게 구분하지만 분야는 똑같다고 해도 이름(기본키)가 아니라 수강 과목으로 구분이 가능하기 때문에 분야는 수강 과목과 묶어서 뺄 수 있다.

이렇게 또 다른 테이블이 탄생한다.

사는 곳과 수강과목은 둘 다 이름에 종속되었기 때문에 또 나눌 수 있다.

결국 이렇게 할 수 있다. DB 구축이란 게 이런 거구나.. 소중하고 값진 시간이지만 너무 어렵다. 추상화라는 거.. 어나 더 레벨..

profile
글과 코드와 사람에 관해 생각합니다.

0개의 댓글