database relational model

81
Database Relational Model SPARCS’11 undead

Upload: gretel

Post on 06-Feb-2016

74 views

Category:

Documents


0 download

DESCRIPTION

Database Relational Model. SPARCS’11 undead. What is Database?. Data 정보를 작성하기 위해 필요한 자료 Database 논리적으로 연관된 하나 이상의 자료의 모음 데이터를 잘 정리해두고 , 필요할 때 정리된 정보를 취득하기 위함 DMBS (Database Management System) 데이터를 효과적으로 이용할 수 있도록 정리 / 보관하기 위한 소프트웨어 데이터의 추가 , 변경 , 삭제 , 검색 등의 기능을 집대성한 소프트웨어 패키지 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Database Relational Model

DatabaseRelational Model

SPARCS’11 undead

Page 2: Database Relational Model

SPARCS'11 undead 2

What is Database?• Data

• 정보를 작성하기 위해 필요한 자료• Database

• 논리적으로 연관된 하나 이상의 자료의 모음• 데이터를 잘 정리해두고 , 필요할 때 정리된 정보를 취득하기 위함

• DMBS (Database Management System)• 데이터를 효과적으로 이용할 수 있도록 정리 / 보관하기 위한 소프트웨어• 데이터의 추가 , 변경 , 삭제 , 검색 등의 기능을 집대성한 소프트웨어 패키지• MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Microsoft Access, Oracle 등• 다수의 사용자 또는 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있게 해주는 역할

2013-04-09

Page 3: Database Relational Model

SPARCS'11 undead 3

DMBS Functions• Definition ( 정의 )

• 데이터에 대한 형식 , 구조 , 제약조건들을 명세하는 기능• Construction ( 구축 )

• DBMS 가 관리하는 기억장치에 데이터를 저장하는 기능• Manipulation ( 조작 )

• 특정한 데이터를 검색하기 위한 쿼리 , 데이터베이스의 갱신 , 보고서 생성 기능 등• Sharing ( 공유 )

• 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능• Protection ( 보호 )

• 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호• Maintenance ( 유지보수 )

• 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능2013-04-09

Page 4: Database Relational Model

SPARCS'11 undead 4

Database Models• Hierarchical database model• Network model• Relational model• Entity-relationship model• Enhanced entity-relationship model• Object model• Document model• Entity-attribute-value model• Star schema

a

2013-04-09

Page 5: Database Relational Model

SPARCS'11 undead 5

Database Models• Hierarchical database model• Network model• Relational model• Entity-relationship model• Enhanced entity-relationship model• Object model• Document model• Entity-attribute-value model• Star schema

다 필요 없고 일단 Relational model 부터 공부합시다2013-04-09

Page 6: Database Relational Model

SPARCS'11 undead 6

Relational Model• Entity

• 실체• 실세계에서 개별적으로 인식될 수 있는 것• 데이터베이스에 저장되는 데이터의 대상

• Attribute• 어떤 entity 에 대해서 관심을 가질만한 가치가 있는 속성

• Relation• 둘 이상의 entity 들 간의 관계

2013-04-09

Page 7: Database Relational Model

SPARCS'11 undead 7

Relational Model

2013-04-09

Page 8: Database Relational Model

SPARCS'11 undead 8

Relational Model한 번 설계해 봅시다 .

2013-04-09

Page 9: Database Relational Model

SPARCS'11 undead 9

Designing KAIST Student DB

2013-04-09

Student

Page 10: Database Relational Model

SPARCS'11 undead 10

Designing KAIST Student DB• 이름• 학번• 학과• 출신고교• 생년월일

2013-04-09

Student

Page 11: Database Relational Model

SPARCS'11 undead 11

Designing KAIST Student DB이름 학번 학과 출신고교 생년월일

샤바칸 20111064

전산학과 해외고 921112

찰제 20110846

전산학과 일반고 931125

만렙물개 20110054

산업디자인학과 일반고 920620

커피 20120308

전산학과 KSA 940206

채종욱 20120522

전산학과 KSA 940411

마재의 20120123

전산학과 한성과고 930503

짭덕 20100135

전기 및 전자공학과 서울과고 920626

호떡 20100982

전산학과 서울과고 920926

2013-04-09

Page 12: Database Relational Model

SPARCS'11 undead 12

Desgning KAIST Student DB• Key• 어떤 entity 를 고유하게 만들어주는 attribute(s)• 하나의 필드가 될 수도 있고 , 여러 필드의 조합일 수도 있습니다 .• null 이 될 수 없는 필드여야 함• Unique 해야 함

