
- 데이터베이스란?
: 데이터를 저장하는 공간 (어떻게> -> 관계형데이터베이스이론에 맞춰 저장 - RDBMS)
: 관계형테이터베이란 테이블과 테이블을 연관관계(pk와 fk)를 설정해서 테이블들을 수평관계로 데이터를 저장하는것.
- 데이터베이스를 구축하는 목적은?
: 데이터의 양이 급증하면서 데이터중복과 정합성문제(삽입,삭제,수정), 성능저하이슈가 있다.
그래서 , 데이터베이스 이론에 맞춰 데이터베이스를 구축해서 중복된 데이터를 최소화 하고
일관성을 유지, 정확성을 보1장하는 것, 무결성유지.
- 데이터베이스 모델링
1) 개념적설계 - 비즈니스측면서에서 유형이나 성격이 비슷한 데이터를 그룹핑 하는과정(전체의 큰그림)
: 업무를 일반화 한다. - 고객과의 인터뷰를 통해 니즈를 파악하여 작성된 시나리오를 바탕으로 업무를 일반화한다.
: 시나라오을 바탕으로
- Entitiy를 추출
- Attribute 추출
- Relation 추출(Entity와 Entity 사이의 관계)
- identifier 추출(6가지)
1.후보 식별자 (Candidate)
2.주 식별자 (Primary)
3.대체 식별자 (Alternate)
4.복합 식별자 (Composite)
5.대리 식별자 (Surrogate)
6.외래 식별자 (Foreign)
- 관계차수 (Cardinality) - ( 1: 1 , 1 : 다 , 다 : 다) :
- 선택성(Mandatory, Optionality ) - (반드시 - must, 있을지도 - may)
* 위 의 6단계를 진행하면 최종 산출물 ERD 만든다.
* 개념적 설계단계에서 나온 ERD를 바탕으로 논리, 물리를 진행한다.
* 개념적 설계단에서는 관계형데이터베이스 이론 적용하지 않는다.
2) 논리적설계 - 개념적설계단계의 데이터를 바탕으로 좀더 세밀하게 구체화시키는 과정으로
관리되어야 할 데이터를 모두 찾는과정
: 관계형데이터베이스 이론을 적용하여 설계한다.
: 어떤 데이터이터베이스를 사용할지는 고려하지 않는다.
- 매핑룰 적용한다.
Entity --> table(schema) - schema란 : 스키마는 DB의 구조와 제약조건에 관한 전반적인 명세를 정의한 메타데이터의 집합
Attribute --> 컬럼명
identifier ---> pk와 fk
Relation(관계)를 해소한다.
- 식별관계 : 한쪽의 pk를 다른쪽의 pk로 전이(pk이면서 fk) 1 : 1
- 비식별관계 : 한쪽의 pk가 다른쪽의 일반속성으로 전이 1 : 다
* 1 : 1 인경우 : 어느쪽의 테이블이든 한쪽의 pk를 다른쪽으로 전이한다. - pk+fk ==> 식별관계
* 1 : 다 인경우 : 1쪽의 pk를 다쪽의 일반속성으로 전이 - 비식별관계
* 다 : 다 인경우 : 새로운 Entity(table)를 만들고 양쪽의 pk를 새로운 Entity로 전이
-정규화 과정 진행
: 데이터 중복 최소화
: 정규화를 많이 하면 테이블이 더 작은 단위로 분리된다.
* 1차정규화 - 반복되는 속성이나 null을 많이 허용하는 속성은 별도의 Entity로 만들고
1 : 다 인 관계로 해결한다.
* 2차정규화 - 복합키가 있을때 일반속성들이 모두 복합키에 의존적이어야한다.
만약, 일반속성이 복합키의 일부분에만 의존적이라만 속성을 제거한다.
* 3차정규화 - 일반속성들이 모두 기본키(pk) 의존적이어야한다.
만약, 일반속성이 일반속성에 의존적이라면 속성을 제거한다.
3) 물리적설계
: 관계형데이터베이스 이론을 적용하고 어떤 DBMS를 사용할지를 선택한 상태에서 설계한다.
: 논리적설계 단계에서 나온 내용(schema정보)을 바탕으로 create table, index, sequence, view 등등을
실제 물리적인 공간에 생성한다. - 이때 DBMS에 해당하는 데이터타입을 결정한다-자료형과 사이즈
: 샘플데이터를 추가하여 기능을 test하면서 성능저하의 이슈가 있는지를 체크한다.
- 만약, 성능이슈가 생긴다면 필요에 의해서 역정규화=반정규화를 할수도 있다.
* 역정규화 유형
-데이터 중복 컬럼의 역정규화
-파생 컬럼의 생성
-테이블 분리
-요약테이블 생성
-테이블 통합
----------------------------------------------------------------------------------------------------
모델링 설계 tool
1) cloud erd : 협업할때 좋다
2) er_win
3) ex_erd
4) mysql workbench
5) draw.io - UML관련 설계
6) mermaid - https://mermaid.ai/
Mermaid.ai는 개발자나 기획자가 텍스트(코드 또는 자연어)만 입력하면 자동으로 다이어그램을
만들어주는 AI 기반 다이어그램 도구
쉽게 말하면 “글로 설명 → 자동으로 UML/Flowchart 같은 그림 생성” 하는 서비스이다.
Mermaid.ai에서는 다음과 같은 다이어그램을 만들 수 있다.
대표적인 것들:
Flowchart (프로세스 흐름도)
Sequence Diagram (API 호출 흐름)
ER Diagram (DB 설계)
Class Diagram (UML)
Gantt Chart (일정 관리)
State Diagram
Mind Map
Org Chart
즉 개발 문서 + 아키텍처 + 기획 다이어그램 대부분을 만들 수 있다
======================================================
- 프로젝트 진행순서!!!
1) 분석
: 주제선정하고 고객으로부터 원하는니즈를 파악해서 시나리오를 작성
: 벤치마킹!! (장단점) - 린캔버스
2) 설계
: 시나리오를 바탕으로 요구사항명세서 및 정의서 작성
: usecaseDiagram 작성 - 사용자입장에서 작성한 프로세스 흐름
: 레이아웃정의서 - GUI구성 ---> 카카오 오븐 tool, Figma
: 데이터베이스 모델링 - ERD cloud
: classDiagram --> tool
: sequenceDiagram - 개발자입자에서 작성한 프로세스 흐름
* draw.io UML tool 지원
3) 구현및 개발 - SI - System Integration(시스템 구축)
: 개발자들이 투입되어 프로젝트 환경을 세팅하고 설계단계에서 나온 문서를 참조해서 개발한다.
--> 모든 조원들이 동일한 환경에서 작성할수 있도록 하나의 프로젝트를 구성한후
그 프로젝트를 공유해서 사용한다. ( JDKversion, 한글인코딩설정)
--> package구조, interface설계, lib,명명규칙에 대한 문서화
--> 단위테스트 진행하면서 개발
4) 테스트 - QA
개발프로그램에 대한 통합테스트시나리오 문서를 바탕으로 전체적인 버그를 체크한다.
5) 배포
운영서버에 서비스를 배포한다.
6) 유지보수 - SM(System Management(시스템 운영, 또는 유지보수) )
: 지속적으로 관리를 하면서 버그나 고객의 니즈를 파악해서 개선, 수정 한다.
---------------------------------------------------------------------------------------------------------
'Dev > DB' 카테고리의 다른 글
| [JDBC] SELECT 전체조회 | 번호로 조회 / DELETE로 삭제해보기 (0) | 2026.03.09 |
|---|---|
| SQLInjection Test 실습 (0) | 2026.03.09 |
| JDBC(Java Database Connectivity) API실습 (0) | 2026.03.09 |
| MySQL) SUBQUERY 예제 (0) | 2026.03.06 |
| MySQL) JOIN 예제 (0) | 2026.03.06 |