3. 논리적설계 - kocwcontents.kocw.net/.../2014/yeungnam/chohaengrae1/1.pdf · 2016. 9. 9. ·...
TRANSCRIPT
-
3. 논리적 설계
논리적 설계의 목적 개념적 스키마 (ER 모델) DBMS의 논리적 스키마로 변환 개념적 스키마 (ER 모델) DBMS의 논리적 스키마로 변환
개념적 설계와 논리적 설계의 차이 개념적 설계 - 스키마의 표현력과 완전성을 추구 논리적 설계 - 논리적 모델이 제공하는 자료 구조와 제약사항을 효율적으로 이용
논리적 설계의 접근 방향ER 다이아그램을 단순한 ER 다이아그램으로 변환 ER 다이아그램을 단순한 ER 다이아그램으로 변환
단순한 ER 다이아그램을 DBMS의 논리적인 모델로 변형
7장. 데이터베이스설계 (Page 32)
-
3.1 ER 다이아그램의 변환
데이터베이스 부하의 모델링 유도된 데이터에 대한 결정 유도된 데이터에 대한 결정 일반화 구조의 제거 개체의 분할 개체의 분할 개체와 관계의 병합 주키의 선택
7장. 데이터베이스설계 (Page 33)
-
데이터 볼륨 테이블
Concept Type VolumeCLIENT E 400,000
Concept Type VolumeORDINARY(TRIP) E 150,
NAME A 400,000
TELEPHONE A 400 000
( )
SPECIAL(TRIP) E 50
DAILY TRIP E 2 000TELEPHONE A 400,000
PASSENGER E 395,000
FREQUENT E 20 000
DAILY_TRIP E 2,000
BUS E 500
BUS PROBLEM E 1 500FREQUENT_ E 20,000TRAVELER
AGENCY E 5,000
BUS_PROBLEM E 1,500
HOLD_RES R 1,000,000
DAILY_ROUTE_ E 20,000SEGMENT
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)
• • •
7장. 데이터베이스설계 (Page 34)
• • •
-
연산 빈도 테이블
Operation Name/Description Frequency Typep / p q y ypO1 Search ROUTE_SEGMENT by DEP_CITY 50 times/day OLO2 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 OLO4 Create a new CLIENT record 500 times/day OLO5 Make a reservation 20,000 times/day OL, / yO6 Delete a reservation of a past TRIP 70 times/day OLO7 Delete a CLIENT record 1 time/day OLO8 Qualify a CLIENT as FREQUENT TRAVELER 10 times/day OLO8 Qua y a C as QU 0 t es/day OO9 Search the amount of miles earned by CLIENT Once/month BO10 Update the mileage of FREQUENT TRAVELER Once/day BO11 Search current reservation of a given Trip 100 times/day OLO11 Search current reservation of a given Trip 100 times/day OL
on a given date
7장. 데이터베이스설계 (Page 35)
-
유도된 데이터에 대한 결정
ARR_CITYDEP_CITYNUMBER OF SEGMENTS
Operation Name/Description
NUMBER_OF_SEGMENTSAVAILABLE_SEATSRESERVED_SEATS
Operation Name/DescriptionO1 Search ROUTE_SEGMENT by DEP_CITY N N N N YO2 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 YO4 Create a new CLIENT record N N N N NO5 Make a reservation Y Y N N NO6 Delete a reservation of a past TRIP Y Y N N NO7 Delete a CLIENT record N N N N NO8 Qualify a CLIENT as FREQUENT TRAVELER N N N N NO9 Search the amount of miles earned by CLIENT N N N N NO9 Search the amount of miles earned by CLIENT N N N N NO10 Update the mileage of FREQUENT TRAVELER N N N N NO11 Search current reservation of a given Trip N N N N N
on a given date
7장. 데이터베이스설계 (Page 36)
g
-
일반화 구조의 통합
CLIENT, PASSENGER, AGENCY들간의 일반화
일반화 구조를 관계로 변경하는CLIENT 대안들
하나의 개체: Agency에 대한O h d
AGENCYPASSENGEROverhead
두 개의 개체: 관계의 수가 많아져 복잡
FREQUENT_TRAVELER
아져 복잡
세 개의 개체: 가장 일반적
7장. 데이터베이스설계 (Page 37)
-
일반화 구조의 통합
CLIENT, PASSENGER, AGENCY들간의 일반화
CLIENT NameTelephoneCLIENT p
AGENCYPASSENGER IS_A_PASS
IS_AN_AGENCY
FREQUENT_TRAVELER AGENCYPASSENGER
Mileage(0, 1)Status(D, A)
Passenger_No Agency_No Credit
7장. 데이터베이스설계 (Page 38)
-
개체의 분할
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
7장. 데이터베이스설계 (Page 39)
TRIP TRIP
-
개체와 관계의 통합
TRIPROUTE SEGMENT
Operation Name/Description
ROUTE_SEGMENTDAILY_ROUTE_SEGMENTCLIENT
Operation Name/DescriptionO1 Search ROUTE_SEGMENT by DEP_CITY N N Y YO2 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 YO4 Create a new CLIENT record Y N N NO5 Make a reservation Y Y N NO6 Delete a reservation of a past TRIP N Y N NO7 Delete a CLIENT record Y N N NO8 Qualify a CLIENT as FREQUENT TRAVELER Y N N NO9 Search the amount of miles earned by CLIENT Y N N NO9 Search the amount of miles earned by CLIENT Y N N NO10 Update the mileage of FREQUENT TRAVELER Y N N NO11 Search current reservation of a given Trip N Y N N
on a given date
7장. 데이터베이스설계 (Page 40)
g
-
3.2 관계형 모델의 논리적 설계
외부 식별자를 제거 복합 애트리뷰트 및 다중치 애트리뷰트를 제거 복합 애트리뷰트 및 다중치 애트리뷰트를 제거 각 개체를 릴레이션으로 변환 관계를 릴레이션으로 변환 관계를 릴레이션으로 변환
다대다 관계: 새로운 릴레이션 생성 일대일 및 일대다 관계: 기존 릴레이션에 애트리뷰트를추가
7장. 데이터베이스설계 (Page 41)
-
외부 식별자 제거
University Code University CodeUNIVERSITY
University_CodeNameCity
UNIVERSITYUniversity_CodeNameCity
ENROLLS ENROLLS
STUDENTStudent_NoLast_NameAge
STUDENTUniversity_CodeStudent_NoLast_NameAAge Age
7장. 데이터베이스설계 (Page 42)
-
복합 애트리뷰트 제거
Last NamePERSON
Last_NameAgeSex
StreetADDRESS
StreetCityState
PERSONLast_NameAgeSex PERSON
Last_NameAgeSexSex
StreetCityState
SexAddress
7장. 데이터베이스설계 (Page 43)
-
다중치 애트리뷰트 제거
PRODUCTProduct_CodeMaterial_Codes (1, n)DescriptionP iPrice
P d C dPRODUCT
Product_CodeDescriptionPrice
PRODUCT_MATERIAL
Product_CodeMaterial_Code
7장. 데이터베이스설계 (Page 44)
-
개체 변환
EMPLOYEE
Employee-NumberFirst-Name
EMPLOYEE Last-NameSalary
EMPLOYEE(E l N b Fi t N L t N S l )EMPLOYEE(Employee-Number, First-Name, Last-Name, Salary)
7장. 데이터베이스설계 (Page 45)
-
일대일 관계의 변환
WITHCUSTOMER SHIPPING INFO(1, 1) (1, 1)
CUST SHIPPING(Customer No Cust Name Ship No Ship Addr)
WITHCUSTOMER
Customer-No Cust-Name
SHIPPING_INFO
Ship-No Ship-Addr
CUST_SHIPPING(Customer-No, Cust-Name, Ship-No, Ship-Addr)
ProcessCUSTOMER CREDIT-CARD(0, 1) (1, 1)
CUSTOMER(Customer-No Cust-Name)
ProcessCUSTOMER
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)MarriageMALE
Male-SSN Name
FEMALE
Female-SSN Name
(0, 1) (0, 1)
7장. 데이터베이스설계 (Page 46)
MALE(Male-SSN, Name) FEMALE(Female-SSN, Name)MARRIAGE(Male-SSN, Female-SSN)
-
일대다 관계의 변환
Name NameCITY
PopulationSALESMAN
Phone-No
BELONGS_TO
(1, 1)
WRITES
(1, n)
Discount-RateTO
(1, n)
WRITES
(0, 1)
scou t ate
STATENameGovernorPopulation
ORDEROrder-No
Date
CITY(City-Name, State-Name, Population)STATE(State-Name, Governor, Population)
SALESMAN(Name, Phone-No)ORDER(Order-No, Date)
7장. 데이터베이스설계 (Page 47)
Sales-Order(Order-No, Name, Discount-Rate)
-
다대다 관계의 변환
Student-Number
(1 n)
STUDENT Last-NameGPA
ENROLLS
(1, n)
SemesterGrade
Course-Number(1, n)
Grade
COURSECourse-Name
STUDENT(Student-Number, Last-Name, GPA)COURSE(Course-Number, Course-Name)ENROLLS(Student-Number Course-Number Semester Grade)
7장. 데이터베이스설계 (Page 48)
ENROLLS(Student Number, Course Number, Semester, Grade)
-
N-ary 관계의 변환
Product-Code
(1 n)
PRODUCT NameDescription
SUPPLY
(1, n)
QuantityPARTPart-Code (1, n)
(1, n)Supplier-Code
Description
SUPPLIERpp
NameAddress
PRODUCT(Product-Code, Name, Description)PART(Part-Code, Description)SUPPLIER(Supplier-Code, Name, Address)
7장. 데이터베이스설계 (Page 49)
SUPPLY(Product-Code, Part-Code, Supplier-Code, Quantity)
-
사례 연구
PASSENGER (Client-No, Name, Phone, Mileage, Status) AGENCY (Client-No, Name, Phone, Credit-Limit)AGENCY (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)
7장. 데이터베이스설계 (Page 50)
-
4. 데이터베이스의 물리적 설계
물리적설계란?논리적 스키마를 이용하여 효율적인 물리적 데이터베 논리적 스키마를 이용하여 효율적인 물리적 데이터베이스를 구성하는 일
물리적데이터베이스의구조 저장 레코드의 형식, 저장 순서, 접근 경로, 물리적 저장 장치의 할당등에 대한 내역장 장치의 할당등에 대한 내역
참고사항 참고사항 물리적 DB 구조는 세부적인 성능에 영향을 미침 물리적 설계 단계에서 고려할 사항들의 대부분은 특정 물리적 설계 단계에서 고려할 사항들의 대부분은 특정
DBMS에 의해서 해결됨 DBA만이 물리적 DB 구조의 구성에 관여할 수 있음
7장. 데이터베이스설계 (Page 51)
-
접근 방법 설계
접근방법 (Access Method)란?저장 장치에 자료를 저장하거나 저장된 자료를 검색하 저장 장치에 자료를 저장하거나 저장된 자료를 검색하는 방법
저장 구조와 탐색 기법으로 구성
인덱스 레코드 검색시 빠른 접근 보장 주로 B+ 트리로 구현됨자주 검색되는 필드에 인덱스를 생성하면 검색 연산이 자주 검색되는 필드에 인덱스를 생성하면 검색 연산이빨라짐
값의 구간에 의한 접근과 우선 순위에 따른 접근 가능 값의 구간에 의한 접근과 우선 순위에 따른 접근 가능 종류:
유일 인덱스: 키 값의 중복을 허용 않음
7장. 데이터베이스설계 (Page 52)
다중 키 인덱스: 여러 개의 필드로 구성되는 인덱스
-
접근 방법 설계 (계속)
해싱특정한 하나의 값의 연산 결과로 저장 위치를 파악 특정한 하나의 값의 연산 결과로 저장 위치를 파악
값의 구간에 의한 접근은 불가능 단지 그 값에 대한 검색만 가능 단지 그 값에 대한 검색만 가능
Clustering 연관된 레코드를 물리적으로 인접한 공간에 저장
l d d Clustered Index 실제적인 데이터의 저장이 인덱스의 순서에 따름하나의 테이블에는 하나의 Clustered Index만 존재 하나의 테이블에는 하나의 Clustered Index만 존재
7장. 데이터베이스설계 (Page 53)
-
성능 평가 및 개선
물리적 설계 내역에 대하여 성능면에서 검토
성능 평가의 기준 요소 저장 공간 저장 공간
주기억 장치: 공유 메모리 요구 용량 보조 기억 장치 공간 인덱스의 수 및 갱신 연산의 빈도
처리 시간응답 시간 응답 시간
트랜잭션 갱신 시간
7장. 데이터베이스설계 (Page 54)