정보보안공부

DBMS_day15 본문

데이터베이스

DBMS_day15

Steady_sp 2017. 8. 1. 12:30

# 데이터 베이스 모델링 : 현실세계에 있는 "사물" 또는 "작업"을 DBMS의 테이블로 변경하는 작업을 의미한다.

 

# 모델링 예시) 백화점에 가면 직원도 있고 고객도 있고 백화점에 진열된 상품(물품)들도 있다. 이를 데이터베이스 모델링을 진행하게 되면 직원들은 [직원 테이블]로 만들어내고, 고객들은 [회원 테이블]로 만들어내고, 진열 된 상품들은 [판매 물품 테이블]로 만들어내는 행위를 모델링한다고 한다.

 

=========================1단계==========================
쇼핑몰 데이터베이스를 구축한다고 가정한다.
쇼핑몰에 방문한 고객의 명단, 고객이 어떤 물건을 구매 했는 지 구매내역, 2가지를 데이터베이스에 저장하기로 결정했다. 어떤 고객은 아무 물품도 구매하지 않고 쇼핑몰을 그냥 나갈 수 도 있다. 그래서 물건을 구매하지 않고 그냥 나간 고객은 구매한 물건을 NULL로 값을 안 넣기로 결정했다.
========================================================

=========================2단계==========================
기록 된 내용에서 물건을 구매하지 않은 고객들을 위쪽으로 정렬을 한 테이블이 왼쪽에 있는 테이블이다. 이런 형태에 테이블을 L자형 테이블이라고 한다. L자형 테이블은 안 좋은 것이다. 데이터 공간이 낭비되고 있음을 의미하기 때문에 L자형 테이블이 만들어지는 것은 문제점이다.
========================================================

=========================3단계==========================
L자형 테이블에 단점을 제거하기 위해 고객 테이블과 구매 테이블을 따로 분리시켰다. 고객 테이블과 구매 테이블을 따로 따로 분리시킨다. 이렇게 고객 테이블과 구매 테이블을 따로 분리시켰더니 공간이 낭비되는 문제점이 제거 된다. 하지만 이테이블은 고객 이름 중복에 문제가 발생한다. 또한 구매 테이블을 보고 누가 어느 물건을 구매 했는 지 판단할 수 없게 된다.
========================================================

=========================4단계==========================
고객 테이블에 고객 이름을 PK(기본 키)로 설정함으로써 중복되지 않게 만든다. 구매 테이블에 어떤 고객이 물건을 구매한건지 고객이름을 함께 저장하게 만든다.
구매테이블에 고객 이름은 PK 설정을 하면 안된다.
========================================================

 

# 모델링은 진행 자 마다 결과가 다르다는 특징이 발생 된다. 모델링에 정답은없다.

 

# 저장 공간을 낭비하는 문제점이 있는 테이블은 안 좋은 모델링이라고 할 수 있다.

 

# Index 등 등 테이블 설정을 잘 못 구성 해 놓은 것도 안 좋은 모델링이라고 할 수 있다.

 

# 방금 전에 모델링을 excel 파일을 가지고 진행했을 때 고객테이블과 구매 테이블이 존재했다. 근데 구매 테이블만 보고서는 이 물품을 어디로 배송해야하는지 알 수가 없다. 외래키 설정을 통해서 2개의 테이블을 서로 연결시켜줄 수 있다.

 

# 이렇게 테이블을 서로 연결시켜주는 작업을 관계설정을 한다라고 한다.

 

# 관계설정할 때는 반드시 두 테이블에 동일한 값이 존재해야한다. 구매테이블에 고객이름과 회원테이블에 고객이름이 동일하게 존재한다. 이런경우에 관계설정을 할 수 있다.

 

# 테이블은 부모 테이블과 자식 테이블로 나뉘어 진다.

 

# 관계설정을 한다는 이유가 테이블을 부모 자식 관계를 맺어주기 때문이다.

 

# 외래키를 통해서 관계를 맺어줄 때 부모 테이블에 값이 중복되면 안된다. 자식 테이블은 값이 중복되어도 된다.

 

# 1:N 관계를 맺는다.
-> 1(부모) : N (자식)

 

# 고객테이블을 부모 테이블로, 구매테이블을 자식 테이블로 설정할 수 있게 된다.

 

# 외래키(FK) : 부모와 자식 관계를 맺어주기 위해 사용하는 설정이 왜래키이다.

