chapter 16 persistent data design หรือ database design โดยใช้ relational...

27
Chapter Chapter 16 16 Persistent Data Persistent Data Design Design หหหห หหหห Database Design Database Design หหหหหห หหหหหห Relational Relational Database Database

Upload: trynt

Post on 23-Jan-2016

66 views

Category:

Documents


1 download

DESCRIPTION

Chapter 16 Persistent Data Design หรือ Database Design โดยใช้ Relational Database. จุดประสงค์ 1. เพื่อให้นักศึกษาเข้าใจในกระบวนการในการออกแบบเพื่อการเก็บข้อมูลของ Class ต่างๆ ไว้อย่างถาวรได้ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ChapterChapter 16 16 Persistent Data Persistent Data

Design Design หรื�อ หรื�อ Database Design Database Design

โดยใช้� โดยใช้� Relational Relational DatabaseDatabase

Page 2: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

จุ ดปรืะสงค์� 1. เพื่��อให้นั�กศึ�กษาเข้าใจในักระบวนัการในัการ

ออกแบบเพื่��อการเก�บข้อมู�ลข้อง Class ต่�างๆ ไวอย่�างถาวรได้

2. เพื่��อให้นั�กศึ�กษาเข้าใจความูสั�มูพื่�นัธ์'และการแปลงระห้ว�าง Class ก�บ

Relational Database

Page 3: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.1 Relational DatabaseRelational Database ค�อระบบฐานัข้อมู�ลที่+�

อาศึ�ย่ Relation ห้ร�อต่าราง (Table) เพื่��อแสัด้งค�าและความูสั�มูพื่�นัธ์'ข้องข้อมู�ล ข้อมู�ลที่+�เก�บอย่��ในัแต่�ละช่�องข้อง

Table เร+ย่กว�า Data Item ในัที่าง Relational Database แต่�ละกล-�มูข้อง Data Item จะมู+ช่��อข้องต่นัเอง เร+ย่กช่��อนั�.นัว�า Field Name ห้ร�อ Column

Name กล-�มูข้องข้อมู�ลที่+�มู+ Column Name เห้มู�อนัก�นั เร+ย่กว�า Column และเมู��อนั/า Column ห้ลาย่ๆ

Column ที่+�แต่กต่�างก�นัมูาเร+ย่งต่�อก�นัจะได้ Tuple ห้ร�อ Row ข้องข้อมู�ล และ Row ห้ลาย่ๆ Row เมู��อรวมูก�นัจะได้ Table และเมู��อนั/าเอา Table ที่+�มู+ความูสั�มูพื่�นัธ์'ก�นัมูา

รวมูก�นัจะได้ฐานัข้อมู�ล (Database) นั��นัเอง

Page 4: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

Id NameAddre

ss

001 KitAyuttha

ya

002 NoiBangko

k

Data Item

Field Name

Column

Row

Table

ร�ป โครงสัรางข้อง Table ในั Relational Database

ในัแต่�ละ Row ข้อง Database จะเป1นักล-�มูข้อง Data Item ที่+�บ�งช่+.ถ�ง Entry ห้ร�อกล-�มูข้อง Attributes

ข้อง Object แต่�ละต่�ว ด้�งนั�.นัในัแต่�ละ Row จะต่องมู+ Data Item อย่�างนัอย่ 1 ต่�วที่+�จะเป1นัต่�วบ�งช่+.

(Identity) ว�า Row นั�.นับรรจ-ข้อมู�ลที่+�ต่�าง Row ก�นั กล�าวค�อ จะต่องเล�อกเอา Column อย่�างนัอย่ 1

Column มูาเป1นัต่�วบ�งช่+.ด้�งกล�าว ซึ่��งต่�วบ�งช่+.ข้อง Row ใด้ Row ห้นั��ง จะต่องไมู�ซึ่/.าก�บต่�วบ�งช่+.ข้อง Row อ��นั และเร+ย่ก Column ที่+�เป1นัต่�วบ�งช่+.นั�.นัว�า Key ห้ร�อ Primary Key

