본문 바로가기

Development/SQL

[SQL] 데이터베이스의 개요

728x90

1. 데이터베이스

데이터베이스(DB: database)는 통합하여 관리되는 데이터의 집합체를 의미한다.

이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리된다.

이러한 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리된다.

이를 관리하는 미들웨어를 데이터베이스 관리 시스템(DBMS: Database Management System)라고 한다.

  • 데이터베이스의 특징

    1. 사용자의 질의에 대하여 즉각적인 처리와 응답이 이루어진다.

    2. 생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지한다.

    3. 사용자들이 원하는 데이터를 동시에 공유할 수 있다.

    4. 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 할 수 있다.

    5. 응용프로그램과 데이터베이스는 독립되어 있으므로, 데이터의 논리적 구조와 응용프로그램은 별개로 동작된다.

  • 데이터베이스의 발전

    • 1960년대: 플로우차트 중심의 개발 방법

    • 1970년대: 계층형(Hierarchical) 데이터베이스, 망형(Network) 데이터베이스 같은 제품

    • 1980년대: 관계형 데이터베이스가 상용화되었으며, Oracle, Sybase, DB2와 같은 제품

    • 1990년대: 객체 관계형 데이터베이스로 Oracle, Sybase, DB2, Teradata, SQL server와 같은 제품

  • 관계형 데이터베이스(Relational Database)

    • 1970년 영국의 수학자였던 E.F.Codd 박사의 논문에서 처음으로 관계형 데이터베이스 소개

    • 파일시스템의 장점

      1. 처리속도가 DB에 비해 빠름

      2. 구현이 간편

      3. 비용이 저렴

    • 파일시스템의 단점

      1. 무결성: 동시에 입력, 수정, 삭제할 수 없기 때문에 정보의 관리가 어려움

      2. 일관성: 복사본 파일을 만들어 사용할 경우 데이터의 불일치성이 발생

      3. 경제성: 저장공간의 낭비, 갱신 비용이 발생

      4. 보안성: 같은 데이터에 동일한 보안수준 적용의 어려움

    • 관계형 데이터베이스의 장점

      1. 정규화를 통해 이상(Anomaly) 현상을 제거하고 데이터 중복을 회피 가능

      2. 동시성 관리, 병행 제어를 통해 데이터를 공유

      3. 데이터의 표현 방법 등을 체계화할 수 있고, 데이터 표준화, 데이터 품질을 확보

      4. 보안 기능

      5. 데이터의 무결성을 보장

      6. 데이터를 회복/복구하는 기능

    • 관계형 데이터베이스의 단점

      1. 시스템의 부하 및 복잡성

      2. 별도의 관리 이력 필요

      3. 추가 도입비용 발생


2. SQL(Structured Query Language)

SQL(Structured Query Language)은 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어이다.

SQL의 최초의 이름은 SEQUEL (Structured English QUEry Language)이다.

1986년부터 ANSI/ISO (미국 국가표준 협회/ 국제 표준화 기구)를 통해 표준화되고 정의된 SQL 기능은 벤더별 DBMS 개발의 목표가 된다.

각 벤더의 관계형 데이터베이스(RDBMS)는 표준화된 SQL 이외에도 벤더 차별화 및 이용 편리성을 위해 추가 기능을 구현했다.

 

따라서 SQL 구문도 위의 목적에 맞게 크게 네 가지로 구분할 수 있다.

속성 설명 주요 명령어
DDL (Data Definition Language) 데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어 CREATE, ALTER, DROP, RENAME 등
DML (Data Manipulation Language) 데이터베이스의 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어 INSERT, UPDATE, DELETE, SELECT 등
DCL (Data Control Language) 데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성등을 제어하기 위한 명령어 GRANT, REVOKE 등
TCL (Transaction Control Language) 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜젝션) 별로 제어하는 명령어 COMMIT, ROLLBACK

3. 테이블

데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본 단위이다.

 

 

용어 설명
테이블 (Table) 행과 칼럼의 2차원 구조를 가진 데이터의 저장 장소이며, 데이터베이스의 가장 기본적인 개념
열 (Column) 2차원 구조를 가진 테이블에서 세로 방향으로 이루어진 하나하나의 특정 속성 (더이상 나눌 수 없는 특성)
행 (Row) 2차원 구조를 가진 테이블에서 가로 방향으로 이루어진 연결된 데이터

 

- 테이블의 분할: 데이터의 불필요한 중복을 줄이는 것을 정규화(Normalization)라고 한다.

 

테이블의 정규화

 

용어 설명
정규화 (Normalization) 테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스
기본키 (Primary Key, PK) 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼
외부키 (Foreign Key, FK) 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼

 

4. ERD (Entity Relationship Diagram)

ERD의 구성요소는 개체(Entity), 관계(Relationship), 속성(Attribute) 이다.

  1. 개체

    • 개념

      • 시스템화 하고자 하는 사물이나 사건

      • 현실 세계의 객체

      • ex) 사원, 부서, 남자, 도시, 계약, 물품 등

    • 표기법

    • 종류

      • 일반 개체

      • 약 개체

      • 슈퍼 개체

      • 서브 개체

  2. 관계성 (Relationship)

    • 정의

      • 개체간의 연관성을 나타낸다. ex) 소속된다. 관리된다. 소유한다. 등

    • 표기법

    • 종류

      • 관계의 종류: 이진관계, 순환관계, 삼진관계

      • 관계성 (카디널리티, Cardinality): 1대1, 1대N, N대N

  3. 속성 (Attribute)

    • 정의

    • 표기법

    • 종류: 일반속성, 키속성, 다중값 속성, 복합속성, 유도속성

 

IE (Information Engineering) 표기법과 Barker (Case*Method) 표기법이 존재한다.

Example 1. K-리그 테이블 간의 양방향 관계

하나의 팀은 여러 명의 선수를 포함할 수 있다. - 한 명의 선수는 하나의 팀에 꼭 속한다.

하나의 팀은 하나의 전용구장을 꼭 가진다. - 하나의 운동장은 하나의 홈팀을 가질 수 잇다.

하나의 운동장은 여러 게임의 스케줄을 가질 수 있다. - 하나의 스케줄은 하나의 운동장에 꼭 배정된다.

Example 2. 부서 - 사원 테이블 간의 관계

하나의 부서는 여러 명의 사원을 보유할 수 있다.

한 명의 사원은 하나의 부서에 꼭 소속된다.

728x90

'Development > SQL' 카테고리의 다른 글

[SQL] SQL과 NoSQL의 비교  (0) 2021.06.24
[SQL] 관계(Relationship)의 이해  (0) 2020.05.21
[SQL] 엔터티(Entity)의 이해  (0) 2020.05.18
[SQL] 데이터 모델의 이해  (0) 2020.05.18
[SQL] 데이터 무결성의 이해  (0) 2020.03.12