• 검색 결과가 없습니다.

3. 논리적 설계

N/A
N/A
Protected

Academic year: 2022

Share "3. 논리적 설계"

Copied!
23
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

3. 논리적 설계

논리적 설계의 목적

개념적 스키마 (ER 모델)  DBMS의 논리적 스키마로 변환

개념적 스키마 (ER 모델)  DBMS의 논리적 스키마로 변환

개념적 설계와 논리적 설계의 차이

개념적 설계 - 스키마의 표현력과 완전성을 추구

논리적 설계 - 논리적 모델이 제공하는 자료 구조와 제약사항을 효 율적으로 이용

논리적 설계의 접근 방향

ER 다이아그램을 단순한 ER 다이아그램으로 변환

ER 다이아그램을 단순한 ER 다이아그램으로 변환

단순한 ER 다이아그램을 DBMS의 논리적인 모델로 변형

(2)

3.1 ER 다이아그램의 변환

데이터베이스 부하의 모델링

유도된 데이터에 대한 결정

유도된 데이터에 대한 결정

일반화 구조의 제거

개체의 분할

개체의 분할

개체와 관계의 병합

주키의 선택

(3)

데이터 볼륨 테이블

Concept Type Volume

CLIENT E 400,000 Concept Type Volume

ORDINARY(TRIP) E 150

,

NAME A 400,000

TELEPHONE A 400 000

( )

SPECIAL(TRIP) E 50

DAILY TRIP E 2 000

TELEPHONE A 400,000

PASSENGER E 395,000

FREQUENT E 20 000

DAILY_TRIP E 2,000

BUS E 500

BUS PROBLEM E 1 500

FREQUENT_ E 20,000

TRAVELER

AGENCY E 5,000

BUS_PROBLEM E 1,500

HOLD_RES R 1,000,000

DAILY_ROUTE_ E 20,000

SEGMENT

IS_ON_BOARD R 800,000

OF R 20,000

(from DAILY ROUTE SEGMENT) ROUTE_SEGMENT E 2,000

TRIP E 200

(from DAILY_ROUTE_SEGMENT)

OF R 2,000

(from DAILY_TRIPE)

• • •

• • •

(4)

연산 빈도 테이블

Operation Name/Description p / p Frequency q y Type yp O1 Search ROUTE_SEGMENT by DEP_CITY 50 times/day OL O2 Search ROUTE_SEGMENT by DEP_CITY 200 times/day OL

and ARR CITY _

O3 Search TRIPs with intermediate stop at a city 5 times/day OL O4 Create a new CLIENT record 500 times/day OL O5 Make a reservation 20,000 times/day OL , / y O6 Delete a reservation of a past TRIP 70 times/day OL

O7 Delete a CLIENT record 1 time/day OL

O8 Qualify a CLIENT as FREQUENT TRAVELER 10 times/day OL

O8 Qua y a C as QU 0 t es/day O

O9 Search the amount of miles earned by CLIENT Once/month B O10 Update the mileage of FREQUENT TRAVELER Once/day B O11 Search current reservation of a given Trip 100 times/day OL O11 Search current reservation of a given Trip 100 times/day OL

on a given date

(5)

유도된 데이터에 대한 결정

ARR_CITY DEP_CITY

NUMBER OF SEGMENTS

Operation Name/Description

NUMBER_OF_SEGMENTS AVAILABLE_SEATS

RESERVED_SEATS

Operation Name/Description

O1 Search ROUTE_SEGMENT by DEP_CITY N N N N Y O2 Search ROUTE_SEGMENT by DEP_CITY N N N Y Y

and ARR CITY_

O3 Search TRIPs with intermediate stop at a given city N N N Y Y

O4 Create a new CLIENT record N N N N N

O5 Make a reservation Y Y N N N

O6 Delete a reservation of a past TRIP Y Y N N N

O7 Delete a CLIENT record N N N N N

