DB/SQL
이것이MySQL이다 - 데이터베이스 모델링
록's
2023. 2. 2. 15:10
728x90
반응형
프로젝트의 진행 단계
프로젝트 (Project)
- 현실세계의 업무를 컴퓨터 시스템으로 옮겨놓는 일련의 과정
- 대규모의 프로그램을 작성하기 위한 전체 과정
- ex) 집 짓기의 경우 : 초가집 -> 목조건물 -> 수 십층 이상의 건물
- 분석과 설계 작업 등한시 -> ‘소프트웨어 개발 방법론’의 대두
- 폭포수 모델 (Waterfall Model)
폭포수 모델 (Waterfall Model)
- 가장 오래되고 전통적으로 사용되는 소프트웨어 개발 모델
- 폭포가 떨어지듯이 각 단계가 끝나면 다음 단계로 진행
- 장점
- 각 단계가 명확히 구분되어 프로젝트의 진행 단계가 명확해짐
- 단점
- 문제점이 발생될 경우 다시 앞 단계로 거슬러 올라가기가 어려움
- 문제점이 대부분 프로그램 구현 단계나 테스트 단계에서 발생
- 대부분의 문제점을 업무 분석단계에서 다시 시작하여 해결
데이터베이스 모델링
데이터베이스 모델링(데이터 모델링) 개념
- 현 세계에서 사용되는 작업이나 사물들을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
데이터베이스 모델링 실습
- 개념적 모델링
- 업무 분석 단계에 포함
- 논리적 모델링
- 업무 분석의 후반부와 시스템 설계의 전반부에 걸쳐 진행
- 물리적 모델링
- 시스템 설계의 후반부에 주로 진행
쇼핑몰 데이터 예제
- 방문 내역 & 구매내역 데이터
- 메모장이나 엑셀로 작성되었다 가정
- 기록된 내용에서 물건 구매 내역이 없는 고객 위로 정렬
- L자형 테이블이 되어 낭비되는 공간 생김
- L자형 테이블을 빈칸이 있는 곳과 없는 곳으로 분류
- 고객테이블, 구매테이블로 분류하여 공간 절약
- 고객 테이블 중복 제거
- 기본 키 (PK, Primary Key)필요
- 고객 이름을 고객을 구분할 수 있는 구분자로 설정
- 각 행을 구분하는 유일한 값
- 기본 키의 조건은 중복되지 않고 비어있지 않아야 함
- 구매 테이블에 ‘누가 구매했는지’ 표기 위해 고객 이름 필요
- 테이블 간의 업무적인 연관성(Relation) 정의
- 주 (Master)가 되는 쪽이 부모 테이블
- ex) 고객이 물건을 소유 (O) , 물건이 고객을 소유 (X)
- 주가 되는 고객 테이블이 부모, 상세가 되는 구매 테이블이 자식이 됨 (1:N 모델)
- 주 (Master)가 되는 쪽이 부모 테이블
- 기본 키 (PK, Primary Key)
- 중복되지 않고 비어있지 않아야 함
- 외래 키 (FK, Foreign Key)
- 외래 키로 부모 테이블에서 유일하게 하나의 정보를 얻을 수 있음
- 제약조건
- 새로운 데이터 들어갈 때는 부모 테이블에 먼저 넣어야 함
- 데이터 삭제 시에는 자식 테이블에서도 지워야 함
- 완성된 고객 테이블과 구매 테이블의 구조 정의
정의한 테이블을 다이어그램으로 만들기
- Workbench 실행하고 localhost로 접속, 열린 쿼리 창 모두 닫기
- 모델 다이어그램 작성
- [File] >> [New Model] 선택
- [MySQL Model] 탭에서 DB 이름 수정
- 기본적으로 데이터베이스 이름은 ‘mydb’
- 데이터베이스에서 마우스 오른쪽 버튼 클릭 후 [Edit Schema], ‘modelDB’로 이름 수정
모델 다이어그램 작성
[Model Overview]의 [Add Diagram] 더블클릭
[EER Diagram] 탭 추가되고 다이어그램 그릴 수 있는 상태
◦모델 다이어그램 작성
⁃[Place a New Table] 아이콘 클릭 à 빈 화면에서 다시 마우스 클릭해 테이블 생성
•다이어그램의 table1을 더블 클릭 à 고객 테이블(userTBL) 만들기
같은 과정 반복해 구매 테이블(buyTBL) 작성
⁃테이블 간에 1:N 관계 맺어주기
•<Place a Relationship Using Existing column> 아이콘 클릭
•buyTBL의 ‘userName’ 열과 userTBL의 ‘userName’ 열을 차례로 클릭
◦모델링 파일 실제 데이터베이스에 적용
⁃Workbench 메뉴의 [File] >> [Open Model] à modelDB.mwb 열기
⁃[Database] >> [Forward Engineer] 선택
⁃[Forward Engineer to Database] 시작되면
•[Set Parameters for connecting to a DBMS] 기본값
•[Set Options for Database to be Created] 기본값
◦모델링 파일 실제 데이터베이스에 적용
⁃Root 비밀번호 입력
⁃[Select Objects to Forward Engineer]에는 ‘Export MySQL Table Objects’ 체크
⁃[Review the SQL Script to be Executed] à 자동 SQL문 생성
다이어그램에서 데이터베이스로 내보내기한 결과 확인
◦[Navigator] >> [Schemas]
⁃빈 곳에서 마우스 오른쪽 버튼 클릭한 후 [Refresh All] 선택하여 새로고침
◦modelDB 데이터베이스 확장해 테이블 확인
기존 존재하는 데이터베이스 이용해 다이어그램 작성
◦ShopDB의 테이블, 인덱스, 스토어드 프로시저, 트리거를 다이어그램으로 변경
◦Workbench 메뉴의 [Database] >> [Reverse Engineer] 선택
⁃[Set Parameters for connecting to a DBMS]
⁃[Connect to DBMS and Fetch Information]
⁃[Select the schemas below you want to include:]
⁃[Retrieve and Reverse Engineer Schema Objects]
⁃[Select Objects to Reverse Engineer]
◦ShopDB의 테이블, 인덱스, 스토어드 프로시저, 트리거를 다이어그램으로 변경
◦Workbench 메뉴의 [Database] >> [Reverse Engineer] 선택
⁃[Reverse Engineering Progress] 의 세부 단계 설정
⁃[Reverse Engineering Results]에서 4개에 테이블, 1개 뷰, 1개 루틴(=스토어드 프로시저)
변환 된 것을 확인
728x90
반응형