ต่�วอย่�างเช่�นั คนัไที่ย่มู+ห้มูาย่เลข้บ�ต่รประช่าช่นั เป1นั Primary Key เพื่ราะห้มูาย่เลข้บ�ต่รประช่าช่นัข้องคนัไที่ย่

แต่�ละคนั ไมู�มู+ที่างซึ่/.าก�นัได้เลย่

Page 5: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ในัข้ณะเด้+ย่วก�นั เมู��อต่องการที่+�จะแสัด้งความูสั�มูพื่�นัธ์'ระห้ว�าง Table ห้นั��งก�บอ+ก Table ห้นั��ง สั4�งที่+�จ/าเป1นัต่องมู+ค�อ ข้อมู�ลสั�กต่�วห้นั��งที่+�จะสัามูารถบ�งช่+.ถ�งความูสั�มูพื่�นัธ์'ระห้ว�าง 2 Table ได้ ซึ่��งในั

ห้ล�กการข้อง Relational Database นั�.นั จะใช่การอางอ4ง (Reference) เพื่��อบ�งช่+.ความูสั�มูพื่�นัธ์'ระห้ว�าง 2 Table สั4�งที่+�ใช่

เพื่��อการอางอ4งนั+.เร+ย่กว�า Foreign Key ซึ่��งห้มูาย่ถ�ง Column ห้นั��งในั Table ที่+�จะเก�บ Primary Key ข้องอ+ก Table ห้นั��งไวเพื่��อใช่ในั

การอางถ�ง ห้ร�อแสัด้งความูสั�มูพื่�นัธ์'Id Name

Address

001 Kit 003

002 Noi 001Prov_

IdProvince

001 Bangkok

002 Nontaburi

003 Ayutthaya

Table Name: Person

Table Name: Province

Primary Key

Foreign Key

ร�ป Primary Key และ Foreign Key

Page 6: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

จากร�ปเป1นัภาพื่แสัด้ง ต่�วอย่�างข้อง Primary Key และ Foreign Key ในัภาพื่ เป1นั Table ข้องบ-คคล (Person) และจ�งห้ว�ด้ (Province) โด้ย่ Data Item ที่+�

แสัด้งด้วย่ต่�วเอ+ย่งห้นัาข้+ด้เสันัใต่ ค�อ Primary Key (Primary Key ข้อง Person ค�อ Id ในัข้ณะที่+�

Primary Key ข้อง Province ค�อ Prov_Id ) และต่�วอ�กษรเอ+ย่งค�อ Foreign Key ต่�วอย่�างเช่�นั ในั Table

Person จะมู+ Foreign Key ช่��อ Address ซึ่��งในัความูเป1นัจร4งแลวค�าที่+�อย่��ในั Column นั+.ได้จะต่องเป1นัค�าใด้ค�า

ห้นั��งในั Column Prov_Id ข้อง Table Province กล�าวค�อ ค�าในั Column Address จะต่องอางอ4งต่ามู Prov_Id เสัมูอนั��นัเอง จากที่�.งสัอง Table ข้างต่นั จะ

ต่+ความูห้มูาย่ได้ว�า Kit อย่��ที่+�จ�งห้ว�ด้ Ayutthaya ในัข้ณะที่+� Noi อย่��ที่+�จ�งห้ว�ด้ Bangkok นั��นัเอง

Page 7: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

จากที่+�ผ่�านัมูาได้พื่�ด้ถ�ง Class Diagram จะพื่บว�า Class ใด้ Class ห้นั��งในั Class Diagram นั�.นั ต่องมู+

ความูสั�มูพื่�นัธ์'ก�นัในัร�ปแบบใด้ร�ปแบบห้นั��ง (Aggregation, Generalization ห้ร�อ

Association) ก�บ Class อ��นัอย่�างนัอย่ 1 Class เสัมูอ ด้�งนั�.นัการออกแบบ Relational Database เพื่��อ

