2. 데이터모델에의한정보표현 데이타베이스시스템연구실 Database Systems Lab.
이장의주요내용 요구사항의발견과명세 ER 모델을위한주요개념들 개체 (Entities) 애트리뷰트 (Attributes) 관계성 (Relationships) ER 다이어그램을이용한 BigHit Video 대여사업에관한데이터모델링 2
3 데이타베이스설계의단계실세계데이타베이스요구사항들요구사항들의수집과분석개념적설계논리적설계 ( 데이터모델사상 ) 물리적설계개념스키마 (E-R 다이어그램으로표현됨 ) 논리적 ( 개념 ) 스키마 ( 특정 DBS 의데이터모델로표현됨 ) 내부스키마 ( 같은 DBS 에대한 ) 기능적분석응용프로그램설계트랜잭션구현응용프로그램들기능적요구사항들고수준의트랜잭션명세 DBS 에독립적 DBS 에의존적
요구사항의발견과명세 정보시스템개발의 단계 발견 (discovery) 사용자의요구사항들을결정하는과정 응용에대한요구사항발견과정 프로그램이필요한조직의구성원과면담 문서를모으고컴퓨터시스템을분석 문서예 ) BigHit Video 에서고객등록신청서, 대여영수증, 직원근무일지, 가게운영시간표, 비디오구매주문등 최종시스템에포함되어야할객체와동작을기술 사용자들이사용하는어휘결정하여데이터모델에이러한전문용어를적용 사용자와개발자사이의의사소통을쉽게해줌 4
개념적데이터모델 데이터모델정보들의구조를기술하기위해사용되는도구데이타베이스의정보내용을명세화 개념적데이타모델많은사람들이데이터를인식하는방식에대한개념을제공데이타베이스의초기명세서로사용 예 ) 개체 - 관계모델 (entity-relationship model) 개념적스키마 (Conceptual schema) 개념적데이터모델을이용하여모델링한정보의구조와의미사용자와정보시스템설계자들사이의의사소통수단을제공 사용자 : 어떤정보가시스템에저장될지이해할수있음 개발자 : 실제시스템을구축하는데어떤작업이필요한지를이해할수있음 5
개체 - 관계모델링 E-R model : Entity-Relationship model 데이터를개체, 애트리뷰트, 관계성으로기술하는고수준의개념적데이터모델 응용시스템의데이터요구사항명세 데이터의특성명세에초점 데이타베이스스키마를표현하는 ER 다이어그램을가짐 6
ER 모델의개념들 : 개체 개체 (Entity) 단독으로존재하며다른것과구분되는객체실제세계에서의어떠한사물을지칭 예) 실제로존재하는객체 : 사람, 자동차, 집 예 2) 개념적으로존재하는객체 : 회사, 직업, 대학의강좌.. 개체클래스 (Entity Class) 유사한개체들의구조에대한정의같은애트리뷰트들을가진개체들의집합개체타입 (Entity type) 이라고도함 7
개체클래스의예 BigHit Video 의개체클래스에대한이름과설명 개체클래스설명 Customer Videotape Employee PayStatement TimeCard Store Rental PurchaseOrder Supplier 비디오가게고객대여해줄비디오테이프하나이상의가게에서일하는직원직원에게지불한임금에대한기록가게에서직원이일한시간기록 BigHit 비디오의체인점고객이특정기간과가격에따라비디오테이프를대여비디오테이프의구매요청 BigHit 비디오에비디오테이프를공급하는곳 8
ER 모델의개념들 : 애트리뷰트 각개체클래스는특성을나타내는애트리뷰트를가짐 애트리뷰트 (Attribute) 개체를기술하는속성 예 ) EPLOYEE 는 Name, SSN, Address, Sex, BirthDate 애트리뷰트들을가짐 각개체들은그구조를정의한개체클래스의애트리뷰트에대한값을가짐 예 ) 한개의 EPLOYEE 개체는 Name= John Smith, SSN= 23456789, Address= 73, Fondren, Houston, TX, Sex=, BirthDate= 09-JAN-55 애트리뷰트값집합 (Attribute Domain) 각개체에서해당애트리뷰트가가질수있는값들의집합 기본적인데이터형을이용해명시 예 ) integer, string, boolean, float, enumerated type.. 9
ER 모델의개념들 : 애트리뷰트의유형 /2 단순 (simple) vs. 복합 (composite) 단순애트리뷰트 더이상나눌수없는애트리뷰트 원자애트리뷰트라고도함 예 ) EPLOYEE 의 SSN 또는 Sex 복합애트리뷰트 독립적인의미를가지는애트리뷰트들의집합으로구성 address street city state zipcode street_number street_name apartment_number 0
ER 모델의개념들 : 애트리뷰트의유형 2/2 단일값 (single-valued) vs. 다중값 (multi-valued) 단일값애트리뷰트 대부분의애트리뷰트는특정한개체에대해단일값을가짐 예 ) 사람의 Age 다중값애트리뷰트 한개체에서애트리뷰트가여러값을가짐 예 ) Customer 의 otherusers 애트리뷰트, 학생의 College_degree 저장된 (stored) vs. 유도된 (derived) 애트리뷰트유도된애트리뷰트 다른애트리뷰트나개체가가지고있는값으로부터유도된또는계산되어나온애트리뷰트값을가짐 예 ) Person 개체의 Birthday 애트리뷰트로부터유도된 age 애트리뷰트 예 ) Customer 의 numberrentals 애트리뷰트 : 대여된비디오의숫자를세는것으로부터유도됨
애트리뷰트예 BigHit Video 의애트리뷰트에대한이름과설명 다중값 (multi-valued) 복합 (composite) 애트리뷰트 애트리뷰트 타입 값의도메인 설명 title string 제한없음 비디오테이프의제목 lastname string 30 문자 사람의성 firstname string 30 문자 사람의이름 rating string 5 문자 영화의평가등급 ssn string 0 자리숫자 사회보장번호 accountid number 4 바이트정수 고객번호 number number 4 바이트정수 한고객이대여횟수 Rentals otherusers Set 30 문자로된문자열집합 이계정을같이사용하는사람들의이름 dateacquired Date 월, 일, 년 비디오테이프를구한날짜 address Compoiste 30 문자로된두개문자열, 2 문자로된하나의문자열, 9 자리숫자로된하나의문자열 거리, 도시, 주, zip 코드로구성된주소 단일값 (singlevalued) 2
애트리뷰트에대한제약조건 키 (Key) Not Null 애트리뷰트가 null 값을가지면안된다는제약조건 Derived 선언된애트리뷰트는직접저장된것이아니라, 다른어떤정보로부터유도된또는계산되어나온값이라는의미 3
키애트리뷰트 한클래스의각개체들은그키에대하여유일한값을가져야함 예 ) Employees 의 ssn, Department 의 name 대부분의개체클래스들은그클래스의키를구성하는애트리뷰트를하나이상가지고있음 예 ) Customer 의키 : {lastname, firstname, address} 로구성 각개체를유일하게식별하는데사용 4
애트리뷰트가 Null 일경우의의미 각개체는애트리뷰트에대한값을가지지만, 그값은 Null 이될수도있음 Null 값은비어있는필드로표현 Null 일경우의의미 적용되지않음 (not applicable) : 이개체에는애트리뷰트를적용할수없으므로값을가져서는안된다 예 ) 결혼하지않은사람의배우자애트리뷰트 기록되지않음 (missing) : 애트리뷰트값이존재하지만지정되지않았다 예 ) 어떤사람의몸무게애트리뷰트 알수없음 (unknown) : 애트리뷰트값이없거나혹은적용할수없다 예 ) 전화번호 : 전화가없거나전화번호를기록하지않음 5
개체클래스, 애트리뷰트, 제약조건의예 클래스 애트리뷰트 제약조건이나추가설명 Customer accountid key lastname not null firstname address otherusers numberrentals derived Videotape videotapeid key title not null genre PayStatement datepaid hoursworked amountpaid 인터넷과 Java 중심으로데이타베이스시스템이론과응용 6
Customer 클래스의개체 개체는개체클래스의인스턴스이며, 각개체는애트리뷰트값으로구분 7
Videotape 클래스의개체 8
ER 모델의개념들 : 관계성 /2 각개체는다른개체들과관계성 (relationship) 를가짐 예 ) 고객은비디오를대여한다. 관계성타입 (relationship type) 개체타입과개체타입간에성립할수있는관계를총체적으로정의한것 예 ) A customer may rent a video tape 관계성인스턴스 특정개체가다른특정개체와실제적으로관계를가지는것을표현 예 ) Jane Block rents Annie Hall 9
ER 모델의개념들 : 관계성 2/2 각객체는관계성에서특정한역할 (role) 을수행 역할의이름은관계성내의특정개체의기능표현 예 ) 관계성이 결혼 이면, 한사람의역할은 남편, 다른한사람의역할은 아내 관계성은종종그들자신만의애트리뷰트를가짐 예 ) 결혼관계성타입은 weddingdate 애트리뷰트를가짐 예 2) Rents 관계성타입은 datedue, daterented, cost 애트리뷰트를가짐 20
관계성에서제약조건 관계타입은대응되는관계집합에참여하고있는개체들의가능한조합을제한하는제약조건을가짐 2 진관계성제약조건의종류카디널리티비율 (cardinality ratio) 제약조건참여 (participation) 제약조건 카디널리티비율과참여제약조건들을묶어구조적제약조건 (structural constraint) 라고함 : (min, max) 2 진관계성타입두개체클래스를연결 2
카디널리티비율제약조건 한개체가얼마나많은다른개체와관련될수있는지, 그리고역으로관련될수있는지에대한제약관계성의개수를규정관계성의각역할에적용카디널리티비율제약조건의타입들일대일 (one-to-one) 각역할에서하나의개체는기껏해야하나의관계성을가짐 최대한개의관계된객체를가짐일대다 (one-to-many) 하나의역할을담당하는한개체는여러관계성을가지지만, 상편역할을담당하는개체는기껏해야한개의관계성을가짐다대일 (many-to-one) 일대다와같지만반대의경우다대다 (many-to-any) 각역할에서하나의개체는여러관계성을가짐 22
카디널리티비율예제 Customer (accountid) Rents Videotape (videotapeid) Customer (accountid) Previous lyrented Videotape (videotapeid) 0 02 03 04 0 23 45 90987 99787 0 02 03 04 0 23 45 90987 99787 그림 2-2 일대다관계성타입 Rents 를통해관련된개체들 그림 2-3 다대다관계성타입 PreviouslyRented 를통해관련된개체들 23
참여제약조건 한개체의존재가관계성타입을통해연관되어있는다른개체에의존하는지의여부를명시 최소카디널리티제약조건이라고도함 참여제약조건의유형전체참여 (total participation) 하나또는그이상 예 ) 모든 Video는반드시 LocatedIn에의해서한 Store와연관되어야함 부분참여 (partial participation) 선택적참여 예 ) Employee의부분집합은 managers를통해 Store와연관되어야함 24
더높은차수의관계성 회사는다중관계또는고차원관계를가질수있음 관계성타입의차수 (degree) 관계성타입의한인스턴스에의해연결된개체클래스의개수 예 ) 삼원 (ternary) 관계성 한비디오가게가어떤공급자를통해비디오테이프를구입 상점 (storedid) PurchasedFrom 비디오 (videoid) 3 4 2 3 548 604 45 3087 3723 공급자 (supplierid) Acme px Xcel 25
ER 다이어그램 ER 모델을그래프방식으로표현한것 개체클래스 : 직사각형 ( ) 애트리뷰트 : 타원 ( ) 관계성 : 다이아몬드와선 (, ) 어떤특정인스턴스를기술하지않음 주요예제 BigHit Video 대여사업에관한데이터모델링 ER 모델의에러발견과수정을통한데이터모델링절차를다룸 26
ER 다이어그램으로표현한예 /2 Customer 와 Videotape 클래스, Rents 관계성타입 애트리뷰트 관계성타입 키애트리뷰트 lastname firstname accountid videotapeid title genre balance otherusers Customer Rents Videotape 개체클래스 다중값애트리뷰트 유도애트리뷰트 numberrentals street city address state datedue zipcode daterente d cost 복합애트리뷰트 카디널리티제약조건 date Acquired length rating 27
ER 다이어그램으로표현한예 2/2 데이터사전 (Data dictionary) 클래스와타입들의설명, 애트리뷰트들에대한제약조건명세 표 2., 표 2.2, 표 2.3 (TP 8page, TP2page, TP 6page) ER 다이어그램에서표현하지않고텍스트형태로저장 카디널리티기호의위치 기호의의미를잘이해하기위해다이어그램을읽어가며문장을생성 예 ) 일대다관계성타입의경우 왼쪽 오른쪽 한고객이여러개의비디오테이프를대여할수있다 오른쪽 왼쪽 한비디오테이프는한고객에의해서대여될수있다 28
비디오대여모델링예 : 대여를관계타입으로 비디오대여를표현하는방법. 대여를관계타입으로모델링 2. 대여를개체클래스로모델링 대여를관계타입으로모델링 고객과비디오의관계는고객이비디오를대여할때생성됨비디오가반납될때, 이관계는제거됨 Customer Rents Video datedue daterented cost 29
비디오대여모델링예 : 대여를개체클래스로 /2 대여를개체클래스로모델링 Customer Has Rental Has Video datedue cost Has 관계타입 관계타입의의미가명확할때사용 본모델링의문제점 daterented 대여개체가가진속성값만을기반으로대여개체를구별하지못함 예 ) 고객은동시에두개의비디오를대여할수있음 ( 같은대여일자, 같은비용, 같은반납일자 ) 해결방법 : 각각이관계되어있는비디오에따라서두대여를구별 30
비디오대여모델링예 : 대여를개체클래스로 2/2 약한개체클래스 자신의키애트리뷰트가없는개체클래스 예 ) Rental 약한개체클래스 도형에서이중선으로되어있음 식별관계타입 관계타입 Has를이중선으로표현대여는비디오와의관계에의해식별됨을의미 항상대 - 임 Rental 개체의키 : VideoId 약한개체클래스 소유자개체클래스 Customer Has Rental Has Video datedue cost 식별관계클래스 daterented 3
관계성타입에서역할 역할은두개체클래스가하나이상의관계타입과연결되거나, 하나의관계타입이개체클래스자신과연결된상황에서중요 한사람은 명또는 2 명의부모의자식일수있다. 한사람은 0 명또는그이상의자식의부모일수있다. 한사람은남편의처일수있다. 한사람은처의남편일수있다. 역할이름 그림 2-6 IsarriedTo 와 IsChildOf 관계성타입 wife child 대체관계성타입이름 Is arried To husband Person ssn 2 parent Is Child Of IsParentOf 최소 / 최대카디널리티제약 32
ER 다이어그램에서사용되는기호 33
BigHit Video 에위한 ER 모델 id Supplier Has PurchaseOrder Orders Customer has Rental Has Videotape Has PreviousRental Has daterented Located In worker WorksIn Employee Store Has manag er anag es Has TimeCard Has PayStatement date starttime endtime datepaid amount 34
대여의과거정보를기록하기 /2 BigHit 이사업에관한과거정보를기록하기를원할경우 가장자주대여되는비디오는무엇인가? 특정고객이대여하는비디오타입의경향이어떤것인가? 개체클래스 PreviousRental : 과거의고객과비디오의대여사실을기록 Customer Has PreviousRental Has Videotape datereturned cost daterented 구별자 ( 부분키 ) 35
대여의과거정보를기록하기 2/2 PreviousRental 약한개체클래스관련된비디오는 PreviousRental 을유일하게식별하지못함구별자 (discriminator) 또는부분키 이전대여를식별하는키에다른속성을추가 점선밑줄로표현 PreviousRental 개체의키 : {videoid, daterented} 발생할수있는문제점들비디오는같은날두번대여될수없음 해결방법 : daterented 를 datatimerented 로변경 ER 도형에서는비디오테이프가반납된후, Rental 이 PreviousRental 로변환을표현할수없음 36
직원역할과카디널리티 TP 34 page 에서 직원이관리자나종업원이될수있음직원은하나이상의상점에서종업원으로일할수있음직원은오직하나의상점의관리자만될수있음발생할수있는문제점사업상한사람이하나이상의상점을관리할경우상점관리자가해고되어일정기간동안관리자가없을경우 worker WorksIn Employee Store manager anages 37
직원역할과카디널리티 : 해결방안 상점관리자가없거나, 직원이하나이상의상점을관리할수있도록 anages 관계타입의카디널리티를변경 worker WorksIn Employee Store manager anages 38
구매주문 PurchaseOrder 비디오공급자로부터비디오를주문하는것을나타냄 개체클래스 PurchaseOrder 설계방법들 구매주문서는단일공급자와적어도하나의비디오테이프를가질것을요구함 방법 : 약한클래스로정의 다른개체들과관계되지않으면존재할수없다 키 : date, supplierid, item 들의조합으로구성 방법 2 : 강한개체클래스로정의 인공적인키인 id 를생성 더간단한방법임 id <PurchaseOrder 를강한개체로정의할때 > Supplier Has PurchaseOrder Orders Videotape 39
구매주문의문제점 /2 전형적인구매주문서의내용 구매될품목에대한목록 품목에대한식별번호 ( 카탈로그번호 ) 수량 문제점 예 ) 비디오테이프 Lady and the Tramp 를 25 개주문을위해이전그림의다이어그램을사용할경우, 25 개의개체가생성되는것을요구 하나의비디오테이프에대해 25 개를주문한것이라기보다는 25 개비디오품목들에대한주문이됨. 이전 ER 다이어그램의 Videotape 개체클래스의의미가혼동되어발생
구매주문의문제점해결방법 2/2 ovie 클래스추가 : 한종류의비디오작품을표현 Videotape : 영화의사본을의미 PurchaseOrderDetail : 단일영화의몇개수량의구매를표현 Id date linenumber PurchaseOrder Has PurchaseOrder Detail quantity unitcost Buys From movieid Orders videoid date Acquired Supplier title ovie Is Copy Of Videotape name address genre length rating 4
직원, 근무시간카드, 지불명세서 -/2 PayStatement 약한개체클래스 많은직원들이같은날에급료를받기때문에, 관련된직원에의해식별되지만, 그직원에대해유일하지않음 키 : { 직원의 ssn, datepaid} Employee Has TimeCard Has Store date starttime endtime Has PayStatement 식별자 식별자 datepaid amount 42
직원, 근무시간카드, 지불명세서 - 2/2 TimeCard 약한개체클래스 한명의직원이한상점에서일한날짜와시작시간, 끝나는시간을기록키 : { 직원의 ssn, date, starttime} 한직원이같은날에서로다른상점에서일할수있기때문 43