Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
[MySQL] 1. DBMS 개요
DBMS 개요
데이터베이스의 정의와 특징
- 데이터베이스: 데이터들의 집합
- DBMS: 데이터베이스 관리, 운영 역할로 여러 사용자나 응용 프로그램이
공유하고동시에 접근이 가능해야하는 프로그램
DBMS의 특징
- 데이터의 무결성
- 데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔던지 데이터에 오류가 있어서는 안된다.
- 무결성을 위해 데이터베이스는
제약 조건의 특성을 가진다. - ex) 학생 데이터에 모든 학생은 학번이 반드시 존재해야 한다. - 학번 중복 불가능의 제약 조건
- 데이터의 독립성
- 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존 작성된 응용 프로그램은 영향을 받지 않아야한다.
- 데이터베이스가 저장된 디스크가 새 것으로 변경되어도 기존 사용하던 응용 프로그램은 아무 변경없이 계속 사용되어야 한다.
- 보안
- 데이터베이스 안 데이터에는 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있어야 한다.
- 접근 시 사용자 계정에 따라 다른 권한을 가져야한다.
- 데이터 중복의 최소화
- 동일한 데이터가 여러개 중복 저장되는 것을 방지하여야 한다.
- 응용 프로그램 제작 및 수정이 쉬워짐
- 기존 파일 시스템을 이용할 때는 각각 파일의 포맷에 맞춰 개발해야 했다.
- 데이터 베이스를 이용함으로써 통일된 방식으로 응용 프로그램 작성이 가능해지고 유지보수가 쉬워진다.
- 데이터의 안전성 향상
- DBMS가 제공하는 백업, 복원 기능을 이용함으로써 데이터가 깨지는 문제가 발생할 경우 원상으로 복원 또는 복구하는 방법이 명확해진다.
데이터베이스의 발전
- 데이터베이스의 발전 과정
- 오프라인 관리
- 종이에 직접 기록
- 파일 시스템 사용
- 컴퓨터 사용 이후 종이에 기록하던 내용을 컴퓨터 파일에 기록 저장
- 대개 하나의 응용 프로그램마다 하나의 데이터 파일 할당
- 어떤 기능을 구현하기 위해서 기능의 개수만큼 데이터 파일이 필요 → 데이터의 수가 늘어나면 중복으로 인한 데이터 불일치 문제 발생
- 데이터베이스 관리 시스템(DBMS)
- 대량의 데이터를 효율적으로 관리하고 운영하기 위한 시스템
- 데이터의 집합인 데이터베이스를 잘 관리하고 운영하기 위한 시스템 또는 소프트웨어
- DBMS에 데이터를 구축하고 관리하고 사용하기 위한 언어로 SQL 사용
DBMS 분류
- 계층형 DBMS
- 처음 나온 DBMS 개념
- 각 계층이 트리 형태를 이루며 1:N 관계를 갖는다.
- 처음 구축한 이후 구조를 변경하기 까다롭다.
- 주어진 상태에서 검색은 빠르지만 접근의 유연성이 부족해 임의 값 검색의 어려움
- 망형 DBMS
- 계층형 DBMS의 문제점을 개선하기 위해 시작된 DBMS
- 1:1, 1:N, N:M 관계 지원으로 효과적이고 빠른 데이터 추출
- 복잡한 내부 포인터를 사용해 프로그래머가 구조를 이해해야만 프로그램 작성이 가능하다는 단점
- 관계형 DBMS (RDBMS)
- 데이터베이스를 테이블이라 불리는 최소 단위로 구성: RDBMS의 가장 기본적인 구성
- 테이블은 하나 이상의 열로 구성
- 테이블: 데이터를 효율적으로 저장하기 위한 구조
- 정보 저장을 위헤 하나의 테이블이 아닌 여러 개의 테이블로 나누어 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터 저장의 효율성 보장
- 나뉜 테이블의 관계를 기본키와 외래 키를 사용해 연결할 수 있다.
- 부모 테이블과 자식 테이블을 조합해 결과를 얻고싶을 경우 SQL의
join기능을 활용하면 된다. - 대용량 데이터의 관리와 데이터의 무결성 보장 → 동시에 데이터에 접근하는 응용 프로그램을 사용할 경우 적절한 DBMS
- 단점: 시스템 자원을 많이 차지해 시스템이 느려질 수 있다.
SQL 개요
- 일반적인 프로그래밍 언어와는 조금 다른 특성을 갖는다.
- DBMS 제작 회사와 독립적
- 각 제작회사가 표준 SQL에 맞추어 DBMS 개발
- 다른 시스템으로 이식성이 좋다.
- 표준이 계속 발전한다.
- 대화식 언어
- 바로 질의하고 결과를 얻는 대화식 언어로 구성
- 분산형 클라이언트/서버 구조
- 클라이언트에서 질의하면 서버에서 질의를 받아 처리한 후 클라이언트에게 전달