| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 프로그래머스
- vector
- int
- 그래프
- 깊이우선탐색
- 에라토스테네스의 체
- C++
- DFS
- 이분탐색
- 유클리드호제법
- 다이나믹프로그래밍
- BFS
- 최소공배수
- 오블완
- 티스토리챌린지
- map
- Set
- N과M
- 우선순위큐
- 정렬
- 배열
- 알고리즘
- 문자열
- DP
- priority_queue
- Sort
- 분할정복
- 백준
- stoi
- 백트래킹
- Today
- Total
안녕 세상아,
[프로젝트 기획] DB 스키마 작성 본문
DB 모델링 과정
1) 개념적 모델링
--> entity 도출 + 관계 설정
2) 논리적 모델링
--> data 구조 및 속성 정의 + 정규화
3) 물리적 모델링
--> 실제로 코드화
DB 설계할 때 정규화까지 하면 물론 좋지만 과장님이 일단 정규화까진 안해도 된다고 하셨다. 나의 수준을 고려한것일까나,..?^^...
암튼 flow 차트를 기반으로 DB를 설계한건 처음 했던 경험이라 처음부터 차근차근 해나갔다.
<개념적 모델링>
1. 요구사항 분석 - 도출된 요구사항
: flow차트를 기반으로 해서 기호를 문장으로 바꾸는 작업이다. 최대한 예외사항 없이 풀어내어 적어주는 것이 좋다.
문장으로 바꾼 후 자주 사용되는 중요 단어 위주로 밑줄을 치면서 단어를 도출해주는 것이 좋다.
사용자
- 문자를 받기 위해 사용자들은 번호, 체류시간, 비밀번호를 입력해야한다.
- 사용자는 번호로 식별한다.
- 사용자에게는 건물번호(들)이 부여된다.
.
.
.
2. 개념적 설계
: 요구사항 분석에서 추출된 단어들을 위주로 실제 db를 설계한다.
사용자 : 번호(pk) varchar, 체류시간 int, 비밀번호 varchar, 관리자 여부 bool
.
.
.
3. 관계 추출
: 생성된 entity들의 관계를 설정한다.
사용자 - 건물 (N:M) 관계
메세지 - 사용자 (1:N) 관계
.
.
.
4. 논리적 설계
: 관계 설정 후 외래키 설정하고 만약 N:M 관계라면 연관 table 생성해서 1:N 관계로 변환
- 1:N 관계, 1:1 관계는 외래키로 표현
- N:M 관계는 1:N 관계로 바꾸기
-> DB에 직접 구현할 수 없기 때문에 1:N 관계를 만든다. HOW? 연관 table 생성.
<논리적 모델링>
보통 정규화 과정이라고 정의한다. 정규화는 테이블을 쪼개서 중복 최소화하는 것이다.
정규화를 했다고 하려면 최소 3정규화까지는 해야된다고 한다.
1정규화 - 모든 속성이 도메일 원자값으로 구성되어 있도록 바꾸는 과정
2정규화 - 기본키가 아닌 속성이 기본키에 완전 함수 종속
3정규화 - 이행 함수 종속 제거
근데 나는 이부분은 생략했다.

결국 완성한 DB table이다. 물론 현재 프로젝트가 거의 끝난 시점에서 보니 많이 달라지긴 했다.
그래도 처음으로 이렇게 데이터베이스 스키마도 구성해보고 신기하고 재밌었던 과정인 것 같다.
'앱 기획' 카테고리의 다른 글
| [프로젝트 기획] FlowChart 만들기 (1) | 2024.03.29 |
|---|