1. 데이터베이스
데이터베이스(DB: database)는 통합하여 관리되는 데이터의 집합체를 의미한다.
이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리된다.
이러한 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리된다.
이를 관리하는 미들웨어를 데이터베이스 관리 시스템(DBMS: Database Management System)라고 한다.
-
데이터베이스의 특징
-
사용자의 질의에 대하여 즉각적인 처리와 응답이 이루어진다.
-
생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지한다.
-
사용자들이 원하는 데이터를 동시에 공유할 수 있다.
-
사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 할 수 있다.
-
응용프로그램과 데이터베이스는 독립되어 있으므로, 데이터의 논리적 구조와 응용프로그램은 별개로 동작된다.
-
-
데이터베이스의 발전
-
1960년대: 플로우차트 중심의 개발 방법
-
1970년대: 계층형(Hierarchical) 데이터베이스, 망형(Network) 데이터베이스 같은 제품
-
1980년대: 관계형 데이터베이스가 상용화되었으며, Oracle, Sybase, DB2와 같은 제품
-
1990년대: 객체 관계형 데이터베이스로 Oracle, Sybase, DB2, Teradata, SQL server와 같은 제품
-
-
관계형 데이터베이스(Relational Database)
-
1970년 영국의 수학자였던 E.F.Codd 박사의 논문에서 처음으로 관계형 데이터베이스 소개
-
파일시스템의 장점
-
처리속도가 DB에 비해 빠름
-
구현이 간편
-
비용이 저렴
-
-
파일시스템의 단점
-
무결성: 동시에 입력, 수정, 삭제할 수 없기 때문에 정보의 관리가 어려움
-
일관성: 복사본 파일을 만들어 사용할 경우 데이터의 불일치성이 발생
-
경제성: 저장공간의 낭비, 갱신 비용이 발생
-
보안성: 같은 데이터에 동일한 보안수준 적용의 어려움
-
-
관계형 데이터베이스의 장점
-
정규화를 통해 이상(Anomaly) 현상을 제거하고 데이터 중복을 회피 가능
-
동시성 관리, 병행 제어를 통해 데이터를 공유
-
데이터의 표현 방법 등을 체계화할 수 있고, 데이터 표준화, 데이터 품질을 확보
-
보안 기능
-
데이터의 무결성을 보장
-
데이터를 회복/복구하는 기능
-
-
관계형 데이터베이스의 단점
-
시스템의 부하 및 복잡성
-
별도의 관리 이력 필요
-
추가 도입비용 발생
-
-
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) 이다.
-
개체
-
개념
-
시스템화 하고자 하는 사물이나 사건
-
현실 세계의 객체
-
ex) 사원, 부서, 남자, 도시, 계약, 물품 등
-
-
표기법
-
종류
-
일반 개체
-
약 개체
-
슈퍼 개체
-
서브 개체
-
-
-
관계성 (Relationship)
-
정의
-
개체간의 연관성을 나타낸다. ex) 소속된다. 관리된다. 소유한다. 등
-
-
표기법
-
종류
-
관계의 종류: 이진관계, 순환관계, 삼진관계
-
관계성 (카디널리티, Cardinality): 1대1, 1대N, N대N
-
-
-
속성 (Attribute)
-
정의
-
표기법
-
종류: 일반속성, 키속성, 다중값 속성, 복합속성, 유도속성
-
IE (Information Engineering) 표기법과 Barker (Case*Method) 표기법이 존재한다.
Example 1. K-리그 테이블 간의 양방향 관계
하나의 팀은 여러 명의 선수를 포함할 수 있다. - 한 명의 선수는 하나의 팀에 꼭 속한다.
하나의 팀은 하나의 전용구장을 꼭 가진다. - 하나의 운동장은 하나의 홈팀을 가질 수 잇다.
하나의 운동장은 여러 게임의 스케줄을 가질 수 있다. - 하나의 스케줄은 하나의 운동장에 꼭 배정된다.
Example 2. 부서 - 사원 테이블 간의 관계
하나의 부서는 여러 명의 사원을 보유할 수 있다.
한 명의 사원은 하나의 부서에 꼭 소속된다.
'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 |