working_helen
[SQL 개념 정리] Database / Phase of DB design / ER model / Relational Model / SQL 본문
[SQL 개념 정리] Database / Phase of DB design / ER model / Relational Model / SQL
HaeWon_Seo 2025. 5. 5. 17:11SQL 구문 연습과 함께 데이터베이스와 관련된 개념적인 부분에 대해 공부해본다.
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) 용어 정리

| 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

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

| 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에서 마름모 |

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들의 조합 |

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는 회사마다 서로 다르게 존재할 수 있음

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
'외부 수업 > SQL 스터디' 카테고리의 다른 글
| [코테 연습] Leetcode 코딩테스트 연습 MySQL Med. (0) | 2025.05.19 |
|---|---|
| [코테 연습] Leetcode 코딩테스트 연습 MySQL Med. (0) | 2025.05.12 |
| [코테 연습] Leetcode 코딩테스트 연습 MySQL Easy (3) (1) | 2025.04.28 |
| [코테 연습] Leetcode 코딩테스트 연습 MySQL Easy (2) (0) | 2025.04.21 |
| [코테 연습] Leetcode 코딩테스트 연습 MySQL Easy (0) | 2025.04.14 |