데이터베이스및설계 Chap 4. 관계데이터베이스 (#1/2) 2013.03.20. 오병우 컴퓨터공학과
관계데이터모델 관계데이터모델 (relational data model) 의탄생 1970 년대 IBM 의 E. F. Codd 에의해제안 Data structure Data manipulation (operation) Data integrity (constrains) 관계데이터모델의특성 릴레이션 (relation) 과수학적인이론에기초 일반사용자는테이블형태로생각 통상적인테이블의개념과는다름 관계데이터모델의직관적인이해에는도움이됨 테이블의열 (column) = 필드 (field) 혹은아이템 (item) 관계데이터모델의애트리뷰트 (attribute) 테이블의행 (row) = 레코드 (record) 관계데이터모델의투플 (tuple) 2
Relations Table A concrete representation of an abstract object (i.e, relation) Easy to use and easy to understand 구체적인 Distinct attribute name Several attributes from the same domain Distinct role name common domain name Attribute 이름은중복되면안됨 별개의 3
관계데이터모델예제 학생 (STUDENT) 테이블 : 릴레이션 학생 (STUDENT) 학번 이름 학년 학과 (Sno) (Sname) (Year) (Dept) 100 나수영 4 컴퓨터 200 이찬수 3 전기 300 정기태 1 컴퓨터 400 송병길 4 컴퓨터 500 박종화 2 산공 4
Formal Relational Terms Relation table Tuple row of a table Attribute column of a table Cardinality number of tuples Degree number of attributes Primary key unique identifier for the table Domain 여러개가모여서될수도있음 a pool of values for an attribute Department of Computer Engineering 5
릴레이션의예제 INTEGER.. DSNO CHAR(10).. NAME INTEGER.. DYEAR CHAR(6).. DEPT 도메인 학생 (STUDENT) 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나수영 4 컴퓨터 200 이찬수 3 전기 300 정기태 1 컴퓨터 400 송병길 4 컴퓨터 500 박종화 2 산공 투플 애트리뷰트 릴레이션스킴 인스턴스 학생 (STUDENT) 릴레이션 6
Domains Atomic ( 가장작은단위 ) The smallest semantic unit of data ( scalar value) Non decomposable ( lose meaning) Domain ( attribute) A named set of scalar values, all of the same type 애트리뷰트가취할수있는값 (value) 들의집합 A pool of values (the actual values appearing in attributes) 1. simple domains simple attributes Domains of scalar values 단순애트리뷰트 : 원자값 2. composite domains composite attributes 애트리뷰트이름과도메인이름은같을수도있음 A combination of simple domains 복합애트리뷰트 : 복합값연, 월, 일 날짜 :< 연, 월, 일 > Attribute 값을의미상하나의단위로취급하면문제없음 값의집합은허용하지않음 의미의 분해할수있는 값의집합이되면 Unnormalized relation ( 비정규화릴레이션 ) 7
Significance of domains Domains contain comparisons (ex) Domains SELECT P.*, SP.* SELECT P.*, SP.* FROM P, SP FROM P, SP WHERE P.P# = SP.P# ; WHERE P.WEIGHT = SP.QTY defined on the same domain make sense defined on different domains do not make sense Prevent users from making silly mistakes inform the user 8
Attribute Attribute name (vs. domain name) 해당도메인의이름을그대로사용할수도있고, 별도의이름을사용할수도있음 임의의도메인이릴레이션에서담당하고있는역할의이름으로지정 (SNAME) CREATE DOMAIN NAME CHAR(20); CREATE TABLE S (S# CHAR(5) NOT NULL, SNAME DOMAIN (NAME) NOT NULL, CITY CHAR(15) NOT NULL, PRIMARY KEY (S#) ); Composite domain A combination of simple domains CREATE DOMAIN MONTH CHAR(2); CREATE DOMAIN DAY CHAR(2); CREATE DOMAIN YEAR CHAR(2); CREATE DOMAIN DATE (MONTH DOMAIN (MONTH), DAY DOMAIN (DAY), YEAR DOMAIN (YEAR)); 9
도메인예제 릴레이션학생 (STUDENT) 의정의 DCL DOMAIN DSNO INTEGER; DCL DOMAIN NAME CHAR(10); DCL DOMAIN DYEAR INTEGER; DCL DOMAIN DEPT CHAR(6); DCL RELATION STUDENT (Sno DOMAIN DSNO, Sname DOMAIN NAME, Year DOMAIN DYEAR, Dept DOMAIN DEPT); 도메인명세가생략된릴레이션 STUDENT 의정의 DCL RELATION STUDENT (Sno Sname Year Dept INTEGER, CHAR(10), INTEGER, CHAR(6)); 10
Relations A relation (R) on domains D 1, D 2,, D n (n = degree) Heading : (relation) schema, scheme, intension A fixed set of attribute domain pairs (AD-pair) {(A 1 :D 1 ), (A 2 :D 2 ),, (A n : D n ) } where A j s must all be distinct» { (Sno:DSNO), (Sname:NAME), (Year:DYEAR), (Dept:DEPT) } Body : (relation) instance, state, extension A time-varying set of tuples, where each tuple : a set of attribute value pairs (AV-pair) {(A 1 :V i1 ), (A 2 :V i2 ),, (A n :V i n) } i = 1,, m (m = cardinality)» { (Sno:100), (Sname: 나수영 ), (Year:4), (Dept: 컴퓨터 ) },» { (Sno:200), (Sname: 이찬수 ), (Year:3), (Dept: 전기 ) },» 11
릴레이션스킴 (Relation Scheme) 릴레이션내포 (relation intension) 또는릴레이션스키마라고도함 릴레이션이름 + 애트리뷰트이름 R(A 1, A 2,..., A n ), A i D i R({A 1, A 2,..., A n }) 애트리뷰트이름의집합 정적성질 시간에무관 릴레이션타입 12
릴레이션인스턴스 (Relation Instance) 릴레이션외연 (relation extension) 이라고도함릴레이션 R 의릴레이션인스턴스 어느한시점에릴레이션 R 이포함하고있는투플들의집합 {< V 1, V 2,..., V n >} V i D i 릴레이션의내용, 상태 {(attr 1 =V 1, attr 2 =V 2,, attr n =V n )} 동적성질 삽입, 삭제, 갱신으로시간에따라변함 릴레이션값 ( 보통릴레이션 ) 13
ⅰ. 수학적정의 릴레이션 (Relation) R 릴레이션 R : 카티션프로덕트 (Cartesian product) 의부분집합 R D 1 D 2... D n 즉 n- 투플 <d 1, d 2,..., d n > 의집합 단 D i : i 번째도메인 d i D i, i = 1,2,...,n n : R의차수 (degree : 일차, 이차, 삼차,..., n차 ) 투플의수 : 카디널리티 (cardinality) ⅱ. 개념적정의 릴레이션스킴 + 릴레이션인스턴스 학번 (Sno) 100 200 과목번호 (Cno) C412 C123 C312 학번 ⅹ 과목번호 (Sno ⅹ Cno) <100,C412> <100,C123> <100,C312> <200,C412> <200,C123> <200,C312> 14
Properties of relations There are no duplicate tuples Relations 중요 Relation body is a mathematical set There is always a primary key Tuples are unordered (top to bottom) Relation body is a mathematical set Attributes are unordered (left to right) Relation heading is defined as a set Attributes : always referenced by name, never by position All attribute values are atomic All underlying domains are simple in turn Relations do not contain repeating groups (normalized relation) 15
ⅰ. 투플의유일성 릴레이션의특성 (1) 릴레이션 = 서로다른투플들의 " 집합 " ⅱ. 투플의무순서성 릴레이션 : 추상적개념 투플들의집합테이블 : 구체적개념 ⅲ. 애트리뷰트의무순서성 릴레이션스킴 애트리뷰트들의 " 집합 " 투플 : <attr:value> 쌍의집합 16
릴레이션의특성 (2) ⅳ. 애트리뷰트의원자성 애트리뷰트값 = 원자값 (atomic value) 논리적으로분해불가능 정규화릴레이션 (normalized relation) 비정규화릴레이션은분해로정규화 동등한의미유지 널값 (null value) = 원자값 unknown, inapplicable 도메인 단순도메인 복합도메인 : 값을하나의단위로취급 17
등록 1 (ENROL1) 학번 (Sno) 릴레이션의 Normalization 과목번호 (Cno) 과목성적 (Cgrade) 성적 (Grade) 100 C413 A E412 200 C123 B 300 400 C312 C324 C413 C312 C324 C413 E412 500 C312 B (a) 비정규릴레이션 A A C A A A B C Degree : 2 등록 (ENROL) 학번 (Sno) 과목번호 (Cno) Degree : 3 성적 (Grade) 100 C413 A 100 E412 A 200 C123 B 300 C312 A 300 C324 C 300 C413 A 400 C312 A 400 C324 A 400 C413 B 400 E412 C 500 C312 B (b) 정규릴레이션 18
Relations Kinds of relations 1. base relations (real relations) A named, autonomous relation (direct part of the database) 2. view (virtual relations) A named, derived relation (purely by its definition) 3. snapshots A named, derived relation Real, not virtual 자주적인 파생된 CREATE SNAPSHOT SC AS SELECT S#, CITY FROM S REFRESH EVERY DAY; 19
Kinds of relations (cont d) 4. query results Relations (cont d) The final output relation resulting from a query No persistent existence within the database 5. intermediate results Results from some relational expression that is nested within some larger No persistent existence within the database 끊임없이지속되는, 영속적인 SELECT DISTINCT S.CITY FROM S WHERE S.S# IN (SELECT SP.S# FROM SP WHERE SP.P# = P2 ); 6. temporary relations A named relation that is automatically destroyed at some appropriate time 20
Relational database Relational Databases A database that is perceived by the user as a collection of time-varying, normalized relations of assorted degrees Correspondences to file system Relation : file Tuple : record (occurrence) Attribute : field (type) Major features of relational files (vs. traditional files) 1. each file contains only one record type 2. the fields have no particular order, left to right 3. the records have no particular order, top to bottom 4. every field is single-valued 5. the records have a unique identifier field or field combination called the primary key ~ 으로여기다 여러가지 관련성 21
관계데이터베이스 관계데이터베이스 데이터베이스를시간에따라그내용 ( 상태 ) 이변할수있는테이블형태로표현 관계데이터베이스스키마 = { 릴레이션스킴 } + 무결성제약조건 관계데이터모델 프로그래밍시스템 Notes 릴레이션 파일 투플 레코드 ( 레코드어커런스 ) 애트리뷰트 필드 ( 필드타입 ) 관계데이터베이스는데이터가꼭물리적테이블형태로저장되는것을의미하지는않음 22
Example 대학 (University) 관계데이터베이스 학생 (STUDENT) 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나수영 4 컴퓨터 200 이찬수 3 전기 300 정기태 1 컴퓨터 400 송병길 4 컴퓨터 500 박종화 2 산공 과목 (COURSE) 과목번호 (Cno) 과목이름 (Cname) 학점 (Credit) 학과 (Dept) C123 프로그래밍 3 컴퓨터 C312 자료구조 3 컴퓨터 C324 화일구조 3 컴퓨터 C413 데이터베이스 3 컴퓨터 E412 반도체 3 전자 담당교수 (PRname) 김성국황수관이규찬이일로홍봉진 23
Example (cont d) 대학 (University) 관계데이터베이스 (cont d) 학번 (Sno) 100 100 200 300 300 300 400 400 400 400 500 과목번호 (Cno) C413 E412 C123 C312 C324 C413 C312 C324 C413 E412 C312 성적 (Grade) A A B A C A A A B C B 중간성적 (Midterm) 90 95 85 90 75 95 90 95 80 65 85 기말성적 (Final) 95 95 80 95 75 90 95 90 85 75 80 등록 (ENROL) 24