Skip to main content

Command Palette

Search for a command to run...

[database] 관계형 데이터베이스

Published
2 min readView as Markdown

데이터베이스

데이베터이스점 시스템을 쓰는 이유

과거에는 파일 시스템에 많은 문제

파일 정보 시스템의 문제점:

  • 데이터 중복성, 비일관성
  • 검색의 비효율성
  • 데이터들간에 연결성 부족(여러 파일에 같은 종류의 데이터가 흩어져있을 수 있음)
  • 동시 접근 불가능 및 데이터 무결성 부족(여러 사용자가 접근할 때 데이터에 손상이 생길 수 있다)
  • 복구 어려움

데이터베이스 관리 시스템(DBMS)의 장점:

  • 데이터의 독립성
    물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
    논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
  • 데이터 종속성 최소화
    데이터 저장 방식과 접근 방식에 변화가 생기더라도 관련된 응용 프로그램 수정의 부담이 훨씬 적다.
  • 데이터 중복성 최소화
    데이터베이스 안에 전체 데이터를 통합 관리하기 때문에 데이터 중복을 방지할 수 있다. (성능 향상이 필요할 땐 중복 허용)
  • 데이터 동시 공유 가능
  • 일관성 유지가 쉬움. 연관된 정보들을 논리적인 구조로 관리함으로서 어떤 데이터의 변경에 따라 발생하는 데이터의 불일치를 제거할 수 있다.
  • 보안성 : 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정

데이터베이스의 단점:

  • 운영 비용 증가
  • 중앙화에 따른 취약성

관계형 데이터베이스 시스템(RDBMS)

테이블 형태의 저장구조를 가지며 데이터들 사이의 연관 관계를 테이블의 외래키(foreign key) 를 통해 표현하는 저장방식.

  • 테이블 : row(record)와 column(field)로 이뤄진 기본 데이터 저장 단위
  • 관계형 데이터베이스 : 상호 관련성을 가진 테이블들의 집합
  • 정규화를 통해 중복 데이터를 최소화
  • 테이블간의 관계(JOIN)를 이용해 관계에 따라 여러 데이터를 검색

데이터베이스 언어(SQL)

SQL은 RDBMS의 데이터를 관리하기 위해 설계된 특수목적의 프로그래밍 언어다.
DBMS의 필수 기능에는 정의, 조작, 제어가 있다.

  • 정의 : 데이터베이스 구조를 생성하거나 변경, 삭제
  • 조작 : 데이터베이스 안에 저장된 데이터에 접근해 생성, 수정, 삭제 및 검색
  • 제어 : DBMS는 여러 사용자가 동시에 접근하더라도 항상 데이터를 정확하고 안전하게 유지하도록 통제한다.

SQL은 여기에 TCL을 더해 4가지 종류가 있다.

DDL (데이터 정의 언어, Data Definition Language)

DB 객체 (TABLE, INDEX, VIEW 등)를 생성, 수정, 삭제할 목적으로 사용되는 언어.
CREATE, ALTER, DROP, RENAME 등이 있다.

데이터베이스 구조는 스키마(schema)라고도 한다.
테이블 이름과 열 이름으로 나타낼 수 있다.

학생(학번, 이름, 학년, 성별, 전공)

DML (데이터 조작 언어, Data Manipulation Language)

데이터베이스 안의 데이터를 실제 조작하는 언어.
SELECT, INSERT, UPDATE, DELETE 등이 있다.

DCL (데이터 제어 언어, Data Control Language)

데이터베이스를 제어하기 위한 언어.
데이터베이스가 안정적으로 동작하고 성능을 유지하도록 각종 제약이나 옵션을 설정함으로써
DBMS가 데이터베이스를 올바르게 관리하도록 한다.

GRANT, REVOKE, CREATE USER 등이 있다.

TCL (Transaction Control Language) : 트랜잭션 제어어

DML 명령문으로 수행한 변경을 관리 (트랜잭션 관리)하는 언어.
COMMIT, ROLLBACK, SAVEPOINT 등이 있다.

출처

  • 데이터베이스의 정석 - 박성진
  • https://www.geeksforgeeks.org/difference-between-file-system-and-dbms/
  • https://towardsdatascience.com/designing-a-relational-database-and-creating-an-entity-relationship-diagram-89c1c19320b2
  • https://ko.wikipedia.org/wiki/SQL

More from this blog

[JPA] 엔티티 equals 오버라이딩 괜찮을까?

최근에 한 딜레마에 빠졌다. 레포지토리에 대한 테스트 코드를 짜고 있었는데, 확실한 DB 조회 확인을 위해 영속성 컨텍스트를 초기화(em.clear)하면서 문제가 생겼다. 테스트에서 em.clear()을 했을 때의 예시 @BeforeEach 에서 먼저 필드에 더미 데이터를 넣어준다. 추후의 테스트를 편리하게 할 목적의 필드이다. // ... public class MemberRepositoryTest { // ... ...

Oct 26, 20233 min read

[network] JWT

왜 필요한데? 보안 문제 만약 서버와 클라이언트가 서로 유저 정보를 순수 JSON으로 보내게 되면, 이게 유효한 정보인지 확인할 방법이 없다. 만약 악의를 가진 공격자가 유저 ID를 바꿔서 요청을 했을 경우, 서버에선 무슨 일이 일어난 건지 알 방법이 없다. 그래서 유저를 식별할 수 있는 중요한 데이터를 토큰화시켜 주고받게 된다. HTTP의 특징 기본적으로 HTTP 통신은 무상태(Stateless)이다. 매번 사용자가 로그인...

Feb 28, 20234 min read

[network] HTTP & HTTPS

HTTP(Hypertext Transfer Protocol)란? HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약이다. 대표적으로 주고 받는 데이터 형태는 HTML이다. OSI 7계층중 응용계층에 속하는 프로토콜 TCP/IP 위에서 작동 Request와 Response로 통신 비연결지향(Connectionless) HTTP는 클라이언트가 요청(Request)을 서버에 보내고, 서버는 클라이언트에게 적절한 응답(Response)을 ...

Feb 26, 20233 min read

[database] 트랜잭션

트랜잭션 트랜잭션(transaction)이란? 한 묶음으로 처리되도록 만든 SQL 명령문들을 묶은 작업 단위 대부분의 의미 있는 서비스 처리를 하려면 SQL 명령문 한번 (SELECT, UPDATE, …)만으로는 어렵다. 계좌이체라는 작업을 예시로 들어보자. 만약 X의 돈을 100 감소시키는 UPDATE 문 직후에 서버가 다운되면 어떻게 될까? 더 이상 서버에선 쿼리문을 날리지 못하니, Y에겐 100만큼의 돈이 가지 않고 회사가 X의 돈을 ...

Feb 21, 20232 min read

[database] JOIN

JOIN JOIN이란? 둘 이상의 릴레이션에 흩어져 있는 튜플들을 특정 조건으로 조합하여 하나의 릴레이션을 구성하도록 검색(SELECT)하는 방법. 조인은 릴레이션들의 공통 속성을 기준으로 하므로 테이블들간에 최소한 하나의 속성을 공유하고 있어야 한다. 여러가지 조인 조건에 따라 검색 결과를 다르게 할 수 있다. 아래는 업데이트된 과목, 수강 테이블. 과목번호과목명강의 교수 001컴퓨터구조장성태 002정보보호개론양수미 003...

Feb 10, 20235 min read

wonslee

15 posts