O8 Qualify a CLIENT as FREQUENT TRAVELER N N N N N O9 Search the amount of miles earned by CLIENT N N N N N O9 Search the amount of miles earned by CLIENT N N N N N O10 Update the mileage of FREQUENT TRAVELER N N N N N O11 Search current reservation of a given Trip N N N N N

on a given dateg

(6)

일반화 구조의 통합

CLIENT, PASSENGER, AGENCY들간의 일반화

일반화 구조를 관계로 변경하는

CLIENT

대안들

하나의 개체: Agency에 대한 O h d

AGENCY PASSENGER

Overhead

두 개의 개체: 관계의 수가 많 아져 복잡

FREQUENT_

TRAVELER

아져 복잡

세 개의 개체: 가장 일반적

(7)

일반화 구조의 통합

CLIENT, PASSENGER, AGENCY들간의 일반화

CLIENT

Name

Telephone

CLIENT

p

AGENCY

PASSENGER

IS_A_

PASS

IS_AN_

AGENCY

FREQUENT_

TRAVELER

Mileage(0, 1)

PASSENGER AGENCY

Status(D, A)

Passenger_No Agency_No Credit

(8)

개체의 분할

DAILY_ROUTE_SEGMENT

ORD ROUTE SEGMENT + POP ROUTE SEGMENTORD_ROUTE_SEGMENT POP_ROUTE_SEGMENT

DAILY ROUTE_ _ DAILY ROUTE

SEGMENT

OF

DAILY_ROUTE_

SEGMENT

ROUTE SEGMENT OF

ORD ROUTE SEG POP ROUTE SEG OF_ORD_R_S OF_POP_R_S

ROUTE_SEGMENT

MADE OF

ORD_ROUTE_SEG

ORD

POP_ROUTE_SEG

POP

TRIP MADE_OF

TRIP _

WITHIN

_ WITHIN

TRIP TRIP

(9)

개체와 관계의 통합

TRIP

ROUTE SEGMENT

Operation Name/Description

ROUTE_SEGMENT

DAILY_ROUTE_SEGMENT CLIENT

Operation Name/Description

O1 Search ROUTE_SEGMENT by DEP_CITY N N Y Y O2 Search ROUTE_SEGMENT by DEP_CITY N N Y Y

and ARR CITY_

O3 Search TRIPs with intermediate stop at a given city N N Y Y

O4 Create a new CLIENT record Y N N N

O5 Make a reservation Y Y N N

O6 Delete a reservation of a past TRIP N Y N N

O7 Delete a CLIENT record Y N N N

O8 Qualify a CLIENT as FREQUENT TRAVELER Y N N N O9 Search the amount of miles earned by CLIENT Y N N N O9 Search the amount of miles earned by CLIENT Y N N N O10 Update the mileage of FREQUENT TRAVELER Y N N N O11 Search current reservation of a given Trip N Y N N

on a given dateg

(10)

3.2 관계형 모델의 논리적 설계

외부 식별자를 제거

복합 애트리뷰트 및 다중치 애트리뷰트를 제거

복합 애트리뷰트 및 다중치 애트리뷰트를 제거

각 개체를 릴레이션으로 변환

관계를 릴레이션으로 변환

관계를 릴레이션으로 변환

다대다 관계: 새로운 릴레이션 생성

일대일 및 일대다 관계: 기존 릴레이션에 애트리뷰트를 추가

(11)

외부 식별자 제거

University Code University Code

UNIVERSITY

University_Code Name

City

UNIVERSITY

University_Code Name

City

ENROLLS ENROLLS

STUDENT

Student_No Last_Name Age

STUDENT

University_Code Student_No Last_Name

Age AAge

(12)

복합 애트리뷰트 제거

Last Name

PERSON

Last_Name Age

Sex

Street

ADDRESS

Street City State

PERSON

Last_Name Age

Sex

PERSON

Last_Name Age

Sex Sex

Street City State

Sex Address

(13)

