- 정형 데이터 (Structured Data)
- 고정된 필드에 저장된 데이터
- RDBMS, 엑셀
- 반정형 데이터 (Semi-Structured Data)
- 고정된 필드에 저장되어 있지는 않지만, 메타데이터나 스키마 등을 포함하는 데이터
- XML, HTML, JSON, 이메일
- 비정형 데이터 (Unstructured Data)
- 고정된 필드에 저장되어 있지 않은 데이터
- 텍스트, 이미지, 동영상, 음성 데이터
1. Database
- 정형 데이터 (Structured Data)를 다룸
- 데이터의 집합
- 서로 성향이 비슷한 것들끼리의 모음
1-1. Database 특징
- 다양한 어플리케이션에서의 독립성
- 실시간 접근성
- 동시공유
- 지속적인 업데이트
- 참조
2. DBMS(Database Management System)
- Oracle, MySQL 등
2-1. DBMS 기능
- DB 구축
- DB 정의
- DB 조작
- DB 공유
- DB보호
- 권한제어
- 유지보수
2-2. DBMS 유형
- Relational DBMS (RDBMS)
- 관계형 데이터베이스 : DB 끼리 관계
- 비용이 들고 데이터량이 많아지면 속도 저하
- Oracle, MySQL, PostgreSQL
- Relational, Analytical(OLAP)
- NoSQL DBMS
- 비관계형 데이터베이스
- 비용이 저렴하고 데이터량이 많아도 속도가 빠름
- MongoDB, Hbase, DynamoDB
- Column-Family, Graph, Document, Key-Value
SQL | NoSQL |
관계형 | 비관계형 |
구조화된 쿼리 언어를 사용해 미리 정의된 스키마를 가짐 | 비정형 데이터에 대한 동적 스키마 존재 |
수직 확장이 가능 scale up | 수평 확장이 가능 scale out |
테이블 기반 | Document, 키-값, 그래프, 와이드 컬럼 저장소 |
다중 레코드 트랜잭션에 좋음 | 문서, JSON 같은 비정형 데이터에 좋음 |
다중 레코드 ACID 트랜잭션을 지원 | 다중 레코드 ACID 트랜잭션 미지원 (MongoDB 같은 일부는 지원) |
3. 데이터 모델링 & ERD
- 효율적으로, 최적화해서 데이터 저장 및 관리
3-1. 데이터 모델링 순서
1) 업무파악 (요구사항 수집 및 분석)
- 업무를 데이터화하여 모델링 할 것인지에 대한 요구사항 수집
2) 개념적 데이터 모델링 (ERD 작성)
- Entity 도출해 ERD 작성
- 객체 간의 상관관계 표시
3) 논리적 데이터 모델링
- DBMS에 맞게 Table, 변수, type 설계 및 정규화 ⇒ 정의
4) 물리적 데이터 모델링
- 선택한 Database에 실제 테이블을 만드는 작업
- 제약조건 정의
- 객체의 상관관계 정의
3-2. ERD (Entity-Relation Diagram)
- Entity == Table
- 학생 : Entity
- Attribute
- 학번, 이름 : Attribute
- PK (Primary Key)
- 유일한 식별자
- FK (Foreign Key)
- Domain
- type : int, varchar, char 등
- 제약조건 (NOT NULL)
- NULL 허용 유무
- Relation
- 식별관계
- 부모 자식 관계에서 자식이 부모의 PK를 FK로 참조해서 자신의 PK로 설정
- 선으로 표시
- NULL 미존재
- 식별관계
-
- 비식별관계
- 부모 자식 관계에서 자식이 부모의 PK를 FK로 참조해서 일반 속성으로 사용
- 점선으로 표시
- NULL 존재
- 비식별관계
4. ⭐ 데이터베이스 정규화
- 데이터의 중복을 최소화하게 구조화하는 프로세스
- 불필요한 데이터 제거, 데이터의 중복을 최소화 함으로써 저장공간이나 자원을 효율적으로 사용하기 위함
- Insert, Update, Delete 실행 시, 발생할 수 있는 이상현상 방지
1) 제1정규형
- 하나의 컬럼에 하나의 값만 기입
2) 제2정규형
- 제1정규형을 거친 테이블 나누기
- 중복데이터 제거됨
3) 제3정규형
- 제2정규형을 거친 테이블 나누기
- 여러 정보가 포함되어 있는 것을 나누기
4) BCNF정규화 (선택)
5. SQL (Structured Query Language)
- DDL (Data Definition Language)
- 테이블 정의, 수정, 삭제
- Create, Alter, Drop, Rename, Truncate
- DML (Data Manipulation Language)
- 데이터 삽입, 조회, 수정, 삭제
- Insert, Select, Update, Delete
- DCL (Data Control Language)
- 데이터 보안, 권한, 무결성, 회복 등 데이터 제어
- Grant, Revoke
- TCL (Transaction Control Language)
- Commit, Rollback, Savepoint
💡 Reference
728x90
반응형
'Language > SQL(MySQL)' 카테고리의 다른 글
[DB] DDL & DCL & DML & TCL (0) | 2024.05.28 |
---|