예) 물품의 종류를 기록하는 [물품 종류] 테이블과 물품을 어느 직원이 판매했는 지를 기록하는 [물품 판매 직원] 테이블이 존재한다.
 한명의 직원이 여러 종류의 물품을 팔 수도 있고
 여러직원이 하나의 물품을 판매할 수도 있다.

 물품 판매직원 테이블은 사람이므로 부모테이블로 설정 해 버리는 경향이있다.
 절대적으로 사람테이블이 물건 테이블에 부모테이블로 결정되어야 하는 것이 아 니다.

 물품 종류 : 부모 테이블, 물품판매직원 : 자식 테이블

# Workbench에서 모델링을 GUI로 진행할 수 있는 기능을 제공한다.

 

# 데이터베이스 다이어그램 : 데이터베이스에 테이블들을 보기 좋게 그림으로 그려낸 것을 다이어그램이라고 한다.

 

# Workbench를 통해 다이어그램을 만들 수 있다.
=====================================================
file -> new model -> mydb 더블클릭 -> modelTestDB로 이름지정후 닫기
-> add Diagram 더블클릭 -> 1:1 위에 3번째꺼로 테이블만들기
-> 테이블 더블클릭 -> userTBL 이름
=====================================================

 

# 1:N 먼저클릭이 자식

 

# Workbench로 다이어그램을 만들 때 관계설정을 진행할 때 먼저 클릭한게 자식 테이블이 되고 나중에 클릭한게 부모 테이블이 된다.

 

# Workbench 프로그램 외에도 다이어그램을 제작할 수 있는 여러 프로그램이 존재한다.

 

# 다른 프로그램에서 만든 다이어그램이 Workbench에서 호환되고 그러지 않는다.

 

# 다이어그램은 주로 만들때 Workbench를 사용한다.

 

# Workbench에서 버그가 있는데, 모델만들 것을 저장할 때 저장하는 경로에 한글이 들어가 있으면 저장이 깨질 때가 있다.
-> C드라이브에 저장 ( Ctrl + s )

 

# 만든 모델을 실제 데이터베이스에 테이블로 만들어 내기 위해서는 반드시 모델을 연 상태에서 진행해야 한다. Open model 해서 파일을 열고 진행한다.

 

# Database -> forward engineer ( 모델링을 데이터베이스에 만들어 낸다. )
-> DBMS1번의 아이피 -> NEXT -> 비밀번호입력 -> show filter

 

# forward engineer : 메뉴를 통해 만든 다이어그램을 DBMS에 적용시킬 수 있다.

 

# 모델링 프로세스 : 모델링 작업을 진행하는 과정

 

# 폭포수 모델 프로세스
프로젝트 계획
                 -->
                      업무 분석
                                    -->
                                          시스템 설계
                                                            -->
                                                                  구현
                                                                        -->
                                                                             테스트
                                                                                       -->

유지보수

@ 프로젝트 계획 : 앞으로 진행할 업무를 어떻게 진행할지 계획하는 것인데, 누가 프로젝트에 참석하고, 누가 어떤 업무를 진행하는 지, 누가 언제 투입되어서 언제 철수 하는 지, 어떤 작업을 언제부터 언제까지 진행하는 지 등 등이 명기된다.

 

@ 업무 분석 : 내가 만드는 프로그램, DB가 어떤 업무프로세스가 진행되어지는 지 작성한다.

 

@ 시스템 설계 : 해당 업무에 맞게 프로그램과 데이터베이스를 어떻게 만들지 설계를 진행한다. ( DBA는 데이터베이스 모델링을 진행한다. )

 

@ 구현 : 설계 된 모델링을 기반으로 데이터베이스를 구축한다.

 

@ 테스트 : 실제 구축 된 데이터베이스를 잘 동작하는지 프로그램과 연동하여 테스트 운영

 

@ 유지보수 : 구축 된 시스템을 실제로 가동하면서 문제가 발생하는 지를 체크하고 발생되는 문제점을 해결하는 작업

 

<데이터베이스 모델링>

 

 

 

 

 

 

 

-> workbench에서 file -> new model -> model이름설정 -> EER Diagram더블클릭

 

 

-> 테이블을 만들고 테이블에 각각의 컬럼을 작성한다.

 

 

-> 다이어그램에서 모델링을 데이터에이스로한다.

-> database -> forward enginner -> 해당 계정 , 아이피 설정

 

 

-> DBMS1에 만들어진것을 확인

 

 

'데이터베이스' 카테고리의 다른 글

DBMS_day17  (0) 2017.08.02
DBMS_day16  (0) 2017.08.01
DBMS_day_14  (0) 2017.07.28
DBMS_day13  (0) 2017.07.27
DBMS_day12  (0) 2017.07.26
Comments