3 minute read


김용담 강사

데이터베이스 기초

RDBMS와 MySQL

Contents

1. 데이터베이스란?
2. 데이터베이스를 사용하는 이유
3. RDBMS란?
4. 데이터베이스 시스템 이해
5. ERD
6. MySQL 소개

3. RDBMS

Relational DataBase Management System

그림

목적에 따라 규칙성이 있는 고유식별번호를 부여해주는게 좋다!

테이블과 구성요소

그림

Structured Query Language(SQL)

그림

  • DBMS와 사용자가 소통하기 위해 정의된 언어

  • RDBMS를 대상으로 정의됨

  • DDL(Data Definition Language), DML(Data Manipulation Language),

    DCL(Data Control Language)로 구분하여 정의

  • RDBMS에서 데이터를 생성 및 조작하는 모든 기능을 구현할 수 있음

  • RDBMS마다 조금씩 차이가 있지만, 기본적으로 정의되는 문법은 거의 같음

  • DDL

    테이블을 다룰 때 사용(table-level)

    • CREATE, DROP, ALTER, TRUNCATE
  • DML

    데이터를 처리할 때 사용(row-level)

    • INSERT, UPDATE, DELETE, SELECT
  • DCL

    데이터베이스에 필요한 여러가지 부가기능

    • GRANT, REVOKE, COMMIT, ROLLBACK, LOCK
Cursor(커서)

커서를 사용하면 DBMS를 이용해서 프로그래밍이 가능하다!

  • Python, Java, C++ 같은 다른 언어를 사용하여, 절차적(Procedural)으로 명령을 수행

    하고 싶을 때 사용하는 개념.

  • SELECT 등에 의한 데이터베이스 검색 실행 결과를 한 줄씩 처리하기 위해서 데이터베이

    스 서버 측의 결과와 행 위치 등을 나타내는 개념

  • 커서 사용 방법은 다음과 같습니다.

    1. DECLARE CURSOR

    2. OPEN

    3. FETCH

    4. UPDATE

    5. DELETE

    6. CLOSE

Logical Schema

그림

  • DB의 논리구조를 설명하는 개념

  • DB를 구성하고 있는 테이블(데이터)와

    사이의 관계(기능)을 정의함

  • Schema의 설계가 DB 설계의 첫번째

  • Entity-Relationship Diagram(ERD)

    를 이용하여 정의

schema 설계. 그 중 이 db에 무슨 기능이 필요한가를 짜는 것이 첫번째이다!

4. 데이터베이스 시스템의 이해

데이터베이스의 구성요소

그림

4. 데이터베이스 시스템의 이해

DBMS

  • DBMS도 결국 컴퓨터 시스템입니다.

  • 사용자로부터 입력받은 query(질의)를 내부 시스템이 이해하고 처리합니다.

  • SQL을 시스템적으로 이해하고 성능 개선을 하는 “튜닝” 작업도 있습니다.

  • 데이터베이스의 연구는 DBMS 내부의 여러가지 개념들을 고도화하는데에 있습니다.

    e.g. index, query optimization, file system, …

  • DBMS마다 시스템의 정의와 목적이 다릅니다.

4. 데이터베이스 시스템의 이해

e.g. MySQL DBMS

그림

5. ERD

DBMS를 기능에 맞게 디자인하자

그림


Conceptual Model(ERD) Logical Model(Schema)

5. ERD

Entity-Relationship Diagram

그림

1. 서비스의 기능 명세

> - documentation

2. ERD 디자인

3. Logical Schema

4. Physical Schema (요즘은 잘 안쓴다! 왜 안쓰는지는 이후 설명)

5. Implementation

> MySQL (local)

> Firebase (BaaS)

> Dynamo DB (BaaS)

> Redis (BaaS)

속성이나 관계를 엔티티에 있는 컬럼에 설명해서 연결해주는 것이라고 이해했다..


University DB ERD

5. ERD

Entity Set

