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 모델)
  • 기본 키 (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
반응형