• Key attribute

2013-04-09

Page 13: Database Relational Model

SPARCS'11 undead 13

Designing KAIST Student DB이름 학번 학과 출신고교 생년월일

샤바칸 20111064

전산학과 해외고 921112

찰제 20110846

전산학과 일반고 931125

만렙물개 20110054

산업디자인학과 일반고 920620

커피 20120308

전산학과 KSA 940206

채종욱 20120522

전산학과 KSA 940411

마재의 20120123

전산학과 한성과고 930503

짭덕 20100135

전기 및 전자공학과 서울과고 920626

호떡 20100982

전산학과 서울과고 920926

• Key 가 될 수 있는 필드는 ?

2013-04-09

Page 14: Database Relational Model

SPARCS'11 undead 14

Designing KAIST Student DB이름 학번 학과 출신고교 생년월일

샤바칸 20111064

전산학과 해외고 921112

찰제 20110846

전산학과 일반고 931125

만렙물개 20110054

산업디자인학과 일반고 920620

커피 20120308

전산학과 KSA 940206

채종욱 20120522

전산학과 KSA 940411

마재의 20120123

전산학과 한성과고 930503

짭덕 20100135

전기 및 전자공학과 서울과고 920626

호떡 20100982

전산학과 서울과고 920926

• Key 가 될 수 있는 필드는 ?

2013-04-09

Page 15: Database Relational Model

SPARCS'11 undead 15

Designing KAIST Student DB이름 학번 학과 출신고교 생년월일

샤바칸 20111064

전산학과 해외고 921112

찰제 20110846

전산학과 일반고 931125

만렙물개 20110054

산업디자인학과 일반고 920620

커피 20120308

전산학과 KSA 940206

채종욱 20120522

전산학과 KSA 940411

마재의 20120123

전산학과 한성과고 930503

짭덕 20100135

전기 및 전자공학과 서울과고 920626

호떡 20100982

전산학과 서울과고 920926

• Key 가 될 수 있는 필드는 ?

2013-04-09

Page 16: Database Relational Model

SPARCS'11 undead 16

Designing KAIST Student DB

2013-04-09

Department

Page 17: Database Relational Model

SPARCS'11 undead 17

Designing KAIST Student DB• 학과 이름• 학과 코드• 창립 년도• 홈페이지

2013-04-09

Department

Page 18: Database Relational Model

SPARCS'11 undead 18

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

2013-04-09

Page 19: Database Relational Model

SPARCS'11 undead 19

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

이름 학번 학과 출신고교 생년월일샤바칸 2011106

4전산학과 해외고 921112

찰제 20110846

전산학과 일반고 931125

만렙물개 20110054

산업디자인학과 일반고 920620

커피 20120308

전산학과 KSA 940206

채종욱 20120522

전산학과 KSA 940411

마재의 20120123

전산학과 한성과고 930503

짭덕 20100135

전기 및 전자공학과 서울과고 920626

호떡 20100982

전산학과 서울과고 920926

2013-04-09

Department Student

그렇다면 이 둘의 관계는 ?- 학생은 학과에 소속되어 있다 -

Page 20: Database Relational Model

SPARCS'11 undead 202013-04-09

Depart-ment

Stu-dent

include

샤바칸cs 찰제

id

만렙물개…

Page 21: Database Relational Model

SPARCS'11 undead 21

Depart-ment

Stu-dent

include

1 1..nDepart-ment

Depart-ment

Stu-dent

Stu-dent

2013-04-09

Page 22: Database Relational Model

SPARCS'11 undead 22

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

무학과 ??? ??? ???

이름 학번 학과 출신고교 생년월일샤바칸 2011106

4cs 해외고 921112

찰제 20110846

cs 일반고 931125

만렙물개 20110054

id 일반고 920620

커피 20120308

cs KSA 940206

채종욱 20120522

cs KSA 940411

마재의 20120123

cs 한성과고 930503

짭덕 20100135

ee 서울과고 920626

호떡 20100982

cs 서울과고 920926

김영석 20121023

무학과 해외고 0531

2013-04-09

Department Student

Page 23: Database Relational Model

SPARCS'11 undead 23

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

삭ㅋ제ㅋ

이름 학번 학과 출신고교 생년월일샤바칸 2011106

4cs 해외고 921112

찰제 20110846