다중치 애트리뷰트 제거

PRODUCT

Product_Code

Material_Codes (1, n) Description

P i Price

P d C d

PRODUCT

Product_Code Description Price

PRODUCT_

MATERIAL

Product_Code Material_Code

(14)

개체 변환

EMPLOYEE

Employee-Number First-Name

EMPLOYEE Last-Name Salary

EMPLOYEE(E l N b Fi t N L t N S l )

EMPLOYEE(Employee-Number, First-Name, Last-Name, Salary)

(15)

일대일 관계의 변환

WITH

CUSTOMER (1, 1) (1, 1) SHIPPING INFO

CUST SHIPPING(Customer No Cust Name Ship No Ship Addr) WITH

CUSTOMER

Customer-No Cust-Name

SHIPPING_INFO

Ship-No Ship-Addr

CUST_SHIPPING(Customer-No, Cust-Name, Ship-No, Ship-Addr)

Process

CUSTOMER (0, 1) (1, 1) CREDIT-CARD

CUSTOMER(Customer-No Cust-Name) Process CUSTOMER

Customer-No Cust-Name

CREDIT CARD

Card-No Limit

CUSTOMER(Customer-No, Cust-Name)

CREDIT-CARD(Card-No, Limit, Customer-No)

(0 1) (0 1)

Marriage MALE

Male-SSN Name

FEMALE

Female-SSN Name

(0, 1) (0, 1)

(16)

일대다 관계의 변환

Name Name

CITY

Population

SALESMAN

Phone-No

BELONGS_

TO

(1, 1)

WRITES (1, n)

Discount-Rate TO

(1, n)

WRITES

(0, 1)

scou t ate

STATE

Name Governor Population

ORDER

Order-No

Date CITY(City-Name, State-Name, Population)

STATE(State-Name, Governor, Population) SALESMAN(Name, Phone-No) ORDER(Order-No, Date)

Sales-Order(Order-No, Name, Discount-Rate)

(17)

다대다 관계의 변환

Student-Number

(1 n)

STUDENT

Last-Name GPA

ENROLLS (1, n)

Semester Grade

Course-Number (1, n)

Grade

COURSE

Course-Name

STUDENT(Student-Number, Last-Name, GPA) COURSE(Course-Number, Course-Name)

ENROLLS(Student-Number Course-Number Semester Grade)

ENROLLS(Student Number, Course Number, Semester, Grade)

(18)

N-ary 관계의 변환

Product-Code

(1 n)

PRODUCT

Name

Description

SUPPLY (1, n)

Quantity

PART

Part-Code (1, n)

(1, n)

Supplier-Code Description

SUPPLIER

pp Name Address

PRODUCT(Product-Code, Name, Description) PART(Part-Code, Description)

SUPPLIER(Supplier-Code, Name, Address)

SUPPLY(Product-Code, Part-Code, Supplier-Code, Quantity)

(19)

사례 연구

PASSENGER (Client-No, Name, Phone, Mileage, Status)

AGENCYAGENCY (Client-No, Name, Phone, Credit-Limit)(Client No, Name, Phone, Credit Limit)