เก�บข้อมู�ล (ห้ร�อ Attributes) ข้อง Class ต่�างๆ จ�งจ/าเป1นัต่อง แสัด้งความูสั�มูพื่�นัธ์'ข้อง Table เช่�นัเด้+ย่วก�นั ในั Relational Database นั�.นั สั4�งที่+�ใช่เพื่��อเช่��อมูความู

สั�มูพื่�นัธ์'ระห้ว�าง Table ก�ค�อ Foreign Key นั��นัเอง

Page 8: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.2 หลั�กการืในการืแปลังจุาก Class Diagram ส�� Relational Database

CREATE TABLE PERSON( ID CHAR(10) NOT NULL, NAME CHAR(50) NOT

NULL, SEX CHAR(1) NOT

NULL, AGE INTEGER NOT

NULL, HEIGHTREAL NOT NULL, JOB CHAR(1),

PRIMARY KEY = ID, FOREIGN KEY JOB REFERENCES

JOB_DB )

ตั�วอย�างน�� เป!นปรืะโยค์ในการืสรื�าง Table ที่�#ช้�#อ Person ซึ่%#งมี�ข้�อมี�ลัหรื�อ Column ตั�างๆ ด�งน��

Page 9: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

-Id ใช่เพื่��อเก�บห้มูาย่เลข้ประจ/าต่�วข้องบ-คคล-Name ใช่เพื่��อเก�บช่��อข้องบ-คคล

-Sex, Age, Height ใช่เพื่��อเก�บ เพื่ศึ อาย่- และ สั�วนัสั�ง ข้องบ-คคล

-Char(n) ห้มูาย่ถ�ง การก/าห้นัด้ช่นั4ด้และข้นัาด้ข้องข้อมู�ล ให้เป1นั ต่�วอ�กษรที่+�มู+ข้นัาด้ n เช่�นั Id Char(10) ห้มูาย่ถ�งให้ Column

Id มู+ช่นั4ด้เป1นัต่�วอ�กษร ซึ่��งมู+ความูย่าวได้สั�งสั-ด้ 10 ต่�วอ�กษร

-Integer และ Real ห้มูาย่ถ�ง การก/าห้นัด้ช่นั4ด้ข้องข้อมู�ลให้เป1นั จ/านัวนัเต่�มูและ จ/านัวนัจร4ง ต่ามู

ล/าด้�บ

การืมี�วลั� Not Null อย��ที่�าย Column ใด หมีายถึ%ง Column น��น จุะตั�องมี�ค์�าเสมีอ

Page 10: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

-Primary Key = Id ห้มูาย่ถ�ง การก/าห้นัด้ให้ Id เป1นั Primary Key ข้อง Table นั+.

-Foreign Key Job Reference Job_DBห้มูาย่ถ�ง การก/าห้นัด้ให้ Column ช่��อ Job

เป1นั Foreign Key อางอ4ง ไปย่�ง Table ช่��อ Job_DB

Page 11: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.2.1 หลั�กการืในการืแปลัง Class ให�เป!น Table

ก/าห้นัด้ให้ Attribute ต่�วใด้ต่�วห้นั��ง ห้ร�อกล-�มูใด้กล-�มูห้นั��งเป1นั Primary Key

สัราง Table ที่+�มู+ที่-กๆ Attributes ข้อง Class นั�.นั และมู+ Primary Key ต่ามูที่+�ก/าห้นัด้มูาแลว

Attribute ห้ร�อกล-�มูข้อง Attribute ที่+�เป1นั Primary Key ต่องถ�กก/าห้นัด้เป1นั Not Null เสัมูอ

สั/าห้ร�บ Attributes อ��นัๆ ที่+�ไมู�ได้ถ�กเล�อกให้เป1นั Primary Key ให้พื่4จารณาว�า Attributes ใด้เป1นั

Null ได้ และ Attributes ใด้เป1นั Null ไมู�ได้ ในัการออกแบบ Table ไมู�ต่องสันัใจในัสั�วนั

ข้อง Function ให้มู-�งความูสันัใจไปย่�ง Attributes ต่�างๆ เที่�านั�.นั

Page 12: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย� างOfficer-

Officer_Id-Office_Id-Officer_Name-Gender-Salary-Page_no

+Get_Id()+Get_Name()+Set_Id()+Set_Name()+Get_Page_No()+Set_Page_No()+Get_Salary()+Set_Salary()+Get_Gender()

Create Table Officer( Officer_IdChar(10) Not Null, Office_IdChar(5), Officer_NameChar(50) Not Null, GenderChar(1) Not Null, SalaryInteger, Page_NoCahr(7), Primary Key = Officer_Id)

ส�งเกตัด�ๆ ว�าได�มีาอย�างไรื…!

Page 13: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.2.2 หลั�กการืแปลัง Class ที่�#มี�ค์วามีส�มีพั�นธ์�ก�นแบบ Aggregation ให�เป!น Table ที่�#ส�มีพั�นธ์�ก�น

ออกแบบ Table จาก Class ที่�.ง 2 ข้างข้องเคร��องห้มูาย่ Aggregation ที่+�ได้แนัะนั/าไปแลว

การแสัด้งความูสั�มูพื่�นัธ์'ข้อง Table ในั Relational Database นั�.นั ให้นั/าเอา Primary Key (อาจจะเป1นั Field เด้+ย่วห้ร�อกล-�มูข้อง Field

ก�ได้ ) ข้อง Main Class มูาเป1นั Foreign Key ข้อง Composite Class ซึ่��งก�เห้มู�อนัก�บการเอาช่��อข้องพื่�อแมู�ไปเก�บไวที่+�ล�ก เมู��อพื่�อแมู�พื่าล�กออกไป

เที่+�ย่ว เวลาที่+�ล�กสั�ญห้าย่ ต่/ารวจจะได้ที่ราบพื่�อแมู�ค�อใคร แต่�ถาห้ากปฏิ4บ�ต่4ในัที่างกล�บก�นัต่/ารวจจะไมู�สัามูารถต่ามู

ห้าล�กที่+�สั�ญห้าย่ได้

Page 14: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ในัการใสั� Foreign Key เข้าไปย่�ง Composite Class นั�.นั ต่องพื่4จารณาด้วย่ว�า

Foreign Key นั�.นัเป1นัค�า Null ได้ห้ร�อไมู� โด้ย่ด้�จาก Minimal Cardinality เช่�นั ถาห้าก Cardinality ที่+�ฝั่:� ง Composite Class เป1นั 0 ..n แสัด้งว�า Main

Class มู+สั4ที่ธ์4;ที่+�จะไมู�ต่องมู+ Composite Class ประกอบอย่��เลย่ก�ได้ ด้�งนั�.นั Foreign Key ต่�วนั+.สัามูารถเป1นั Null ได้ แต่�ในัที่างกล�บก�นั ห้ากว�า Cardinality ที่+�ฝั่:� ง Composite Class เป1นั 1..n นั��นัห้มูาย่ความูว�า

ในัที่-กๆ ช่�วงเวลาจะต่องมู+ Composite Class ประกอบอย่��ในั Main Class เสัมูอ ด้�งนั�.นั Foreign Key ต่�วนั+.

ไมู�มู+สั4ที่ธ์4;เป1นั Null ได้เลย่

Page 15: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง

Department-Dept_Id

-Dept_Name+Get_Id()+Set_Id()+Get_Name()+Set_Name()

Office-

Office_Id-Office_Name-Phone_No

+Get_Id()+Set_Id()+Get_Name()+Set_Name()+Get_Phone_No()+Set_Phone_No()

Officer-

Officer_Id-Office_Id-Office_Name-Gender-Salary-Phone_No

+Get_Id()+Set_Id()+Get_Name()+Set_Name()+Get_Page_No()+Set_Page_No()+Get_Salary()+Set_Salary()+Get_Gender()

1..n 0..

n

Create Table Officer( Officer_Id Char(10) Not Null, Office_Id Char(5), Officer_NameChar(50) Not Null, GenderChar(1) Not Null, SalaryInteger, Page_No Char(7), Primary Key = Officer_Id, Foreign Key Office_Id References Office)

จะได้ Table

อย่�างไร...!

Page 16: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.2.3 หลั�กการืแปลัง Class ที่�#มี�ค์วามีส�มีพั�นธ์�ก�นแบบ Association ให�เป!น Table ที่�#ส�มีพั�นธ์�ก�น

One-to-One Association- ออกแบบ Table ข้อง Class ที่�.งสัองข้างข้อง

เคร��องห้มูาย่ Association -ให้เล�อกเอา Primary Key ข้อง Table ต่�วใด้

ก�ได้ไปเป1นั Foreign Key ข้องอ+ก Table ห้นั��ง-การใสั� Foreign Key ให้พื่4จารณาว�า Table ที่+�

ถ�กอางถ�งนั�.นั มู+ Minimum Cardinality เป1นัอะไร เช่�นั ถาเป1นั 0 1.. Foreign Key จะเป1นัค�าว�างได้ แต่�ถา

กล�บก�นั เป1นั 1 1.. Foreign Key จะเป1นัค�าว�างไมู�ได้

Page 17: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง Man Wom

an

Marries

0..1 0..1

CREATE TABLE MAN( MANID CHAR(10) NOT NULL, WOMANID CHAR(10), PRIMARY KEY = MANID, FOREIGN KEY = WOMANID REFERENCES WOMAN) CREATE TABLE WOMAN

( WOMANID CHAR(10) NOT NULL, PRIMARY KEY = WOMANID)

Page 18: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง

Office

Manager

Manage

1..1 1..1

CREATE TABLE MANAGER( MANGID CHAR(10) NOT NULL, OFFICEID CHAR(10) NOT NULL, PRIMARY KEY = MANGID, FOREIGN KEY = OFFICEID REFERENCES OFFICE)

CREATE TABLE OFFICE( OFFICEIDCHAR(10) NOT NULL, PRIMARY KEY = OFFICEID)

Page 19: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

One-to-Many Associationห้ล�กในัการสัราง Table จาก One-to-Many

Association นั�.นั มู+ห้ล�กการเด้+ย่วก�นัก�บการสัราง Table จาก Aggregation Abstraction โด้ย่ Table

ในัด้านั One จะเห้มู�อนัก�บ Table ข้อง Main Class ห้ร�อ Aggregation Association และ Table ในัด้านั Many จะเห้มู�อนัก�บ Table ข้อง Composite Class ในั Aggregation นั��นัค�อให้นั/าเอา Primary Key ข้อง Table ในัด้านั One ไปเป1นั Foreign Key ข้อง Table

ในัด้านั Many

Page 20: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง

Teacher

Student

Teach

1..1 0..n

CREATE TABLE STUDENT( STDID CHAR(10) NOT NULL, TCHID CHAR(10) NOT NULL, PRIMARY KEY = STDID, FOREIGN KEY = TCHID REFERENCES TEACHER)

CREATE TABLE TEACHER( TCHIDCHAR(10) NOT NULL, PRIMARY KEY = TCHID)

Page 21: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

Many-to-Many Association

-สัราง Table ข้อง Class ที่�.งสัองข้างข้อง Association

-สัราง Table อ+กห้นั��ง Table ที่+�มู+อย่�างนัอย่ 2Column ซึ่��งก�ค�อ Primary Key ข้อง Table

ที่�.งสัอง และให้ Column ที่�.งห้มูด้เป1นั Key ข้อง Table ด้�งกล�าว ซึ่��งจะเร+ย่กว�าเป1นั Association

Table-ให้สั�วนัห้นั��งข้อง Primary Key ที่+�เป1นั

Primary Key ข้อง Table ข้างใด้ข้างห้นั��งเป1นั Foreign Key อางอ4งไปย่�ง Table นั�.นัๆ

Page 22: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง Subje

ctStuden

t

Teach

0..n 0..n

CREATE TABLE STUDENT( STDID CHAR(10) NOT NULL, PRIMARY KEY = STDID )

CREATE TABLE SUBJECT( SUBIDCHAR(10) NOT NULL, PRIMARY KEY = SUBID ) CREATE TABLE STD_SUB

( STDID CHAR(10), SUBID CHAR(10), PRIMARY KEY = (STDID, SUBID), FOREIGN KEY = STDID REFERENCES STUDENT, FOREIGN KEY = SUBID REFERENCES SUBJECT )

Page 23: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

16.2.4 หลั�กการืแปลัง Class ที่�#มี�ค์วามีส�มีพั�นธ์�ก�นแบบ Generalization ให�เป!น Table ที่�#ส�มีพั�นธ์�ก�น

ตั�วอย�าง 1 การืสรื�าง Table จุากข้�อค์วามี“ นั�กเร+ย่นัที่-กๆ คนั จะต่องเข้าอย่��ในัช่มูรมูฟุ-ต่บอล

ห้ร�อช่มูรมูเที่นันั4สั ห้ร�ออาจจะอย่��ที่�.ง 2 ”ช่มูรมูเลย่ก�ได้เป1นัต่�วอย่�างข้อง Generalization แบบ Total-

Overlapping ซึ่��งสัามูารถสัราง Table โด้ย่ย่�ด้ห้ล�กการการสัราง Table ด้�งนั+.

CREATE TABLE STUDENT( ID CHAR(10) NOT NULL, NAME CHAR(50) NOT NULL, PRIMARY KEY ID)

CREATE TABLE TENNIS( TID CHAR(10) NOT NULL, PRIMARY KEY TID, FOREIGN KEY TID REFERENCES STUDENT) CREATE TABLE SOCCER

( SID CHAR(10) NOT NULL, PRIMARY KEY SID, FOREIGN KEY SID REFERENCES STUDENT)

Page 24: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง 2 การืสรื�าง Table จุากข้�อค์วามี“ ในัภาคว4ช่าภาษาต่�างประเที่ศึ นั�กศึ�กษาที่-กคนัจะ

ต่องเล�อกเร+ย่นั ภาษาอ�งกฤษ ห้ร�อภาษาเย่อรมู�นัเที่�านั�.นั จะ”เล�อกเร+ย่นัที่�.งสัองภาษาไมู�ได้เป1นัต่�วอย่�างข้อง Generalization แบบ Total-

Exclusive ซึ่��งสัามูารถสัราง Table โด้ย่ย่�ด้ห้ล�กการการสัราง Table ด้�งนั+.

CREATE TABLE LANGUAGE( LID CHAR(10) NOT NULL, PRIMARY KEY LID)

CREATE TABLE STUDENT( ID CHAR(10) NOT NULL, NAME CHAR(50) NOT NULL, PRIMARY KEY ID, FOREIGN KEY ID REFERENCES LANGUAGE)

CREATE TABLE FRENCH( FID CHAR(10) NOT NULL, PRIMARY KEY FID, FOREIGN KEY FID REFERENCES LANGUAGE)

CREATE TABLE GERMAN( GID CHAR(10) NOT NULL, PRIMARY KEY GID, FOREIGN KEY GID REFERENCES LANGUAGE)

Page 25: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง 3 การืสรื�าง Table จุากข้�อค์วามี

“ นั�กเร+ย่นับางคนัเป1นันั�กก+ฬา นั�กเร+ย่นับางคนัเป1นั นั�กด้นัต่ร+ แต่�ไมู�มู+นั�กเร+ย่นัคนัใด้เป1นัได้ที่�.งสัองอย่�าง แต่�ก�มู+

”นั�กเร+ย่นับางคนัที่+�ไมู�เป1นัที่�.งสัองอย่�างเป1นัต่�วอย่�างข้อง Generalization แบบ Partial-Exclusive ซึ่��งสัามูารถสัราง Table โด้ย่ย่�ด้

ห้ล�กการการสัราง Table ด้�งนั+.CREATE TABLE CLUB( CID CHAR(10) NOT NULL, PRIMARY KEY CID)

CREATE TABLE STUDENT( ID CHAR(10) NOT NULL, SID CHAR(10), NAME CHAR(50) NOT NULL, PRIMARY KEY ID, FOREIGN KEY SID REFERENCES CLUB)CREATE TABLE SPORT

( SID CHAR(10) NOT NULL, PRIMARY KEY SID, FOREIGN KEY SID REFERENCES CLUB)

CREATE TABLE MUSIC( MID CHAR(10) NOT NULL, PRIMARY KEY MID, FOREIGN KEY MID REFERENCES CLUB)

Page 26: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ตั�วอย�าง 4 การืสรื�าง Table จุากข้�อค์วามี

“ นั�กเร+ย่นับางคนัเป1นัช่าย่ นั�กเร+ย่นัช่าย่บางคนัเป1นั ห้�วห้นัาห้อง แต่�ห้�วห้นัาห้องบางคนัอาจไมู�ใช่�นั�กเร+ย่นัช่าย่

และก�มู+นั�กเร+ย่นัอ+กห้ลาย่ๆ คนัที่+�ไมู�ใช่�นั�กเร+ย่นัช่าย่และไมู�ได้”เป1นัห้�วห้นัาห้องเป1นัต่�วอย่�างข้อง Generalization แบบ

Partial-Overlapping ซึ่��งสัามูารถสัราง Table โด้ย่ย่�ด้ห้ล�กการการสัราง Table ด้�งนั+.

CREATE TABLE MALE( MID CHAR(10) NOT NULL, PRIMARY KEY MID, FOREIGN KEY MID REFERENCES STUDENT)

CREATE TABLE STUDENT( ID CHAR(10) NOT NULL, PRIMARY KEY ID,)

CREATE TABLE HEAD( HID CHAR(10) NOT NULL, PRIMARY KEY HID, FOREIGN KEY HID REFERENCES STUDENT)

Page 27: Chapter  16 Persistent Data Design  หรือ  Database Design  โดยใช้  Relational Database

ค์.าถึามีที่�ายบที่ จงออกแบบ Class Diagram และสัราง

Relational Database จาก Problem Domain ต่�อไปนั+.

หมีายเหตั ให้ก/าห้นัด้ Primary key และ Foreign Key ด้วย่ต่�วเอง

Problem Domain“สัวนัสั�ต่ว'เป@ด้แห้�งห้นั��งประกอบไปด้วย่เข้ต่ข้อง

สัวนัสั�ต่ว' 6 เข้ต่ค�อ เข้ต่สั�ต่ว'ปAาแอฟุร4กา เข้ต่สั�ต่ว'ปAา เอเช่+ย่ เข้ต่สั�ต่ว'เมู�องห้นัาว เข้ต่สั�ต่ว'ที่+�มู+ล�กษณะแปลก

เข้ต่การแสัด้ง เข้ต่โรงพื่ย่าบาลสั�ต่ว' (สั/าห้ร�บสั�ต่ว'ที่+�ปAวย่ห้ร�อเป1นัโรค) ในัแต่�ละสั�วนัจะประกอบไปด้วย่สั�ต่ว'นัานัา

ช่นั4ด้ ซึ่��งอาจจะมู+ที่�.งสั�ต่ว'บก สั�ต่ว'นั/.า สั�ต่ว'คร��งบกคร��งนั/.า เป1นัต่นั ต่ามูปกต่4แลว สั�ต่ว'ห้นั��งช่นั4ด้จะอย่��ในัเข้ต่ใด้เข้ต่

ห้นั��งเที่�านั�.นั แต่�ในับางกรณ+อาจจะมู+การโย่กย่าย่สั�ต่ว'เพื่��อ ความูเห้มูาะสัมู เช่�นั อาจจะมู+การโย่กย่าย่สั�ต่ว'จากเข้ต่อ��นั

มูาอย่��ในัเข้ต่การแสัด้ง ห้ร�อโย่กย่าย่สั�ต่ว'ที่+�ปAวย่มูาไวในั ”เข้ต่โรงพื่ย่าบาลสั�ต่ว' เป1นัต่นั