cs 일반고 931125

만렙물개 20110054

id 일반고 920620

커피 20120308

cs KSA 940206

채종욱 20120522

cs KSA 940411

마재의 20120123

cs 한성과고 930503

짭덕 20100135

ee 서울과고 920626

호떡 20100982

cs 서울과고 920926

김영석 20121023

null 해외고 930531

2013-04-09

Department Student

Page 24: Database Relational Model

SPARCS'11 undead 24

Depart-ment

Stu-dent

include

1 1..n

2013-04-09

Page 25: Database Relational Model

SPARCS'11 undead 25

Depart-ment

Stu-dent

include

0..1 1..n

2013-04-09

Page 26: Database Relational Model

SPARCS'11 undead 26

Depart-ment

Stu-dent

include

0..1 1..nDepart-ment

Depart-ment

Stu-dent

Stu-dent

2013-04-09

Page 27: Database Relational Model

SPARCS'11 undead 272013-04-09

Depart-ment

Stu-dent

include

샤바칸cs 찰제

id

만렙물개…

김영석msb

Page 28: Database Relational Model

SPARCS'11 undead 28

Depart-ment

Stu-dent

include

0..1 1..n

2013-04-09

Page 29: Database Relational Model

SPARCS'11 undead 29

Depart-ment

Stu-dent

include

0..n 1..n

2013-04-09

Page 30: Database Relational Model

SPARCS'11 undead 30

Depart-ment

Stu-dent

include

0..n 1..nDepart-ment

Depart-ment

Stu-dent

Stu-dent

2013-04-09

Page 31: Database Relational Model

SPARCS'11 undead 31

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

이름 학번 학과 출신고교 생년월일샤바칸 201110

64cs 해외고 921112

찰제 20110846

cs 일반고 931125

만렙물개 20110054

id 일반고 920620

커피 20120308

cs KSA 940206

채종욱 20120522

cs KSA 940411

마재의 20120123

cs 한성과고 930503

짭덕 20100135

ee 서울과고 920626

호떡 20100982

cs 서울과고 920926

김영석 20121023

null 해외고 930531

2013-04-09

Department Student

Page 32: Database Relational Model

SPARCS'11 undead 32

Designing KAIST Student DB학과 이름 학과 코드 창립년도 홈페이지전산학과 cs 1972 cs.

산업디자인학과 id 1986 id.

전기 및 전자공학과 ee 1973 ee.

수리과학과 mas 1972 mathsci.

경영과학과 msb 2009 ms.

이름 학번 학과 복수전공 출신고교 생년월일샤바칸 201110

64cs msb 해외고 921112

찰제 20110846

cs null 일반고 931125

만렙물개 20110054

id null 일반고 920620

커피 20120308

cs null KSA 940206

채종욱 20120522

cs null KSA 940411

마재의 20120123

cs null 한성과고 930503

짭덕 20100135

ee null 서울과고 920626

호떡 20100982

cs mas 서울과고 920926

김영석 20121023

null null 해외고 930531

2013-04-09

Department Student

Page 33: Database Relational Model

SPARCS'11 undead 33

Designing KAIST Student DB이름 학과 복수전공 1 복수전공 2 부전공

샤바칸 cs msb null ( 경제 )찰제 cs null null null

만렙물개 id null null null

짭덕 ee null null null

호떡 cs mas null null

김영석 null null null null

안재만 cs mas ee null

조형 id msb null cs

2013-04-09

Student

Page 34: Database Relational Model

SPARCS'11 undead 34

Designing KAIST Student DB이름 학과 복수전공 1 복수전공 2 부전공

샤바칸 cs msb null ( 경제 )찰제 cs null null null

만렙물개 id null null null

짭덕 ee null null null

호떡 cs mas null null

김영석 null null null null

안재만 cs mas ee null

조형 id msb null cs

2013-04-09

Student

Scenario:어떤 신입생이 들어옵니다 .이 사람은 오로지 DB 에 트롤링을 하려는 목적으로카이스트의 모든 학부 프로그램을 복수전공과 부전공을 적절히 섞어서 신청합니다 .

Page 35: Database Relational Model

SPARCS'11 undead 35

Designing KAIST Student DB이름 학과 복수전공 1 복수전공 2 복수전공 3 복수전공 4 복수전공 5 복수전공 6 복수전공 7 부전공

1부전공

2부전공

3부전공

4부전공

5부전공

6

샤바칸 cs msb null null null null null null ( 경제 ) null null null null null

