2021_05_20

유지원·2021년 5월 20일
0
post-thumbnail

TIL - DataBase, SQL

1. DataBase

이전에 우리는 리소스를 사용하는 앱인 client, 그 리소스를 전달해주는 앱인 server로 되어있는 구조를 2-Tier architecture라고 배웠다 여기에 전달받은 리소스를 저장할 수 있는 공간인 데이터베이스까지 합쳐진 구조를 3-Tier architecture라고 한다.

DataBase란 데이터를 저장하는 '공간'이다.
데이터를 저장하기 위해서는 꼭 DataBase만 있는 것이 아니다.

In Memory, file 등 데이터를 저장하기 위한 공간은 많이 있지만 DataBase를 사용하는 특별한 이유는 있다. 프로그램이 실행될 때만 존재하는 것이 아니라 가상의 공간에 저장되어있어 대량의 데이터를 저장할 수 있고, 조건에 따라 원하는 데이터를 필터링 해 올 수 있다는 장점이 있다.

데이터베이스의 종류에는 크게 두 가지가 있다.

(1). 관계형 데이터베이스
구조화 쿼리 언어라고 하며, SQL을 기반으로 한다. 고정된 스키마를 가지고 있으며, 이 스키마에 따라 행과 열의 형태로 데이터가 저장된다. 따라서 주로 일관된 데이터가 필요한 은행 거래 등의 상황에서 사용된다.

관계형 데이터베이스에는 트랜잭션 이라는 개념이 등장하는데,
은행 거래에서의 계좌이체 등과 같이 어떤 작업이 이루어지는 단위를 말한다.
트랜잭션의 특성은 다음과 같다.

1) Atomicity
-- 하나의 트랜잭션은 하나의 원자성을 가진다. 따라서 트랜잭션은 완전히 수행되거나 완전히 실패해야 한다.

2) Consistency
-- 트랜잭션이 성공적으로 완료되면 일관적인 상태를 가져야 한다.

3) Isolation
-- 각각의 트랜잭션은 독립적이어야 하며 다른 트랜잭션의 영향을 미치지 않는다.

4) Durability
-- 성공적으로 수행된 트랜잭션은 영원히 반영된다. commit을 하면 현재 상태는 영원히 보장된다.

(2). 비관계형 데이터베이스
비구조화 쿼리 언어라고 하며 NoSQL을 기반으로 한다.
관계형 데이터베이스와는 다르게 형식이 정해지지 않아 상대적으로 유연하게 데이터를 저장할 수 있다는 장점이 있다.

2. SQL

데이터베이스용 프로그래밍 언어로, 주로 관계형 데이터베이스에서 사용된다.
SQL 언어를 사용해서 원하는 조건에 따라 데이터베이스에 요청을 할 수 있고 이 조건에 따라 데이터베이스는 해당되는 데이터를 반환한다.

(1) Primary key
테이블 내의 row를 식별해주는 키이다. 주로 아이디, 주민번호 등이 primary key로 사용된다. 따라서 NULL을 허용하지 않는다.

create table department(
  	id int primary key, //id를 primary key로 지정하였다.
	name varchar(20) not null,
	code varchar(20) not null
);

(2) Foreign key
관련있는 두 테이블을 서로 연결하는 데 사용하는 키이다.

create table employee (
  	id int primary key, //id를 primary key로 지정하였다.
	name varchar(20) not null,
	code char(13) not null,
	dept_id int,
	foreign key (dept_id) references department(id) //dept_id를 foreign로 지정하였다.
);




이번시간에는 database의 개념에 대해서 공부했다.
다음시간에는 database에 대해 조금 더 알아가는 시간을 갖는다
오늘은 여기까지~ :)

profile
안녕하세요 유지원입니다

0개의 댓글