그림

  • Entity란 실제로 존재하는 하나의 개념

    e.g. 사람, 거래내역, 고객, …

  • Entity Set이란 Entity를 정의하고 있는 집합으로 속성을 정의함

    e.g.

    instructor = (ID, name, salary)

    student = (ID, name, tot_cred)

수학적으로 entitiy set을 정의하기 위해 집합으로 정의함

  • attribute 중에 하나에 반드시 Primary

    Key 가 있어야함_!_

위 그림에서는 ID name salary

5. ERD

Relationship Set

그림

그림

  • Relationship이란 Entity 사이의 관계

  • 주로 어떤 “기능”을 나타냄

    e.g. 구매하다, 가입하다, …

  • Relationship Set이란, entity들 사이

    의 모든 relationship을 모은 집합

5. ERD

Relationship Sets with attributes

그림

5. ERD

Ternary Relationship

Relationship이 정의되는 entity가 3개

그림

Q. ternary relationship VS relationship with attribute

왜 여기서 proj-guide를 ternary relationship으로 정의했을까?

프로젝트가이드가 없으면 둘 사이의 관계가 없다!

5. ERD

Relationship with complex attritubes

그림

5. ERD

Mapping Cardinalities

그림

5. ERD

Mapping Cardinalities

그림

5. ERD

Reduction ERD to Schema

그림


Conceptual Model(ERD) Logical Model(Schema)

5. ERD (to schema)

Design Issues

  • entity sets vs attributes

  • entity sets vs relationship sets

  • binary vs ternary

  • 앞으로 추가될 데이터를 고려하여 디자인

  • 운영 비용을 고려하여 디자인

  • 저장 공간의 효율성 및 쿼리 탐색 속도를 고려한 디자인

요약

ERD는 Entity Relationship Diagram의 약자로 ER data Model을 그래픽으로 표현한 것</br></br>

3가지 개념 Entity sets, Relationship sets, Attributes</br></br>

> Entity sets: 같은 테이블의 있는 튜플들의 집합 </br> </br>

> relationship type은 entity type 사이의 연관관계를 나타냄 </br> </br>

> Relationship set의 종류</br>

    Binary relationship : 두 entity sets사이의 존재하는 관계를 binary relationship이라 하며 대부분의 관계들이 이것이다.</br>

    Ternary relationship : instructor가 student에게 project를 project guide하면 이들은 아래와 같이 삼항 관계를 갖는다.</br></br>

> Attributes는 ERD에서 타원으로 표현</br>

    Simple, Composite attributes : simple은 단일속성, composite은 여러 속성값으로 이루어진 속성이다 (ex. 주소)</br>

    Single-valued, multivalued attributes : 1개의 value를 가질 수 있으면 Single, 2개 이상의 값을 가지면 multi</br></br>

6. MySQL

세계에서 가장 많이 사용되는 오픈소스 RDBMS
  • Oracle 회사가 관리하고 있는 오픈소스 RDBMS

-1995 년에 처음 발표되었으며, 현재(2022년4 월 기준) 최신 버젼은 8.0.28

  • C, C++로 개발되었으며 대부분의 운영체제를 지원함

  • MySQL 자체를 설치해서 Shell 환경에서도 운영가능하나, 보통 MySQL Workbench를

    사용하여 관리함

  • PyMySQL 라이브러리를 사용하면 Python에서도 사용 가능

6. MySQL

MySQL을 이용한 enterprise 서비스들
    1. TOSS : https://www.mysql.com/why-mysql/case-studies/toss-bank-financial-services-mysql-enterprise-edition.html
    1. SSG : https://www.mysql.com/why-mysql/case-studies/ssg-com-online-shopping-mysql-enterprise-edition.html
    1. LINE : https://www.mysql.com/why-mysql/case-studies/line-database-availability-scalability-security-mysql.html
    1. 카카오뱅크 : https://www.bloter.net/newsView/blt201908300010

이제 SQL 공부하러 갑시다!