찰제 cs null null null null null null null null null null null null null

만렙물개 id null null null null null null null null null null null null null

짭덕 ee null null null null null null null null null null null null null

호떡 cs mas null null null null null null null null null null null null

김영석 null null null null null null null null null null null null null null

안재만 cs mas ee null null null null null null null null null null null

조형 id msb null null null null null null cs null null null null null

헤르메온느 cs id mas bs bis nqe ie ch msb ( 경제 ) stp me ms cbe

2013-04-09

Student

어엌ㅋㅋㅋㅋㅋ 닝겐노 모래시계와 강려크데스네

Page 36: Database Relational Model

SPARCS'11 undead 36

Stu-dent

Depart-ment

Department-Student

학과이름 학과코드 창립년도 홈페이지바이오및뇌공학과 bis 2001 bioeng.

생명과학과 bs 1972 bs.

전산학과 cs 1972 cs.

수리과학과 mas 1972 math-sci.

이름샤바칸찰제

만렙물개김영석안재만조형

2013-04-09

Page 37: Database Relational Model

SPARCS'11 undead 37

Stu-dent

Depart-ment

Department-Student

학과이름 학과코드 창립년도 홈페이지바이오및뇌공학과 bis 2001 bioeng.

생명과학과 bs 1972 bs.

전산학과 cs 1972 cs.

수리과학과 mas 1972 math-sci.

이름샤바칸찰제

만렙물개김영석안재만조형

학과코드 이름cs 샤바칸cs 찰제id 만렙물개cs 안재만id 조형

2013-04-09

Page 38: Database Relational Model

SPARCS'11 undead 38

Stu-dent

Depart-ment

Department-Student

학과이름 학과코드 창립년도 홈페이지바이오및뇌공학과 bis 2001 bioeng.

생명과학과 bs 1972 bs.

전산학과 cs 1972 cs.

수리과학과 mas 1972 math-sci.

이름샤바칸찰제

만렙물개김영석안재만조형

학과코드 이름cs 샤바칸cs 찰제id 만렙물개cs 안재만id 조형

msb 샤바칸ee 안재만

mas 안재만msb 조형cs 조형

2013-04-09

Page 39: Database Relational Model

SPARCS'11 undead 39

ERD

2013-04-09

Page 40: Database Relational Model

SPARCS'11 undead 40

Entity Relation Diagram

2013-04-09

Page 41: Database Relational Model

SPARCS'11 undead 41

StudentDepartment in-clude

dep__id

dep_name foundationhomepage

std_name std_number

2013-04-09

Page 42: Database Relational Model

SPARCS'11 undead 42

schema

2013-04-09

Page 43: Database Relational Model

SPARCS'11 undead 43

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name

varchar(20), unique, not null

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 44: Database Relational Model

SPARCS'11 undead 44

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name

varchar(20), unique, not null

?!

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 45: Database Relational Model

SPARCS'11 undead 45

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name

varchar(20), unique, not null

?!

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 46: Database Relational Model

SPARCS'11 undead 46

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name varchar(20), not null

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 47: Database Relational Model

SPARCS'11 undead 47

MySQL• Structured query language / 구조화 질의어• 특정한 DB 시스템에 한정되지 않아 널리 사용됨• Functions• Query• Data definition• Manipulation

2013-04-09

Page 48: Database Relational Model

SPARCS'11 undead 48

$mysql -u zzongaly -pEnter password: ********Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 14 to server version: 3.23.34aType 'help;' or '\h' for help. Type '\c' to clear the buffermysql>

$mysql [–h host] [–u user] [–p[password]] [dbname]

2013-04-09

Page 49: Database Relational Model

SPARCS'11 undead 49

>mysql -u zzongaly –ppasswordWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 14 to server version: 3.23.34aType 'help;' or '\h' for help. Type '\c' to clear the buffermysql>

>mysql [–h host] [–u user] [–p[password]] [dbname]

2013-04-09

Page 50: Database Relational Model

SPARCS'11 undead 50

mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql |+--------------------+2 rows in set (0.00 sec)

mysql> show databases;

2013-04-09

Page 51: Database Relational Model

SPARCS'11 undead 51

mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql |+--------------------+2 rows in set (0.00 sec)

mysql> show databases;

2013-04-09

Page 52: Database Relational Model

SPARCS'11 undead 52

mysql> create database zzongaly -> ;Query OK, 1 row affected (0.04 sec)

