Database 란 ?

kj1509·2019년 12월 18일
0

1.Database 기초 이해 및 설치

데이터를 저장 및 보존 하는 시스템
Application에서는 데이터가 메모리 상에서 존재한다. 그리고 메모리에 존재하는 데이터는 보존이 되지 않는다. 해당 애플리케이션이 종료하면 메모리에 있던 데이터들은 다시 읽어 들일 수 없다.
그럼으로 데이터를 장기 기간동안 저장 및 보존 하기 위해서 데이터 베이스를 사용하는 것이다.
일반적으로 database에는 크게 관계형 데이터베이스(RDBMS)와 "NoSQL"로 명칭되는 비관계형(Non-relational) database가 있다.

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

이름 그대로, 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말한다.

관계형 데이터란 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터를 말한다.모든 데이터들은 2차원 테이블(table)들로 표현 된다.
각각의 테이블은 컬럼(column)과 row(로우)로 구성된다.컬럼은 테이블의 각 항목을 말한다. 행으로 생각하면 된다.
로우는 각 항목들의 실제 값들을 이야기 한다. 열로 생각하면 된다.
각 로우는 저만의 고유 키(Primary Key)가 있다. 주로 이 primary key를 통해서 해당 로우를 찾거나 인용(reference)하게 된다.
각각의 테이블들은 서로 상호관련성을 가지고 서로 연결될 수 있다.
테이블끼리의 연결에는 크게 3가지 종류가 있다.

one to one
one to many
many to many

one to one

86740c92-ae03-4d22-86ca-66d00d36dc6f.png

one to many

86740c92-ae03-4d22-86ca-66d00d36dc6f.png

many to many

95098ff4-3316-441b-a8ab-f408369835ff.png

(2) 어떻게 테이블과 테이블을 연결하는가?

Foreign key(외부키)라는 개념을 사용하세 주로 연결
앞서 본 one to one 예에서 user_profiles 테이블의 user_id 컬럼은 users 테이블에 걸려있는 외부 키라고 지정한다.
즉 데이터베이스에게 user_id의 값은 users 테이블의 id 값이며 그러므로 users 테이블의 id 컬럼에 존재하는 값만 생성될 수 있다.만일 users 테이블에 없는 id 값이 user_id 에 지정되면 에러가 난다.

(3) 왜 테이블들을 연결하는가?

하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장된다.더 많은 디스크를 사용하게 되고
또한, 잘못된 데이터가 저장 될 가능성이 높아진다.
예를 들어, 고객의 아이디는 동일한데 이름이 틀린 로우들이 있다면 어떻게 해야 하는가? 어떤 이름이 정확한건가?
여러 테이블에 나누어서 저장한후 필요한 테이블 끼리 연결 시키면 위의 2문제가 사라진다.중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고,또한 서로 같은 데이터이지만 부분적으로 틀린 데이터가 생기는 문제가 없어진다.
이것을 normalization이라고 한다.

profile
코린이

0개의 댓글