안녕 세상아,

[프로젝트 기획] DB 스키마 작성 본문

앱 기획

[프로젝트 기획] DB 스키마 작성

돈 많은 백수가 되고싶다 2024. 5. 15. 14:42

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정규화 - 이행 함수 종속 제거

 

근데 나는 이부분은 생략했다. 

 

위의 테이블은 dbdiagram.io 를 사용하였다.

결국 완성한 DB table이다. 물론 현재 프로젝트가 거의 끝난 시점에서 보니 많이 달라지긴 했다. 

 

그래도 처음으로 이렇게 데이터베이스 스키마도 구성해보고 신기하고 재밌었던 과정인 것 같다. 

'앱 기획' 카테고리의 다른 글

[프로젝트 기획] FlowChart 만들기  (1) 2024.03.29