mysql> create database [dbname];

2013-04-09

Page 53: Database Relational Model

SPARCS'11 undead 53

mysql> use zzongalyDatabase changed

mysql> use [dbname];

2013-04-09

Page 54: Database Relational Model

SPARCS'11 undead 54

mysql> show tables;Empty set (0.00 sec)

mysql> show tables;

2013-04-09

Page 55: Database Relational Model

SPARCS'11 undead 55

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name varchar(20), not null

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 56: Database Relational Model

SPARCS'11 undead 56

Student

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 57: Database Relational Model

SPARCS'11 undead 57

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

2013-04-09

Page 58: Database Relational Model

SPARCS'11 undead 58

mysql> CREATE TABLE Student( -> std_id INTEGER, -> std_name VARCHAR(20) NOT NULL, -> PRIMARY KEY(std_id) -> );

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 59: Database Relational Model

SPARCS'11 undead 59

mysql> CREATE TABLE Student( -> std_id INTEGER, -> std_name VARCHAR(20) NOT NULL, -> PRIMARY KEY(std_id), -> CHECK (std_id >= 19000000 AND std_id< 30000000) -> );

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 60: Database Relational Model

SPARCS'11 undead 60

mysql> INSERT INTO Student VALUES(20070764, ’ 정진근’ );

mysql> INSERT INTO tablename VALUES(value [,-value]);

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 61: Database Relational Model

SPARCS'11 undead 61

mysql> INSERT INTO Student(std_id, std_name) -> VALUES(20070764, ’ 정진근’ );

mysql> INSERT INTO tablename (fieldname [, field-name]) VALUES (value [,value]);

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 62: Database Relational Model

SPARCS'11 undead 62

mysql> SELECT * FROM Student;

mysql> SELECT * FROM tablename;

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 63: Database Relational Model

SPARCS'11 undead 63

mysql> SELECT std_id FROM Student;

mysql> SELECT fieldname FROM tablename;

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 64: Database Relational Model

SPARCS'11 undead 64

mysql> SELECT * FROM Student WHERE std_id > 20110000;

mysql> SELECT * FROM tablename WHERE condi-tion;

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 65: Database Relational Model

SPARCS'11 undead 65

mysql> SELECT FROM Student WHERE std_id = 20110125;

mysql> DELETE FROM tablename WHERE condi-tion;

std_id integer, primary key, unique

std_name varchar(20), not null

2013-04-09

Page 66: Database Relational Model

SPARCS'11 undead 66

StudentDepartment in-clude

dep_id char(3), primary key, unique

dep_name

varchar(20), unique, not null

founda-tion integer, not null

hom-page varchar(20)

std_id integer, primary key, unique

std_name varchar(20), not null

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 67: Database Relational Model

SPARCS'11 undead 67

in-clude

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 68: Database Relational Model

SPARCS'11 undead 68

mysql> CREATE TABLE Dep_Stu( -> dep_id char(3) NOT NULL, -> std_id INTEGER NOT NULL, -> PRIMARY KEY( ) -> );

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 69: Database Relational Model

SPARCS'11 undead 69

mysql> CREATE TABLE Dep_Stu( -> dep_id char(3) NOT NULL, -> std_id INTEGER NOT NULL, -> PRIMARY KEY(dep_id, std_id) -> );

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 70: Database Relational Model

SPARCS'11 undead 70

mysql> CREATE TABLE Dep_Stu( -> dep_id char(3) NOT NULL, -> std_id INTEGER NOT NULL, -> PRIMARY KEY(dep_id, std_id), -> FOREIGN KEY(dep_id) REFERENCES Department, -> FOREIGN KEY(std_id) REFERENCES Student -> );

mysql> CREATE TABLE tablename( fieldname fieldtype [NOT NULL], [fieldname fieldtype [NOT NULL],] UNIQUE(fieldname[, fieldname]), PRIMARY KEY(fieldname[, fieldname]) );

dep_id char(3), not nullstd_id integer, not null

2013-04-09

Page 71: Database Relational Model

SPARCS'11 undead 71

Help• 궁금하면 엔간하면 Google 신께 기도를 올리면 됩니다 .

2013-04-09

Page 72: Database Relational Model

SPARCS'11 undead 72

Database Tuning

2013-04-09

Page 73: Database Relational Model

SPARCS'11 undead 73

Database TuningGolden rule:

Good database performance starts with good database design. No amount of fine tuning will make a poorly designed database perform as well as a well-designed database.

2013-04-09

Page 74: Database Relational Model

SPARCS'11 undead 74

Database Design• Conceptual design – DBMS independent

• Database analysis and requirements• Determine end-user views, outputs, and transaction-processing requirements

• Entity relationship modeling and normalization• Define entities, attributes, and relationships. Draw DR diagrams. Normalize ta-

bles.• Data model verification

• Identify main processes, insert, update, and delete rules• Logical design – DBMS dependent

• Translate the conceptual model into definitions for tables, views, and so on.• Physical design – Hardware dependent

• Define storage structures and access paths for optimum performance

2013-04-09

Page 75: Database Relational Model

SPARCS'11 undead 75

Database Design• ACID test

• Atomicity• 모든 작업들이 수행되었는지를 보장하는 능력

• Consistency• 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것

• Isolation• 작업을 수행할 때 다른 작업이 끼어들지 못하도록 보장하는 것

• Durability• 성공적으로 수행된 작업은 영원히 반영되어야 함

• Serializability• Multiuser 혹은 distributed database 에서 중요시됨• 여러 가지의 작업을 동시에 실행할 때 일관성 있는 결과를 내놓아야 함

2013-04-09

Page 76: Database Relational Model

SPARCS'11 undead 76

Database Tuning쿼리를 처리할 때 CPU, RAM, Secondary Storage, Network, 어플리케이션의 코드 ( 라 쓰고 똥이라 읽습니다 ) 때문에 병목현상이 일어남 !

2013-04-09

Page 77: Database Relational Model

SPARCS'11 undead 77

Database Tuning쿼리를 처리할 때 CPU, RAM, Secondary Storage, Network, 어플리케이션의 코드 ( 라 쓰고 똥이라 읽습니다 ) 때문에 병목현상이 일어남 !

두 가지 접근 :• SQL performance tuning

• 서버의 자원을 최대한 적게 사용하는 SQL 쿼리를 보내는 것• DBMS performance tuning

• 존재하는 자원을 최대한 효율적으로 사용하는 것

2013-04-09

Page 78: Database Relational Model

SPARCS'11 undead 78

Database Tuning• Index 를 사용한다

• Create indexes for each single attribute used in a WHERE, HAVING, ORDER BY, GROUP BY

• Do not use indexes in small tables or tables with low sparsity• Declare primary and foreign keys so the optimizer can use the indexes in join oper-

ations.• Declare indexes in join columns other than PK or FK

2013-04-09

Page 79: Database Relational Model

SPARCS'11 undead 79

Database Tuning• WHERE, HAVING 등 조건문 사용에 주의를 기한다 .

• Use simple columns or literals as operands in a conditional expression• Avoid the use of conditional expressions with functions whenever possible

• Numeric field comparisons are faster than character, date, and NULL comparisons• Equality comparisons are faster than inequality comparisons• Whenever possible, transform conditional expressions to use literals

• price – 10 = 7 price = 17• P_QOH < P_MIN AND P_MIN = P_REORDER AND P_MIN > 10 P_QOH = 10 AND P_MIN = P_REORDER AND P_MIN > 10

• When using multiple conditional expressions, write the equality conditions first• If you use multiple AND conditions, write the condition most likely to be false first• When using multiple OR conditions, put the condition most likely to be true first• Whenever possible, try to avoid the use of the NOT logical operator

• NOT (P_PRICE > 10.00) P_PRICE <= 10.00• NOT(EMP_SEX = ‘M’) EMP_SEX = ‘F’

2013-04-09

Page 80: Database Relational Model

SPARCS'11 undead 80

Database Tuning• Query Formulation

• Identify what columns and computations are required• Simple expressions?• Aggregate functions? (GROUP BY, subquery)

• Identify the source tables• Determine how to join the tables• Determine what selection criteria is needed

• Simple comparison• Single value to multiple values (IN)• Nested comparisons ( PRICE >= ( SELECT AVG(PRICE) FROM PRODUCT )• Grouped data selection (HAVING)

• Determine in what order to display the output (ORDER BY)2013-04-09

Page 81: Database Relational Model

SPARCS'11 undead 81

Database Tuning• DBMS performance tuning• Data cache• SQL cache• Sort ache• Optimizer mode (cost-based vs. rule-based)

* cost-based optimizer: determine the best approach to execute a query* rule-based optimizer: uses preset rules and points to deter-mine the best approach to execute a query

2013-04-09