Data Modeling Database 활용을 위한 기초 이론 Database의 개요 Data Modeling Database programming의 원리 Data Modeling
개요 강의제목 목표 목차 Data Modeling Database 구축을 위해 요구사항분석, 개념적설계 (Conceptual Design), 논리적 설계 (Logical Design), 물리적설계 (Physical Design), 유저인터페이스설계 (User Interface Design), 시스템 구현 과정을 학습 목차 Data Model의 정의 및 종류 Entity Relationship (ER) Model ER 스키마 작성 Keys Relational Model ER 스키마를 Relational 스키마로 변환 규칙 정규화 원리 Object-Oriented Model Database 설계 절차 요구사항 분석서 예제 포함
데이터 모델 (Data Model) * 실세계의 반영 Frame size wheel size gear 정의 데이터와 그들간의 관계, 서로의 의미, 제약조건 등을 어떻게 나타낼 것인가에 대한 개념적인(논리적인) 틀. “real world” (실세계)의 묘사에 유용하게 쓰임 user, 시스템분석, DBA등의 의사소통에 중요한 도구로 이용되고 있음 주의: 구현 모델이 아님 ER 모델을 기반으로 하는 DBMS는 없음 Data Model의 종류 Entity Relationship Model (개체관계형 모델) Relational Model (관계형 모델) Object-Oriented Model (객체지향 모델) 기타 Hierarchical Model (계층적 모델) Network Model (네트워크 모델) 실세계를 반영한 데이터모델은 요구사항을 반영한 ‘데이터’와 ‘관계(의미)’를 표현한 것임 실세계 (자전거)를 컴퓨터에서 표현하고자 할 때, 요구사항 (DB구축 목적)과 관련된 부분을 identify하는 것이 중요함 * 실세계의 반영 Frame size wheel size gear material . . . 오늘날 거의 사용되지 않는 모델임
Entity-Relationship Model (개체관계형 모델) 정의 모든 것을 Entity (개체)와 그들 간의 relationship (관계)으로만 표현 Entity: 실세계에 실제로 또는 개념적으로 존재하는 것을 의미하며, 그것의 특성을 설명하는 속성(attribute)들을 가짐 Relationship: Entity들이 상호 연결된 관계 크기 재질 Wheel ‘Wheel’ 개체와 ‘Frame’개체와의 관계(Relationship)을 ‘connect’로 표현 connect 재질 Frame 크기
Relational Model (관계형모델) 정의 모든 데이터는 relation(table)에 의해 표현 보통 n-ary Relation을 의미하며, 이는 결국 Set (집합)임 예를 들어, 어떤 relation이 학생성명, 과목명, 시험점수 라는 attribute (속성)을 가질 때, 아래와 같은 relation을 만들 수 있음. {<홍길동, 수학, 98>, <김철수, 수학, 90>, <홍길동, 영어, 88>, <김철수, 영어, 95>} 여기서, ‘홍길동’은 ‘수학’ 과목에서 98점을 받았는데, 이는 일종의 relation을 가지는 것임 데이터 중복성 방지를 위해 relation normalization (정규화)을 수행 용어 Relation (릴레이션): table Tuple (튜플): record, row Attribute (속성): column
Object-Oriented Model (객체지향 모델) 정의 유일한 식별, 내포된 성질, 그리고 다른 객체나 자기 자신과 상호 작용(관계)을 할 수 있는 실세계 개체를 추상적 으로 표현 Objects = Attribute + action(behavior) Entity와 유사한 개념이나 능동성 (즉, behavior)을 포함 Attribute: object의 state를 표현 Action: message 에 답하는 procedure Attribute 객체의 상태 표현 하나의 데이터 타입 Object의 상태 한 시점에서 객체의 attribute값들의 집합 attribute변경하기 위해서는 그 객체에게 message를 보냄 Method attribute값 변경 및 검색 Object의 behavior표현 Object의 상태값 접근 수신 Object, method 이름, 입력매개변수를 지정 size Gears material Method Shift Repair Update Move
Entity-Relationship Model (개체관계형 모델) 예) 특정의 사람, 특정의 기업, 특정의 사건 등 Entity Set 공통 속성을 가지는 동일한 타입의 entity 집합 예) set of all persons, companies, trees, holidays 결국, 하나의 데이터베이스는 여러 타입의 entity 집합과 entity 집합 간의 relationship 으로 표현 Attributes Entity set 내부의 모든 원소 (entity)들이 공통으로 가지는 attribute를 가짐 예) 사람 = (‘주민등록번호’, ‘이름’, ‘주소’, ‘전화번호’) 예) customer = (customer-id, customer-name, customer-street, customer-city) 예) loan = (loan-number, amount) Attribute types Simple and Composite attributes. Single-valued and Multi-valued attributes 예) multi-valued attribute: phone-numbers Derived attributes: 다른 attribute로부터 계산 예) 나이 : 생년월일 attribute로부터 계산
Entity-Relationship Model (개체관계형 모델) Entity Set의 예 Relationship Set R elationship set은 두 개 이상의 entity간의 mathematical relation {(e1, e2, … en) | e1 E1, e2 E2, …, en En} 여기서, (e1, e2, …, en) 은 하나의 relationship 원 소이며, 여러 entity간의 연관 관계를 의미 Attribute를 가질 수 있음 customer-id customer- customer- customer- loan- amount name street city number (Hayes, L15) depositor Depositor라는 relationship은 ‘access-date’이라는 attribute를 가짐 1-to-Many 관계
Entity-Relationship Model (개체관계형 모델) Mapping Cardinalities (대응관계) Relationship set를 통해서 연관된 두 개 (또는 두 개 이상) entity들이 Express the number of entities to which another entity can be associated via a relationship set. 세가지 타입이 존재 1-to-1 1-to-N (Many) N (Many)-to-M (Many) Many-to-Many 관계 Many-to-1 관계 1-to-1 관계 1-to-Many 관계
ER Schema에 사용되는 기호 Entity Set에 존재하는 모든 entity가 Relationship R에 연관되는 경우를 의미 대응관계를 표현하는 방법 3가지 있음. Generalization 관계에서 상위 entity set의 모든 entity가 하위 entity에 모든 참가하면 “Total”, 참가 중복이 없으면 “Disjoint”
Entity-Relationship Model (개체관계형 모델) 점선밑줄은 Weak Entity Set의 discriminator (구별자)를 표시함 Weak Entity Set를 표시함 Relationship Set에 존재하는 attribute Derived attribute를 표시함 Multi-valued attribute를 표시함 밑줄표시는 Key를 표시함 ‘employee’ Entity Set의 entity들이 ‘works-for’ 관계를 맺을 때role (역할)을 명시적으로 표시함
Entity-Relationship Model (개체관계형 모델) Weak Entity Set 이 Entity Set의 존재가 이와 relationship을 가지고 있는 Entity Set의 존재에 의 해 결정되는 것으로서, primary key를 가지지 않음. Relationship은 total participation, 1-to-Many relationship을 가짐 Primary key를 가지지 않지만, 연관되는 entity가 결정되면 알 수 있는 entity를 알 수 있도록 해주는 attribute (또는 attribute 집합)을 discriminator (또는 partial key)라고 함. 예) 고유강좌 – 개설강좌 Discriminator를 표시함 Payment 관계형 테이블은 primary key로서 (loan_number, payment_number)를 가져야 함 Total participation을 의미함. 즉 ‘Payment’ Entity set에 존재하는 모든 entity들이 ‘loan’ Entity Set과 관계를 맺음 Weak Entity Set를 표시함
Entity-Relationship Model (개체관계형 모델) Specialization (또는 Generalization) 특정 entity set의 개념보다 세부화된 entity set를 정의할 수 있음 Attribute 계승: 상위 entity set의 모든 attribute들은 하위 entity set의 attribute로 계승 됨 Generalization Specialization 유형 Disjoint vs. Overlapping 상위 entity set에 존재하는 entity들이 하위 entity set에 중복 안되는지, 또는 되는지를 구별함 Total vs. Partial participation 상위 entity set에 존재하는 entity들이 하위 entity set에 모두 존재하는지, 또는 안 되는 것이 존재하는지를 구별
Entity-Relationship Model (개체관계형 모델) Keys: 하나의 entity를 식별할 수 있는 attribute (또는 attribute 집합)를 의미 종류 Superkey (수퍼키) entity set에서 하나의 entity를 유일하게 지정할 수 있는 attribute또는 attribute set 예) 고객 entity set의 ‘주민등록번호’, 학생 entity set의 {학과, 이름, 학번} Candidate key (후보키) 부분집합을 가지는 않는 superkey를 의미 예) 고객 entity set의 ‘주민등록번호’, 학생 entity set의 {학번} Primary key (주키) candidate key중 주된 key로 사용되도록 선택된 것(designer가 선택) Composite key attribute가 복합되어 이루어진 키 예) Foreign Key (외래키) 필드값이 pointer의 역할 예) foreign key “교수번호”가 pointer 교수테이블에 “102”가 반드시 존재해야 No dangling reference ! 지도 교수 학생
데이터베이스 설계 절차 산출물 요구사항분석보고서 Entity Relationship (ER) Schema 구현 목적에 따라 구체적인 요구사항 작성 기능적 측면, 사용시나리오 포함 Entity Relationship (ER) Schema 요구사항을 토대로 entity 및 Entity간의 관계를 정의 Relational Schema ER schema를 바탕으로 변환규칙에 따라 Relation schema의 작성 정규화 (normalization)을 통한 데이터 중복성 최소화 Physical Schema Indexing, Tuning, Transaction 설계 Application System SQL언어와 이를 담는 Host language를 이용하여 코딩 Host language: C, Java, Perl, PHP, JSP, ASP 등
요구사항 분석 보고서 예제 (1/3) 소프트웨어시스템실험 보고서 제목: 소규모 조직에서의 자료,지식 관리를 위한 지식 관리 시스템(Knowledge Management System) (1) 요구사항 분석서 담당교수: 김한준 담당조교: 김민경 소속학과: 전자전기컴퓨터공학부 제 출 자: 김철수 (2004xxxxx) 이기수 (2004xxxxx) 제출일자: 2007년 10월 ??일 제목 국문명: 소규모 조직에서의 자료, 지식 관리를 위한 지식 관 리 시스템 영문명: Knowledge Management System 팀 구성 김철수 (학번: 2000xxxxx) 연락처: kcs@uos.ac.kr, 011-111-2222 이기수 (학번: 2000xxxxx) 연락처: lks@uos.ac.kr 011-333-2222)
요구사항 분석 보고서 예제 (2/3) 개요 요구사항 개발 시스템의 목적 개발 시스템의 실용적 가치 <본 시스템이 사용자에게 주는 편리성, 의미성, 실용성 등을 기술함> 예)본 시스템은 소규모 조직에서 발생(또는 수집)한 자료 및 지식을 체계적으로 관리하여 그 자료, 지식을 공유함으 로써 업무의 효율을 높힐 수 있다. … (중략) … 경제적 가치 <본 시스템을 상품화할 수 있는 부분과 그것의 상품적 가치 를 기술함> 차별성 및 독창성 <유사 시스템과 비교하여 우수/차별성 등을 기술함> <유사 시스템에 대한 survey가 필요하다면 삽입하기 바람> 요구사항 <사용자로부터의 요구사항, 시스템 또는 데이터에 대한 제 한사항, 사용자 환경의 특징, 시스템의 특징 등을 기술> <이 내용으로부터 ER스키마를 작성하기 위한 entity, relationship을 도출할 것이기 때문에, “정확하고 정제 된 용어를 사용하여 기술하며, 한 항목에는 단일 내용을 기술함> (예제) 고객은 100명 인원 안팎의 학교 내부의 과(Dept.) 또는 소규모의 벤처, 또는 일정한 스터디를 위해 모여있는 커뮤니티이다. 고객은 그들 자신의 자료를 데이터베이스로 체계적으로 관리하기를 원 하며 100명 안팎의 소규모 인원이기 때문에 최대 동시 접속자(Current User 또는 Client)는 10명 안팎, 평균 동시 접속자는 3명정도이며, 페이 지를 요청하고 데이터베이스와 동시에 통신하고 있는 활성 사용자(Activ e User 또는 Client)는 최대 3명이다. 사용자들은 관리자가 직접 자료의 분류 형태를 결정할 수 있기를 원하 고 축적되어 있는 자료에 대한 원활한 검색을 위하여 특화된 검색엔진을 필요로 한다. 예를 들어, 대부분의 정규식(Regular Expression) 이나 문 자화된(And,Or,그리고,또는 등의 단어들) 구분자들을 처리 할 수 있는 형태이다. 관리자만의 Admin Tool을 일정한 형태로 만들어주기를 원 하며 보통 수준이상의 보안을 요구한다. 한 번에 업로드될 수 있는 자료의 최대 수는 5개까지이며, 사용자 정보 테이블은 따로 구성되어 데이터 정보 테이블과 관련을 맺고 (예를 들어 Cascading 이 가능하도록) 있기를 바란다. 데이터는 하나의 테이블에서 관리되며 데이터에 관한 추가적인 부연 설 명이라든가, 검색어들은 관련을 맺고 있는 테이블에서 따로 관리된다. 또한 사용자들의 정보 또한 하나의 테이블에서 관리되며 현재 접속중인 사용자들에 대한 파악 및 사용자들의 접속 정보도 관리하여야 한다. … (중략) …
요구사항 분석 보고서 예제 (3/3) 기능 (예제) <요구사항에 입각해서 입력/검색/수정 등에 해당하는 기능을 “계층적으로” 완벽히 망라> (예제) 자료 검색기능: 접속자가 원하는 정보를 빨리 찾을 수 있도록 데이터를 카테고리(분류) 별로 분류하고 그에 따라 검색할 수 있게 하며, 기본적인 검색 키워 드, 정규식을 지원하며 데이터를 최대한 빠르게 검 색할 수 있게 배려한다. 사용자 정보 검색 지식 정보 검색 … 관리자 기능: 게시물, 분류 생성, 삭제, 그리고 사용 자 정보에 관한 열람권을 보장함으로써 사용자들에 대한 권한 관리, 그리고 올바르지 못한 자료, 분류가 잘못된 자료들을 찾아 수정하고 사용자들에게 질 높 은 자료를 볼 수 있는 권리를 보장한다. 업로드 기능: 사용자들이 가지고 있는 높은 퀄리티 의 자료들을 KMS를 통해 공유함으로써 진정한 의미 의 정보의 공유를 실현하게 한다. 현재 사용자(접속자) 리스팅: 현재 접속하고 있는 인 원을 출력하고 또한 그 인원들에 대한 접속 기록을 보관함으로써 사용자들의 사용 실태를 파악할 수 있 다. 자료 입력기능: … (중략) … 사용 시나리오 <사용자 입장에서 본 시스템을 사용하는 프로세스를 상세히 기술> <필요하다면 그래픽유저인터페이스 GUI 화면을 작성, 삽입 하기를 권고>
Conceptual Design (개념적 설계) 목표 데이터베이스의 구조, 의미,관계성, 그리고 제약조건을 기술 => Entity Relationship (ER) 스키마의 작성 ER Schema (Diagram)의 구성 Entity : 현실세계의 객체 → “사각형”으로 표시 Relationship : 둘 이상 entity간의 관계 → “마름모”로 표시 Attribute: entity, relationship의 성질 → “작은 원”으로 표시 ER Schema의 예 학사DB를 위한 ER스키마 Banking DB를 위한 ER 스키마
논리적 설계 (Logical Design) 목표 Relational Table을 정의 설계 방법 개념적 설계 단계에서 도출된 ER 스키마를 바탕으로 relational schema를 생성함 (변환 규칙을 숙지) 정규화 (Normalization) 이론에 따라, 데이터 중복성을 최소화하는 작업을 수행 3rd normal form (3차 정규형), BCNF (Boyce Codd Normal Form) 형태인지 를 검증하여, 오류가 있을 시는 테이블 분할 원칙에 따라 분할 Normal Form에 대한 기초 설명 BCNF A relation schema R 이 있을 때, attribute 집합 (, )에서 가 를 결정할 수 있을 때, 가 R의 superkey가 되는 형태 3NF (3rd normal form, 3차 정규형) A relation schema R 이 있을 때, attribute 집합 (, )에서 가 를 결정할 수 있을 때, 가 R의 superkey가 되는 형태가 되거나, 또는, – 에 존재하는 attribute A가 R의 candidate key가 되는 형태 BCNF가 3NF보다 제약이 강하며, 데이터 중복성이 적음 많은 경우, ER 스키마를 변환규칙에 따라 변환한 relational schema는 BCNF (또는 3NF) 형태가 되지만, 그렇지 않은 경우도 있어 검증이 필요함.
ER 다이어그램을 관계형 테이블로 변환 (1/5) Entity 변환 각 entity는 relation(관계형 table) 로 변환 entity의 attribute와 primary key 는 관계형 table의 attribute와 primary key가 됨 Relationship 변환: 1대1 관계 하나의 relation으로 압축 두 entity가 같은 primary를 가지는 경 우 관계성을 흡수한 두 개의 relation 생성 두 entity가 서로 다른 primary key를 가지는 경우 고객 물품탁송 요구 1 고객번호 이름 탁송주소 고객물품(고객번호, 고객이름, 탁송주소) 회사원 주민등록번호 이름 봉급 회사원(주민등록번호, 이름, 봉급)
ER 다이어그램을 관계형 테이블로 변환 (2/5) Relationship 변환: 1대1 관계 하나의 relation으로 압축 두 entity가 같은 primary를 가지는 경 우 관계성을 흡수한 두 개의 relation 생성 두 entity가 서로 다른 primary key를 가지는 경우 Relationship 변환: 1대N 관계 (1)쪽의 entity의 primary key인 E1 의 primary key가 (N)쪽 entity인 E2 의 한 attribute (또는 attribute의 셀) 으로 첨가되고, 그 attribute가 foreign key가 됨 남자 여자 결혼 1 남주민등록번호 이름 여주민등록번호 남자(남주민등록번호, 이름, 여주민등록번호) 여자(여주민등록번호, 이름) 도시 도 소속 N 1 도명 도지사 인구 도시(도시명, 인구, 도명) 도(도명, 도지사, 인구) 도시명 인구
ER 다이어그램을 관계형 테이블로 변환 (3/5) Relationship 변환: N대M 관계 별도의 relation을 생성하며, 한 entity의 primary key와 상대편 entity의 primary key로 구성되는 복합 key를 형성 Relationship의 변환: N-ary 관계성 N대M 관계성에서와 같은 변환 방법 Relationship 에 참여한 N개 entity의 모 든 key를 상속받아 새로운 relation의 primary key로 사용 학생 과목 등록 M N 과목번호 과목명 학번 이름 총평점 학점 학생(학번, 이름, 총평점) 과목(과목번호, 과목명) 등록(학번, 과목번호, 학점) 제품코드 제품명 설명 제품 부품코드 설명 부품 공급 공급량 공급자 공급자 코드 공급자명 주소 전화번호 제품(제품코드, 제품명, 설명) 부품(부품코드, 설명) 공급자(공급자코드, 공급자명, 주소, 전화번호) 공급(제품코드, 부품코드, 공급자코드, 공급량)
ER 다이어그램을 관계형 테이블로 변환 (4/5) Relationship 변환: 순환관계성 두 attribute를 포함하는 새로운 relation을 생성 Composite Attribute의 변환 복합 구조를 구성하는 최하위 attribute 를 상위개념의 attribute와 이름을 결합 예) 주소 => (주소.도, 주소.구, 주소.동) Multi-valued Attribute의 변환 Entity E의 multi-valued attribute M을 별도의 E-M 관계형 테이블로 구성 회사원 주소 도 구 동 회사원 관리 이름 생년월일 be_supervised supervise N 1 회사원(이름, 생년월일, 관리자이름) 사원번호 전화번호 회사원-전화번호 (사원번호, 전화번호) 회사원
ER 다이어그램을 관계형 테이블로 변환 (5/5) Generalization의 변환 (방법1) 상위수준의 entity에 대한 relational table을 생 성 하위수준의 각 entity에 대한 relational table을 생성하고, 그것의 상위수준 entity의 primary key를 취함 Relational Schema Person (주민번호, 성명, 주소) Customer (주민번호, 신용등급) Employee (주민번호, 연봉) Generalization의 변환 (방법2) 상위수준의 entity에 대한 relational table을 생 성 또는 생성 안함 ‘partial participation’의 경우 상위수준 entity set의 어떤 entity들은 하위 entity set에 속하지 않으므로, 반드시 상위수준의 entity set에 대한 관계형 테이블 을 생성함 하위수준의 각 entity에 대한 relational table을 생성하고, 그것의 상위수준 entity의 모든 attribute를 취함 Relational Schema Person (주민번호, 성명, 주소) Customer (주민번호, 성명, 주소, 신용등급) Employee (주민번호, 성명, 주소, 연봉) 주민번호 Person 성명 단점: Customer 또는 employee 개체를 접근하기 위해서 두 개의 테이블을 참조해야 함 주소 주민번호 Person Customer Employee ISA 성명 주소 연봉 신용등급 단점: 상위수준의 attribute를 그대로 계승하기 때문에 데이터중복이 발생 ISA Customer Employee 신용등급 연봉