1. 프로젝트의 진행 단계
◎ 프로젝트(Projcet)
▷ 현실세계의 업무를 컴퓨터 시스템으로 옮겨놓는 일련의 과정
▷ 대규모의 프로그램을 작성하기 위한 전체 과정
▶ ex) 집 짓기의 경우 : 초가집 → 목조건물 → 수 십층 이상의 건물
▷ 분석과 설계 작업 등한시 → '소프트웨어 개발 방법론'의 대두
▷ 폭포수 모델 (Waterfall Model)
◎ 폭포수 모델 (Waterfall Model)
▷ 가장 오래되고 전통적으로 사용되는 소프트웨어 개발 모델
▶ 폭포가 떨어지듯이 각 단계가 끝나면 다음 단계로 진행
▷ 장점
▶ 각 단계가 명확히 구분되어 프로젝트의 진행 단계가 명확해집니다.
▷ 단점
▶ 문제점이 발생될 경우 다시 앞단계로 거슬러 올라가기가 어려움
▶ 문제점이 대부분 프로그램 구현 단계나 테스트 단계에서 발생
▶ 대부분의 문제점을 업무 분석단계에서 다시 시작하여 해결
2. 데이터베이스 모델링
◎ 데이터베이스 모델링(데이터 모델링) 개념
▷ 현 세계에서 사용되는 작업이나 사물들을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
◎ 데이터베이스 모델링 실습
▷ 개념적 모델링
▶ 업무 분석 단계에 포함
▷ 논리적 모델링
▶ 업무 분석의 후반부와 시스템 설계의 전반부에 걸쳐 진행
▷ 물리적 모델링
▶ 시스템 설계의 후반부에 주로 진행
◎ 쇼핑몰 데이터 예제
1. 방문 내역 & 구매내역 데이터
▷ 메모장이나 엑셀로 작성되었다 가정
2. 기록된 내용에서 물건 구매 내역이 없는 고객 위로 정렬
▷ L자형 테이블이 되어 낭비되는 공간 생김
3. L자형 테이블을 빈칸이 있는 곳과 없는 곳으로 분류
▷ 고객테이블, 구매테이블로 분류하여 공간 절약
▷ 고객 테이블 중복 제거
▷ 기본 키(PK, Primary Key) 필요
▶ 고객 이름을 고객을 구분할 수 있는 구분자로 설정
▶ 각 행을 구분하는 유일한 값
▶ 기본 키의 조건은 중복되지 않고 비워있지 않아야함
▷ 구매 테이블에 '누가 구매했는지' 표기 위해 고객 이름 필요
4. 테이블 간의 업무적인 연관성(Relation) 정의
▷ 주 (Master)가 되는 쪽이 부모 테이블
▶ ex) 고객이 물건을 소유(o), 물건이 고객을 소유(x)
▶ 주가 되는 고객 테이블이 부모, 상세가 되는 구매 테이블이 자식이 됨(1 : N 모델)
▷ 기본 키(PK, Primary Key)
▶ 중복되지 않고 비어있지 않아야함
▷ 외래 키(FK, Foreign Key)
▶ 외래 키로 부모 테이블에서 유일하게 하나의 정보를 얻을 수 있음
▷ 제약조건
▶ 새로운 데이터 들어갈 때는 부모 테이블에 먼저 넣어야 함
▶ 데이터 삭제시에는 자식 테이블에서도 지워야 함
5. 완성된 고객 테이블과 구매 테이블의 구조 정의
◎ 정의한 테이블을 다이어그램으로 만들기
1. Workbench 실행하고 localhost로 접속, 열린 쿼리 창 모두 닫기
2. 모델 다이어그램 작성
▷ [File] → [New Model] 선택
▷ [MySQL Model] 탭에서 DB 이름 수정
▷ 기본적으로 데이터베이스 이름은 'mydb'
▷ 데이터베이스에서 마우스 오른쪽 버튼 클릭 후 [Edit Schema], 'modelDB'로 이름 수정
3. 모델 다이어그램 작성
▷ [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' 열을 차례로 클릭
4. 모델링 파일 실제 데이터베이스에 적용
▷ Workbench 메뉴의 [File] → [Open Model] → modelDB.mwb 열기
▷ [Database] → [Forward Enginner] 선택
▷ [Forward Enginner to Database] 시작되면
▶ [Set Parameters for connecting to a DBMS] 기본값
▶ [Set Options for Database to be Created] 기본값
▷ Root 비밀번호 입력
▷ [Select Objcets to Forward Engineer] 에는 'Export MySQL Table Object' 체크
▷ [Review the SQL Script to be Executed] → 자동 SQL문 생성
5. 다이어그램에서 데이터베이스로 내보내기한 결과 확인
▷ [Navigator] → [Schemas]
▶ 빈 곳에서 마우스 오른쪽 버튼 클릭한 후 [Refresh All] 선택하여 새로고침
▷ modelDB 데이터베이스 확장해 테이블 확인
6. 기존 존재하는 데이터베이스 이용해 다이어그램 작성
▷ ShopDB의 테이블, 인덱스, 스토어드 프로시저, 트리거를 다이어그램으로 변경
▷ Workbench 메뉴의 [Database] → [Reverse Engineer] 선택
▶ [Set Parameters for connectiong 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]
▶ [Reverse Engineer Progress]의 세부 단계 설정
▶ [Reverse Engineer Results]에서 4개에 테이블, 1개 뷰, 1개 루틴(=스토어드 프로시저) 변환된 것을 확인
모델링으로 테이블을 만드는 방법을 수행해보았습니다!
저렇게 만들면 자동으로 구문이 생성되는 것이 SQL의 장점이네요!!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > DB(SQL)' 카테고리의 다른 글
[DB_MySQL] 이것이 MySQL이다 ch06 SQL 기본 문법 2 (WHERE, BETWEEN, IN, LIKE, 서브쿼리) (0) | 2023.02.06 |
---|---|
[DB_MySQL] 이것이 MySQL이다 ch06 SQL 기본 문법 1 (SELECT, FROM) (0) | 2023.02.05 |
[DB_MySQL] 이것이 MySQL이다 ch05 MySQL 유틸리티 사용법 (0) | 2023.02.05 |
[DB_MySQL] 이것이 MySQL이다 ch03(MySQL 전체 운영 실습) (0) | 2023.02.02 |
[DB_MySQL] 이것이 MySQL이다 ch01(DBMS, MySQL) (0) | 2023.02.02 |