DAILY-ROUTE-SEGMENT (Trip-Number, Segment-Number, Date, Available-Seats, Reserved-Seats) ORDINARY ROUTE SEGMENT (Trip Number Segment Number

ORDINARY-ROUTE-SEGMENT (Trip-Number, Segment-Number, Dep-City, Dep-Time, Arr-City, Arr-Time, Price, Distance)

POPULAR-ROUTE-SEGMENT (Trip-Number, Segment-Number, Dep-City, Dep-Time, Arr-City, Arr-Time, Price, Distance)

TRIP (Trip-Number, Dep-City, Arr-City, Weekdays, Type, Event)

HOLD-RES (Client-No, Trip-Number, Date, Segment-Number, ( , p , , g , Seat-Num, Smoking-Option)

PASSENGER-IS-ON-BOARD (Client-No, Trip-Number, Date, Segment Number)

Segment-Number)

(20)

4. 데이터베이스의 물리적 설계

물리적 설계란

?

논리적 스키마를 이용하여 효율적인 물리적 데이터베

논리적 스키마를 이용하여 효율적인 물리적 데이터베 이스를 구성하는 일

물리적 데이터베이스의 구조

저장 레코드의 형식, 저장 순서, 접근 경로, 물리적 저 장 장치의 할당등에 대한 내역

장 장치의 할당등에 대한 내역 참고 사항

참고 사항

물리적 DB 구조는 세부적인 성능에 영향을 미침

물리적 설계 단계에서 고려할 사항들의 대부분은 특정

물리적 설계 단계에서 고려할 사항들의 대부분은 특정 DBMS에 의해서 해결됨

DBA만이 물리적 DB 구조의 구성에 관여할 수 있음

(21)

접근 방법 설계

접근 방법 (Access Method)란?

저장 장치에 자료를 저장하거나 저장된 자료를 검색하

저장 장치에 자료를 저장하거나 저장된 자료를 검색하 는 방법

저장 구조와 탐색 기법으로 구성

인덱스

레코드 검색시 빠른 접근 보장

주로 B+ 트리로 구현됨

자주 검색되는 필드에 인덱스를 생성하면 검색 연산이

자주 검색되는 필드에 인덱스를 생성하면 검색 연산이 빨라짐

값의 구간에 의한 접근과 우선 순위에 따른 접근 가능

값의 구간에 의한 접근과 우선 순위에 따른 접근 가능

종류:

유일 인덱스: 키 값의 중복을 허용 않음

(22)

접근 방법 설계 (계속)

해싱

특정한 하나의 값의 연산 결과로 저장 위치를 파악

특정한 하나의 값의 연산 결과로 저장 위치를 파악

값의 구간에 의한 접근은 불가능

단지 그 값에 대한 검색만 가능

단지 그 값에 대한 검색만 가능

Clustering

연관된 레코드를 물리적으로 인접한 공간에 저장 l d d

Clustered Index

실제적인 데이터의 저장이 인덱스의 순서에 따름 하나의 테이블에는 하나의 Clustered Index만 존재

하나의 테이블에는 하나의 Clustered Index만 존재

(23)

성능 평가 및 개선

물리적 설계 내역에 대하여 성능면에서 검토

성능 평가의 기준 요소

저장 공간

저장 공간

주기억 장치: 공유 메모리 요구 용량

보조 기억 장치 공간

인덱스의 수 및 갱신 연산의 빈도

처리 시간

응답 시간

응답 시간

트랜잭션 갱신 시간

참조

관련 문서

윈도우즈 API 응용 프로그램: C 언어로 작성, 60줄 이상의 Hello 응용(복잡) 응용 프레임워크(MFC, pclaf). MFC 응용 프로그램: C++ 언어로 작성, MFC 구조 복잡, 10줄

Listening to the harsh noise 20 times earned one group (high earners) a chocolate; the other group of participants (low earners) had to hear the noise 120 times to

 New Problem: Given a stream, how can we find recent frequent items (= which appear more. than s times in

§ Enough to check that (i) anyone who has a close apartment must have a higher reservation price than anyone who has a distant apartment –. otherwise, they could make a trade

• Mapping table size reduced by a factor of (block size / page size) ~ 64

Pol y(2, 3, 4, 5-tetraphenyl )si l ol es (1 1 1, so cal l ed pol ysi l ol e, PTPS) shown i n Scheme1possessboth 2, 3, 4, 5-tetraphenyl -1-si l acycl openta- 2, 4-di

Kim, Dong-Myung Advisor : Prof. The control group did not get training. Only the experiment group had the plyometrics training 3 times a week.. There was

– Engineering economic analysis focuses on: costs, revenues and benefits that occur at different times.. – When a civil engineer designs a road, a dam, or a building: