working_helen

[SQL 개념 정리] Database / Phase of DB design / ER model / Relational Model / SQL 본문

외부 수업/SQL 스터디

[SQL 개념 정리] Database / Phase of DB design / ER model / Relational Model / SQL

HaeWon_Seo 2025. 5. 5. 17:11

SQL 구문 연습과 함께 데이터베이스와 관련된 개념적인 부분에 대해 공부해본다. 

 

1. Database
2. Phase of DB design

3. Entity-Relationship Model (ER model)

4. Relational Model

5. SQL

 


1. Database

1) 등장 배경

 

- Big Data와 Web Scale Computing의 등장으로 대용량 데이터를 효율적으로 관리해야할 필요성이 강화
- 초기 데이터 저장 방식은 File System, 많은 문제점이 존재

  • redundancy : 같은 데이터가 여러 파일에 중복 저장 
  • integrity : integrity가 보장되지 않아 무결성 문제에 취약
  • consistency : atomic update가 불가능
  • concurrent access : 다수 사용자의 동시다발적 접근을 잘 처리하지 못함
  • 데이터 구조가 프로그램과 밀접하게 연결되어 영향을 받음
  • 데이터 검색 및 수정이 불편함

 

2) DB의 특징

  • minimized redundancy : 동일한 데이터를 여러 위치에 중복 저장되는 것을 최소화
  • integrity : schema에 integrity constraint를 적용해 데이터의 정확성과 신뢰성을 유지
  • consistency : atomicity(원자성)을 만족하며 data consistency 보장
  • concurrent access : 다수 사용자의 동시다발적 접근에도 일관성과 정확성 유지
  • independence : DB를 사용하는 프로그램이나 application과 독립적으로 존재
  • 권환 부여, 사용자 인증 등을 통해 security 보장 
  • 직관적이고 이해하기 쉬운 데이터 저장 방식
  • Big data를 저장 및 처리하기에 용이함 

 

3) 용어 정리

출차 : https://www.learncomputerscienceonline.com/how-to-design-database/

data  객체, 이벤트, 현상 등에 대하여, 기록할 만한 가치가 있는 정보
Database DB 여러 사용자가 공유하고 사용할 목적으로 체계적으로 저장해 둔 데이터 모음
persistent data의 통합된 모음
DB management system
(DBMS)
DB를 효율적으로 사용할 수 있도록 해주는 소프트웨어
data를 저장, 처리, 관리하는 프로그램들의 모음
data에 공동으로 사용되는 작업을 모으고 abstraction만 제공
MySQL, Oracle, PostgreSQL 등의 SQL Server
DB administrator
(DBA)
DB 안에서 일어나는 모든 작업을 총괄하는 담당자
DB의 설계, 구축, 유지보수, 보안, 성능 최적화 등을 담당

 

* atomicity (원자성)

- 트랜잭션 내의 모든연산은 모두 수행되거나 전혀 수행되지 않아야 한다는 성질 

- DBMS는 원자성을 만족하기 때문에 업데이트 중간에 오류가 발생하면 전체 작업을 완전히 취소함으로써 data consistency 보장

 

* integrity

- DB에 저장된 데이터가 정확성, 일관성, 신뢰성을 유지한다는 성질 

- DB가 정의된 테이블 schema를 위반하는 데이터가 없다는 성질

- DB에는 현실 세계에서 유효한(적절한) 데이터만 저장될 수 있다는 성질

 

* integrity constraint (무결성 제약조건)

- DB가 integrity를 유지하도록 명시적으로 설정하는 규칙 또는 조건

- 새로 들어오는 record가 DB의 테이블 schema에 적합한지 확인하는 조건

- 컴퓨터 속 DB가 현실 세계의 조건에 벗어나지 않는 데이터만 저장하도록 조건 설정 

- PK, FK, not null, check, unique, domain 범위 등 

 

* independence

DB를 사용하는 프로그램이나 application과 독립적으로 존재

- DB를 사용하는 사용자 application은 DB의 물리적, 논리적 구조의 변화에 영향을 받지 않음 

physical data 
independence
- DB의 물리적 구조가 바뀌어도 사용자 application이나 논리적 스키마에는 영향을 주지 않음
- DB를 사용하는 application은 데이터가 DB에 어떻게 저장되는지 물리적 구조를 알지 못해도 됨
logical data 
independence
- 데이터의 논리적 스키마가 바뀌어도 사용자 application에는 영향을 주지 않음
- 사용자 뷰나 프로그램에서 사용하는 인터페이스는 그대로 유지




 

 

2. Phase of DB design

1) DB 구축 과정

  • Analyze requirements
    : application을 만들기 위해 어떤 데이터가 필요한지, 데이터 간 관계는 무엇인지, 포함해야하는 attribute나 조건은 무엇이 있는지 등을 파악 (DB에 반영해야할 needs 파악)
  • Sketch table structure
    : 대략적인 테이블 종류나 관계를 구상
  • Determine characteristics of field
    : filed의 name, type, length, default, constraint 등을 구체적으로 결정
  • Create tables
    : 실제로 테이블을 생성하고, Primary Key 등을 지정


2) Phase of DB design

출처 : https://www.learncomputerscienceonline.com/how-to-design-database/#google_vignette

conceptual design - requirements를 분석하고 이를 만족하는 최적의 DB 구조를 표현하는 단계
- ER model (ER schema / diagram) 사용
logical design - conceptual design 결과를 DBMS의 구조에 맞게 변환하는 단계
- Relational model (relational schema) 사용 
physical design - logical design 결과를 실제 DBMS에 구현하는 단계
- 데이터 저장 방식, 인덱스, 파일 구조 등을 결정

 

 


3) 용어 정리

출처 : https://examradar.com/relational-model/#google_vignette

schema DB의 논리적 구조를 설계한 디자인
instance 특정 시점에 DB에 실제로 저장되어 있는 데이터
instance = row = tuple = record
attribute 각 테이블의 데이터가 특정 속성이나 특징
attribute = column = field 
domain 하나의 attribute가 가질 수 있는 값 범위나 타입
data model  DB의 구조를 설명하고 설계하기 위한 이론적 틀이나 표현 방법
ER model, Relational model, Key-value model 등

 

 

 

 

 

 

3. Entity-Relationship Model (ER model)

 

1) ER model

- 데이터를 entity(개체)와 relation(관계)로 표현한 모델
- conceptaul design에서 사용

  • DB에 구현해야하는 데이터와 관계를 모두 정의
    DB에 포함될 내용의 전반적인 범위를 설정
  • ER model의 conceptual schema를 바탕으로 logical design이 생성

 

2) ER diagram 구성 요소

Entity 고유하게 식별될 수 있고 현실 속에 존재하는 데이터 (객체, 사건, 행동 등)
Entity set  같은 속성을 공유하는 entity의 모음
ER diagram에서 직사각형
Relationships 두 개 이상의 entity 사이의 연결, entity가 어떻게 관련되어 있는지
Relationship set 같은 속성을 공유하는 relationships의 모음, entity set과 entity set 사이에서 형성
ER diagram에서 마름모

출처 : https://www.learncomputerscienceonline.com/entity-relationship-diagram/

 

 

3) Relationship의 특징

Degree of Relationship set relationship set이 연결하는 entity set의 개수
Relationship cardinality relationship set에 참여하는 entity 간의 개수 대응 관계
상대 entity set에서 relationship을 맺는 entity의 개수
total participation entity set의 모든 entity가 적어도 1번 그 relationship에 참여해야 하는 경우
weak entity set 자체적으로 PK를 가질 수 없는 entity set
의존하고 있는 strong entity set의 attribute를 함께 사용해야 PK를 가질 수 있음

 

 

 

 

 

4. Relational Model

 

1) Relational Model

- 모든 데이터를 table 형태(tabular form)로 표현한 모델
- Relational Model 에 따라 구성된 데이터베이스를 Relational DB라고 함

- logical design에서 사용

  • relational schema : relation의 이름, attribute(A), 도메인을 정의한 구조/설계도/디자인
  • 여러 relations로 구성된 DB의 elational schema를 디자인

 

 

2) Relational shema 구성 요소 

relation 데이터를 table 형태로 저장한 구조
relation's degree relation의 attribute의 개수 = column의 개수 
relation's cardinality relation에 저장된 tuple의 개수 = row의 개수 
Keys relation에서 각 record를 유일하게 식별하기 위해 사용되는 특정한 attribute들의 조합

 

출처 : https://medium.com/@claire_logan/3-relational-data-model-examples-c9f70c61588c

 

 

3) Keys의 종류

super key - relation의 각 record를 유일하게 식별하는 attribute들의 조합
- at most 1 record를 추출하는 attribute 조합
candidate key - 최소성을 만족하는 super key, set의 크기가 가장 작은 super key
- subset 중 어느 것도 super key가 될 수 없는 경우 
primary key - 대표성을 만족하는 candidate key
- PK를 구성하는 attribute는 여러 개일 수 있지만, PK 자체는 1개 이하만 가능
- PK는 자동으로 not null + unique constraint를 가짐
foreign key - 다른 relation의 PK를 참조하는 attribute

 

 

* Keys 관련 constraint

Referential Integrity - FK가 참조하는 attribute는 참조 테이블의 PK여야 함
- FK는 참조되는 테이블의 PK 값과 일치하거나 null이어야 함
- FK가 존재하지 않는/유효하지 않은 외부 값을 참조하지 않도록 보장
Entity Integrity - PK null이 될 수 없고 중복되지 않아야 함
-  record PK에 의해 유일하게 식별되어야 함

 

 

 

 

 

5. SQL

 

1) SQL (Structured Query Language)

Query DB에서 원하는 정보를 검색하거나 조작하기 위해 사용되는 요청문
Query language DB에서 원하는 정보를 조회하기 위해 사용하는 언어 (request/retrieve)
DB language DBMS에서 DB를 정의, 조작, 관리하는 등에 사용하는 표준 언어

 

- SQL은 대표적인 DB language 

  현재 거의 모든 상용 DBMS에서는 SQL을 표준으로 사용

- SQL은 Query language의 기능을 포함하고 있으며, non-procedual query language이자 DB system language

- MySQL, Oracle, PostgreSQL 등은 SQL 언어를 사용하는 DBMS인 것

  DBMS는 회사마다 서로 다르게 존재할 수 있음 

출처 : 우재남, 『혼자 공부하는 SQL』, 한빛미디어(2021),p16

 

 

 

2) SQL 구문 종류

DDL - Data Definition language 
- 테이블의 구조(schema)를 정의하거나 변경

- CREATE, ALTER, DROP, TRUNCATE, RENAME
DML - Data Manipulation Language
- 테이블 내 데이터를 조작

- SELECT, INSERT, UPDATE, DELETE
TCL - Transaction Control Language
- 트랜잭션의 실행 흐름을 제어

- COMMIT, ROLLBACK, SAVEPOINT
DCL - Data Control Language
- 사용자 권한 및 접근 제어

- GRANT, REVOKE

 

 

 

 

 

 

 

 

 

Reference

https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
https://www.learncomputerscienceonline.com/entity-relationship-diagram/

https://en.wikipedia.org/wiki/Relational_model
https://medium.com/@claire_logan/3-relational-data-model-examples-c9f70c61588c