3. 논리적설계 - kocwcontents.kocw.net/.../2014/yeungnam/chohaengrae1/1.pdf · 2016. 9. 9. ·...

23
3. 논리적 설계 논리적 설계의 목적 개념적 스키마 (ER 모델) DBMS논리적 스키마로 변환 개념적 스키마 (ER 모델) DBMS논리적 스키마로 변환 개념적 설계와 논리적 설계의 차이 개념적 설계 - 스키마의 표현력과 완전성을 추구 논리적 설계 - 논리적 모델이 제공하는 자료 구조와 제약사항을 효 율적으로 이용 논리적 설계의 접근 방향 ER 다이아그램을 단순한 ER 다이아그램으로 변환 ER 다이아그램을 단순한 ER 다이아그램으로 변환 단순한 ER 다이아그램을 DBMS의 논리적인 모델로 변형 7. 데이터베이스 설계 (Page 32)

Upload: others

Post on 17-Feb-2021

0 views

Category:

Documents


0 download

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)