Database와 관련된 기초 개념 정리 1편 : DB, DBMS, Modeling, Schema, ERD, Data Type
1️⃣ DB와 DBMS
❗️ 한 줄 정리 : 데이터(자료)를 보기 쉽게 정리해놓은 것이 데이터베이스, 이를 조작하기 편하게 도와주는 프로그램이 DBMS이다!
01. DB (Database)
❗️ 한 줄 정리 : 데이터(자료)를 보기 쉽게 정리해놓은 것이 데이터베이스, 이를 조작하기 편하게 도와주는 프로그램이 DBMS이다!
데이터베이스(DB)란 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음을 뜻한다.
주로 조직의 필요한 정보를 얻기 위한 목적으로 만들어지며, 논리적으로 연관된 데이터를 모아 구조적으로 통합한다.
일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어된다.
02. DBMS (Database Management System)
DBMS란 다수의 사용자들, 응용 프로그램들이 데이터베이스 내의 데이터를 접근, 공유할 수 있도록 해주는 데이터베이스 관리 시스템이다.
DBMS를 통해 다음과 같은 기능을 수행할 수 있다.
1) 데이터 정의 (Definition) : 데이터 모델에 따라 데이터의 구조(Table)를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행한다.
2) 데이터 조작 (Manipulation) : 응용 프로그램이 요청하는 DB의 접근 및 조작 기능 제공한다. (삽입, 삭제, 수정 작업을 지원한다.)
3) 데이터 추출 (Retrieval) : 응용 프로그램 혹은 사용자가 조회하는 데이터를 추출한다.
3) 데이터 제어 (Control) : 데이터베이스 사용자의 계정을 생성하고 모니터링하며 접근을 제어한다. 백업과 파손 회복, 인증, 보안, 병행제어의 기능 또한 수행한다.
❗️ 추가 공부 : DBMS에 대한 좀 더 자세한 이해 by 망나니개발자
1) Data Model
데이터 모델(Data Model)이란 데이터를 구조화하는 방식을 의미하며, 아래와 같은 종류들이 있다.
1) 계층형 데이터 모델(hierarchical data model)
2) 네트워크형 데이터 모델(network data model)
3) 관계형 데이터 모델(relation data model)
4) 객체 데이터형 모델(object data model)
5) 객체-관계 데이터형 모델(object-relational data model)
이 중에서 가장 많이 사용되는 모델은 관계형 데이터 모델로, 이 모델에 기초를 둔 데이터베이스를 관계형 데이터베이스(RDB), 이러한 데이터베이스를 사용하는 DBMS를 RDBMS(Relational DBMS)라 한다.
❗️ 추가 공부 : 다른 데이터모델에 따른 DBMS의 종류도 알고 싶다면 by Jisoo Lim
2) RDB의 이해
관계형 데이터베이스(RDB) 구조를 만드는 원리는 시각적으로 보는 것이 이해가 빠르므로 동영상 링크를 남긴다.
관계형 데이터베이스는 왜 필요한가, 어떻게 만들어지는가 by 생활코딩
관계형 데이터베이스를 만드는 법 by 오빠두 엑셀
테이블 간의 관계에서 외래 키를 이용한 테이블 간 JOIN이 가능하다는 게 RDB의 차별화되는 가장 큰 특징이다.
3) RDBMS의 종류
RDB를 제어할 수 있는 소프트웨어인 RDBMS의 종류에는 ORACLE, MySQL, Maria DB, SQL SERVER 등이 있다.
DB-Engines 사이트에서 자주 쓰이는 DBMS의 랭킹을 살펴볼 수 있는데, 상위 5개 중 4개가 관계형 데이터 모델에 따른 RDBMS인 것을 볼 수 있다.
2️⃣ Data Modeling
데이터 모델링(Data Modeling)이란 주어진 자료로부터 데이터 모델을 구성하는 작업을 의미한다.
01. Schema
스키마란 DB 구조와 제약조건에 대한 전반적인 명세를 기술한 것이다.
데이터베이스는 외부스키마, 개념스키마, 내부스키마의 3단계 스키마 구조로 이뤄진다.
(이미지 출처: 망나니개발자)
1) 외부스키마(External Schema)
일반 사용자나 응용 프로그래머가 접근해서 볼 수 있는 계층이다. 접근하는 사용자에 따라서 접근하는 데이터베이스가 달라질 수 있는데, 대학교 포털 사이트에서 교수가 보는 데이터와 학생이 보는 데이터가 다른 것을 예로 들 수 있다.
2) 개념스키마(Conceptual Schema)
개발하는 데 필요한 모든 데이터베이스를 의미한다. 외부스키마는 사용자에게 필요한 데이터만을 추출해서 보여주는 것이라면, 개념스키마는 전체 데이터베이스를 의미하므로 외부스키마는 개념스키마의 부분집합이다.
3) 내부스키마(Internal Schema)
실제 컴퓨터 내부에 물리적으로 저장되는 데이터베이스 형태이다.
(이미지 출처: 망나니개발자)
02. ER 모델
ER 모델이란 모든 데이터베이스를 개체(Entity)와 각 개체들 간의 관계(Relationship)로 표현하는 것을 의미한다. 이러한 개체들은 각 개체의 특성을 나타내는 속성(Attribute)에 의해 식별, 구분된다.
이러한 ER 모델을 활용하여 다이어그램으로 나타낸 것을 ERD(개체 관계도, Entity-Relationship Diagram)라고 한다.
❗️ 예제 : ERD 예제를 이용한 설명 by 길벗시나공 IT
03. Data Modeling의 과정
데이터 모델링은 다음과 같은 과정을 거친다.
1) 개념적 모델링: 개체와 개체들 간의 관계에서 ERD를 만드는 과정
2) 논리적 모델링: ERD을 사용하여 RDB의 모델을 만드는 과정
3) 물리적 모델링: RDB 모델의 물리적 구조를 정의하고 구현하는 과정
04. Data Modeling의 예시
1) 서점 주문 데이터 모델링
1) 개념적 모델링 - 요구사항을 분석한 결과를 토대로 핵심을 파악하고 뼈대를 만든다.
요구사항 : 고객이 서점에서 도서를 주문하는 데이터베이스를 모델링
위 요구사항에서 개체로 구분할 수 있는 것들을 찾아내어 도서, 고객을 Entity로 추출한다. 개체 간의 관계인 주문을 Relationship으로 추출한다. 도서 개체를 구분할 수 있는 속성인 도서 이름, 출판사, 도서 단가를 도서의 Attribute로, 고객 개체를 구분할 수 있는 속성인 고객 이름, 주소, 전화번호를 고객의 Attribute로 추출한다.
2) 논리적 모델링 - 개념적 모델링에서 만든 ERD를 사용하려는 DBMS에 맞게 구조와 규칙을 정의한다.
관계형 DBMS(RDBMS) 구조에 따라 PK, FK 등을 정의하고 상세 속성을 추출하며 데이터베이스 구조를 정규화, 표준화한다.
3) 물리적 모델링 - 실제 컴퓨터의 저장장치에 저장하기 위한 물리적 구조를 정의한다.
데이터 타입을 효율적으로 정의하고 성능을 극대화시킬 수 있는 쿼리를 작성한다.
(이미지 출처: 망나니개발자)
2) 항공 예약 시스템 데이터 모델링
1) 개념적 모델링 - 요구사항을 분석한 결과를 토대로 핵심을 파악하고 뼈대를 만든다.
2) 논리적 모델링 - 개념적 모델링에서 만든 ERD를 사용하려는 DBMS에 맞게 구조와 규칙을 정의한다.
(이미지 출처: 비트나인)
3) 물리적 모델링 - 실제 컴퓨터의 저장장치에 저장하기 위한 물리적 구조를 정의한다.
create table Users(
Email varchar(30) not null,
constraint Users_pk
primary key (Email),
);
create table Passengers(
ID int not null,
Name varchar(20) not null,
Email varchar(30) not null,
Gender varchar(10) not null,
Age int not null,
constraint Passengsers_pk
primary key (ID),
constraint Passengsers_Users_Email_fk
foreign key (Email) references Users (Email)
);
create table Bookings(
ID int auto_increment,
User_Email varchar(30) not null,
Booking_Date timestamp not null,
constraint Bookings_pk
primary key (ID),
constraint Bookings_Users_Email_fk
foreign key (User_Email) references Users (Email)
);
create table BP_Relationships
(
Booking_ID int not null,
Passenger_ID int not null,
constraint BP_Relationships_Bookings_ID_fk
foreign key (Booking_ID) references Bookings (ID),
constraint BP_Relationships_Passengers_ID_fk
foreign key (Passenger_ID) references Passengers (ID)
);
create table Flights(
Code int not null,
constraint Flights_pk
primary key (Code)
);
create table Journeys(
ID int not null,
Flight_Code int not null,
Date_Of_Journey timestamp not null,
Booking_ID int not null,
constraint Journeys_pk
primary key (ID),
constraint Journeys_Flights_Code_fk
foreign key (Flight_Code) references Flights (Code),
constraint Journeys_Bookings_ID_fk
foreign key (Booking_ID) references Bookings (ID)
);
❗️ 추가 : 좀 더 자세한 모델링 과정 예시 by tmdgusya
05. ERD 작성시 유의점
- 효율적인 데이터베이스 접근을 위해 테이블은 잘게 쪼갠다.
- 테이블에 상태, 생성일시, 수정일시를 나타내는 칼럼을 추가해서 업데이트와 관리를 용이하게 한다.
- 동료 개발자가 쉽게 이해할 수 있도록 컬럼 이름을 명확하게 짓는다.
- 동룍 개발자가 쉽게 이해할 수 있도록 명확하지 않은 컬럼은 주석을 추가한다.
- 메모리 낭비를 줄이기 위해 컬럼의 중복을 최소화한다.
- 각각 컬럼에 대한 null 허용은 지양하도록 한다.
- 만약 null 허용을 할 수 있는 컬럼이라면, 반드시 필요한 컬럼인지 생각해보고 그렇지 않다면 삭제한다.
- PK는 의미가 없는 컬럼을 지정해야 후에 해당 컬럼을 변경하게 될 경우 연결된 모든 컬럼을 변경해줘야 하는 상황을 막을 수 있다.
- 이름과 데이터타입은 데이터베이스 전체적으로 일관성있도록 지정한다.
- 테이블명은 단수가 아닌 복수로 지정한다.
3️⃣ Data Type
메모리 낭비를 최소화하고 데이터 크기를 줄이기 위해 입력하는 데이터값에 맞는 데이터타입을 지정해줘야 한다.
입력된 값에 따라 데이터의 크기를 가변적으로 설정하기 위해 문자형 데이터타입은 char보다는 varchar로 설정한다.
가격 등 정확한 연산을 필요로 하는 숫자형 데이터타입은 소수점까지 나타내는 decimal을 사용한다.
이미 인터넷 상에 자료들이 많이 있으므로 데이터 타입에 대한 자세한 설명은 링크로 대체한다.
❗️ 추가공부 : MySQL 데이터 타입 선택 방법 by soulshine
✅ Reference
데이터베이스의 정의와 유형 by Oracle
데이터베이스 시스템 by 망나니개발자
DBMS란 무엇인가 by Jisoo Lim
RDBMS 종류 및 특성 by sorrow16
데이터 모델, 스키마, 인스턴스 by jhkang-dev
❗️ 추가공부 : 데이터베이스 by 망나니개발자 - 데이터베이스에 대해서 8개의 시리즈 포스팅으로 매우 자세한 내용을 담고 있다. 디테일하게 공부하고 싶다면 후에 참고할 것.
Author And Source
이 문제에 관하여(Database와 관련된 기초 개념 정리 1편 : DB, DBMS, Modeling, Schema, ERD, Data Type), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@keepcalm/Database와-관련된-기초-개념-완벽-정리-DBMS-Modeling-ERD-SQL-Transaction저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)