You are on page 1of 52

หนวยที่ 10: การออกแบบการจัดการขอมูล

(Data Management Layer Design)

ดร.สุขสถิต มีสถิตย
การวิเคราะหและออกแบบเชิงวัตถุ
2/2550

1 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


วัตถุประสงค

z เพื่อใหนักศึกษาเขาใจกระบวนการออกแบบการจัดการขอมูล
แบบถาวรในระบบเชิงวัตถุได
z เพื่อใหนักศึกษาเขาใจรูปแบบการจัดเก็บออบเจ็คถาวร
z เพื่อใหนักศึกษาสามารถแปลงออบเจ็คใหเหมาะกับรูปแบบ
การจัดเก็บ
z เพื่อใหนักศึกษาสามารถออกแบบเพื่อปรับปรุงประสิทธิภาพ
แหลงจัดเก็บขอมูล
z เพื่อใหนักศึกษาสามารถออกแบบคลาสสําหรับเขาถึงและ
จัดการขอมูล

2 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การออกแบบการจัดการขอมูล

1. เลือกรูปแบบในการเก็บออบเจ็คแบบถาวร
2. แปลงออบเจ็คใหอยูในรูปแบบการจัดเก็บทีเ่ ลือก
3. เพิ่มประสิทธิภาพการจัดเก็บออบเจ็คแบบถาวร
4. ออกแบบคลาสสําหรับเขาถึงและจัดการขอมูล

3 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การเลือกรูปแบบในการเก็บ
ออบเจ็คแบบถาวร

4 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


รูปแบบในการเก็บออบเจ็คถาวร

z แฟมขอมูล (Files)
– แบบลําดับ (Sequential access file)
– แบบสุม (Random access file)
z ฐานขอมูล (Databases)
– แบบรีเลชันนอล (Relational databases)
– แบบออบเจ็ครีเลชันนอล (Object-relational
databases)
– เชิงวัตถุ (Object-oriented databases)

5 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แฟมขอมูลการการสัง
่ ซื้อของลูกคา

6 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แฟมขอมูลแบบลําดับ
(Sequential access file)

z ใชการดําเนินการแบบลําดับ (อาน เขียน คนหา) ได


z ใชไดดีกับการทํางานแบบลําดับ เชน การสรางรายงาน
z การทํางานแบบสุม เชน การคนหา หรือปรับปรุง มี
ประสิทธิภาพต่ํา เพราะโดยเฉลี่ยในการหาออบเจ็คที่
ตองการ ตองเขาถึง 50% ของเรคอรดทั้งหมด
มีสองแบบ
– เรียงลําดับ
– ไมเรียงลําดับ

7 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แฟมขอมูลแบบลําดับสุม
(Random Access Files)

z ใชการดําเนินการแบบสุม
 หรือแบบตรง (อาน เขียน
คนหา) ได
z มีประสิทธิภาพสูงในการทํางานแบบสุม  เชน การ
คนหา หรือแกไขออบเจ็คตัวใดตัวหนึง่ โดยเฉพาะ
z ทํางานแบบลําดับ เชน การสรางรายงาน มี
ประสิทธิภาพนอย

8 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ชนิดแฟมขอมูลในแอพพลิเคชัน
(Application File Types)

z แฟมขอมูลหลัก (Master Files)


z แฟมขอมูลอางอิง (Look-up files)
z แฟมขอมูลทรานแซ็กชัน (Transaction files)
z แฟมขอมูลการแกไข (Audit file)
z แฟมขอมูลเกา (History file or archive file)
z แฟมขอมูลดัชนี (Index file)
z แฟมขอมูลชัว่ คราว (Temporary file or work file)
z แฟมขอมูลสํารอง (Backup file)
z แฟมขอมูลพารามิเตอร (Parameter file)

9 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ฐานขอมูลแบบรีเลชันนอล
(Relational databases)

z ขอมูลเก็บในรูปกลุมตาราง
z ตารางประกอบดวยแถว
z แตละแถว แบงเปนคอลัมนใชในการเก็บขอมูลชนิดพืน ้ ฐาน
z แตละแถวมีไพรมารีคีย (Primary key)
z ตารางที่เกี่ยวพันกันเชื่อมโยงผานฟอเรนคีย (Foreign key)
z ฟอเรนคีย เก็บไพรมารีคย ี ของเรคอรดที่เกีย
่ วของซึ่งอยูใน
อีกตาราง

10 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ฐานขอมูลการสั่งซื้อของลูกคา

11 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ระบบจัดการฐานขอมูลแบบรีเลชันนอล
(Relational Database Management System)

z RDBMS = ซอฟตแวรสําหรับสรางและจัดการ
ฐานขอมูลแบบรีเลชันนอล
z มีความสามารถในการรักษาความถูกตองในการ
อางอิง (Referential Integrity) และอืน
่ ๆ
z ใชภาษา Structured Query Language (SQL)
เปนภาษามาตรฐานในการเขาถึงขอมูลในตาราง

12 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ฐานขอมูลแบบออบเจ็ครีเลชันนอล
(Object-relational databases)

z พัฒนามาจากฐานขอมูลแบบรีเลชันนอล
z ขอมูลเก็บในรูปกลุมตาราง แตคอลัมนสามารถเก็บออบเจ็ค
ได
z โดยใชชนิดขอมูลกําหนดโดยผูใช (user defined types)
z ใชระบบจัดการฐานขอมูลแบบออบเจ็ครีเลชันนอล (Object-
Relational Database Management System, ORDBMS)
– ใชภาษา SQL ที่ขยายใหจัดการชนิดขอมูลกําหนดโดยผูใชใน
ตารางได
– ไมรองรับการสืบทอดคุณสมบัติ

13 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ฐานขอมูลเชิงวัตถุ
(Object-Oriented Databases)

z เก็บออบเจ็คโดยตรง
z เอ็กซเทนต (Extent) = กลุมออบเจ็คของคลาสหนึ่ง
– แตละออบเจ็คมี object ID ซึ่งไมซ้ํากัน
z ใชระบบจัดการฐานขอมูลเชิงวัตถุ (Object-Oriented
Database Management System, OODBMS)
– การรักษาความถูกตองในการอางอิง (Referential Integrity)
สําคัญ
– รองรับการสืบทอดคุณสมบัติ

14 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การเลือกรูปแบบสําหรับจัดเก็บออบเจ็ค

z พิจารณาจุดเดนจุดดอย
z ชนิดขอมูลที่ตอ งจัดเก็บ
z ประเภทของระบบทีส ่ ราง
z รูปแบบทีใ่ ชในปจจุบัน
z ความตองการในอนาคต
z เงือ
่ นไขอืน
่ ๆ

15 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ขอดีและขอจํากัดของแฟมขอมูล

z ขอดี
– รองรับโดยภาษาโปรแกรมโดยตรง
– เหมาะกับการจัดเก็บชั่วคราว หรือระยะสั้น
– ออกแบบเพื่อใชงานเฉพาะดานไดดี
z ขอจํากัด
– การจัดการทุกอยางตองทําผานภาษาโปรแกรม
– การควบคุมการเขาถึงขึ้นกับระบบปฏิบัติการ
– มักมีขอมูลซ้าํ ซอน ทําใหเกิดขอผิดพลาดในการปรับปรุง
ขอมูล

16 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ขอดีของระบบจัดการฐานขอมูล

z รองรับการใชขอ
 มูลรวมกันระหวางแอพพลิเคชัน
z สามารถจัดการขอมูลแบบมีโครงสรางปริมาณมาก
ได
z รองรับการคนหาขอมูลแบบซับซอนสําหรับขอมูล
แบบมีโครงสราง
z สนุบสนุนการสรางรายงานแบบยากจากขอมูลทีเ่ ก็บ
z สามารถจัดการทรานแซกชันได

17 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ขอดีและขอจํากัดของระบบจัดการ
ฐานขอมูลแบบรีเลชันนอล

z ขอดี
– เทคโนโลยีเชิงพานิชยที่ไดรบ
ั การยอมรบแลว
– สามารถรองรับความตองการขอมูลที่หลากหลาย
z ขอจํากัด
– ไมรองรับแนวคิดเชิงวัตถุ ทําใหความขัดแยงดานชนิด
ขอมูลกับภาษาโปรแกรม และปญหาในการแปลงรูปแบบ
ระหวางออบเจ็คและตาราง

18 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ขอดีและขอจํากัดของระบบจัดการ
ฐานขอมูลแบบออบเจ็ครีเลชันนอล

z ขอดี
– รับขอดีสืบทอดจาก RDBMS
– รองรับชนิดขอมูลที่ซับซอน
z ขอจํากัด
– การรองรับแนวคิดเชิงวัตถุมีจํากัด ขึ้นอยูก
 บ
ั ผูผ
 ลิต

19 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ขอดีและขอจํากัดของระบบจัดการ
ฐานขอมูลเชิงวัตถุ

z ขอดี
– รองรับชนิดขอมูลที่ซับซอน
– รองรับแนวคิดเชิงวัตถุโดยตรง
• ขอจํากัด
– ยังไมคงที่
– ขาดบุคลากรที่เชียวชาญ และตองเรียนรูม
 าก

20 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แปลงออบเจ็คใหอยูในรูปแบบการ
จัดเก็บที่เลือก

21 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แปลงออบเจ็คเพื่อเก็บใน OODBMS

z เทียบออบเจ็คเปนออบเจ็คในตารางโดยตรง
z โอเปอเรชันอิมพลิเมนตโดยภาษาโปรแกรม

22 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แปลงออบเจ็คเพื่อเก็บใน ORDBMS

z กฎ 1: แปลงเอนทิตี้คอนกรีต คลาส เปนตาราง


z กฎ 2: แปลงแอททริบิวที่เก็บคาเดี่ยวเปนคอลัมนในตาราง
z กฎ 3: แปลงโอเปอเรชันเปน stored procedures หรือ
โปรแกรมโมดูล
z กฎ 4: แปลง aggregation และ association แบบ one-
to-one เปนคอลัมนที่เก็บ Object ID (หรือ PK) ของออบ
เจ็คในตารางที่เกี่ยวของ ทําทั้งสองดาน
z กฎ 5: แปลงแอททริบิวที่เก็บหลายคา เปนคอลัมนบรรจุคา
เปนชุด
z กฎ 6: แปลงกลุมแอททริบิวซ้ําเปนตารางใหม และสราง
one-to-many association จากตารางเดิมไปตารางใหม
23 OOAD 2/2550 ดร.สุขสถิต มีสถิตย
แปลงออบเจ็คเพื่อเก็บใน ORDBMS

z กฎ 7: แปลง aggregation และ association แบบ many-


to-many เปนคอลัมนทเี่ ก็บชุดของ Object ID (หรือ PK)
ของออบเจ็คในตารางที่เกี่ยวของ ทําทั้งสองดาน
z กฎ 8: แปลง aggregation และ association แบบผสม
(one-to-many หรือmany-to-one) ดาน 0..1, 1..1 เพิ่ม
คอลัมนเก็บชุดของ Object ID (หรือ PK) ดาน 0..*, 1..*
เพิ่มคอลัมนเก็บ Object ID (หรือ PK)
z กฎ 9: generalization/inheritance relationship
– a : เพิม
่ คอลัมนเก็บ Object ID (หรือ PK) ในตารางซุปเปอรคลาส
(0..1, 1..1) และซับคลาส (1..1)
– b : ยุบ inheritance เอาแอททริบิวของซุปเปอรคลาสมาใสไวใน
ซับคลาส แลวตัดซุปเปอรคลาสออก

24 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ตัวอยาง

25 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แปลงออบเจ็คเพื่อเก็บใน RDBMS

z กฎ 1: แปลงเอนทิตี้คอนกรีต คลาส เปนตาราง


z กฎ 2: แปลงแอททริบิวที่เก็บคาเดี่ยวเปนคอลัมนในตาราง
z กฎ 3: แปลงโอเปอเรชันเปน stored procedures หรือ
โปรแกรมโมดูล
z กฎ 4: กําหนด PK สําหรับแตละออบเจ็ค
z กฎ 5: แปลง aggregation และ association แบบ one-
to-one เปนคอลัมนที่เก็บ PK ของตารางที่เกี่ยวของ (ใช
FK) ทําทั้งสองดาน
z กฎ 6: แปลงแอททริบิวที่เก็บหลายคา และกลุม  แอททริบิว
ซ้ําเปนตารางใหม และสราง association แบบ one-to-
many จากตารางเดิมไปตารางใหม

26 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แปลงออบเจ็คเพื่อเก็บใน RDBMS
z กฎ 7: แปลง aggregation และ association แบบ many-to-many
เปนตารางใหมที่เชื่อมสองตารางเดิมเขาดวยกัน ตารางใหม โดยใช
คอลัมนบรรจุ PK จากสองตารางเดิม
z กฎ 8: แปลง aggregation และ association แบบผสม (one-to-
many หรือmany-to-one) เอา PK จากดาน 0..1, 1..1 ไปใสในคอลัมน
ใหมในตารางของดาน 0..*, 1..*
z กฎ 9: สรางตารางสําหรับคอลเลคชันคลาส มีสองคอลัมน คอลัมน
สําหรับเก็บ identifier ของออบเจ็คที่บรรจุคอลเลคชันและสําหรับออบ
เจ็คในคอลเลคชัน
z กฎ 10: generalization/inheritance relationship
– a : ให PK ของออบเจ็คในตารางซุปเปอรคลาส (0..1, 1..1) และ
ซับคลาส (1..1) ตรงกัน
– b : ยุบ inheritance เอาแอททริบิวของซุปเปอรคลาสมาใสไวใน
ซับคลาส แลวตัดซุปเปอรคลาสออก

27 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การแกปญหา inheritance

2 วิธี
1. แอททริบิวที่ถายทอดมา คัดลอกไวในทุกตารางของคลาส
ลูกหลาน ไมมีตารางสําหรับ abstract คลาส
z ขอดี – เร็วเพราะไมมีการ join
z ขอเสีย – ขนาดฐานขอมูลเพิ่มขึ้น ถามีการแกไข superclass ทุก
คลาสลูกหลาน ตองแกตาม
2. abstract คลาสมีตารางของตัวเอง ซึ่งตารางของคลาส
ลูกหลานอางอิง
z ขอดี – ลดความซ้ําซอน
z ขอเสีย – ถาคียรวมเปลี่ยนตองแกไขทั้งในตาราง abstract คลาส
และซับคลาส

28 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ตัวอยาง

29 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


แกปญหา inheritance

3 วิธี
1. สรางตารางสําหรับ super คลาสเทานั้น แอททริบิวของซับคลาส
กลายเปนแอททริบิวของ super คลาส และมีคา null เมื่อไมไดใช
z เหมาะ กรณีซับคลาสตางจากsuper คลาสในดานพฤติกรรมมากกวาแอ
ททริบิว ตองมีtype แอททริบิวสําหรับแยกแยะซับคลาส
2. สรางตารางสําหรับ ซับคลาสเทานั้น แอททริบิวของ super คลาสไวที่
ซับคลาส
z เหมาะ กรณี abstract super คลาส เพราะไมมีออบเจ็คของ super
คลาส
3. สรางตารางใหทั้ง super คลาส และซับคลาส แยกกัน ในการดึง
ขอมูลตองเขาถึงทั้ง ตารางsuper คลาส และซับคลาส อาจตองมี
type แอททริบิว

30 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


Relational Databases

z ขอมูลเก็บในกลุมตาราง
z เก็บชนิดขอมูลพื้นฐาน
z เก็บไดเฉพาะขอมูล เก็บพฤติกรรมไมได

31 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ปญหา Object to RDB

z ขอมูลในระบบที่เก็บในออบเจ็คตองแปลงจาก
โครงสรางขอมูลออบเจ็คเปนโครงสรางเชิงตาราง
z Coupling ระหวาง application และ RDBMS ตอง
ใหสว นนอยทีส
่ ุดของระบบรู interface ของระบบ
z แสดง inheritance ในฐานขอมูล ขอมูลใน
ฐานขอมูล ความสามารถในการอยูถาวรในภาษา
โปรแกรม
z การเก็บโอเปอเรชัน

32 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ODBMS

z Object DBMS
– เก็บออบเจ็คตามที่เปน
– ติดตอโดยใชภาษาโปรแกรมโดยตรง ฉะนัน
้ interface
เฉพาะจึงไมจําเปน
z ขอดี
– เก็บออบเจ็คไดในฐานขอมูล ( ไมเก็บโอเปอเรชัน)
– ไมตองแปลง
– ภาษา ODBMS ถูกรวมไวการ OOPL

33 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


OODBMS Support

z Allow repeating groups or multivalued


attributes
z Supports multimedia or other complex data
applications
– CAD/CAM
– Financial services
– Geographic information systems
– Health care

34 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


เพิ่มประสิทธิภาพการจัดเก็บออบเจ็ค
แบบถาวร

35 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ประสิทธิภาพ RDB

z การใชพน
ื้ ที่ในการจัดเก็บ
– ไมมีขอมูลซ้ําซอน
z ลดการเสียพื้นที่
z ลดขอความขัดแยงระหวางขอมูล
– มีคาวางในตารางนอย
z ลดปญหาในการแปลความหมาย
z ความเร็วในการเขาถึง
– ลดเวลาการเขาถึงที่ขอมูล ซึ่งอาจแยกอยูในหลายตาราง
– ลดการ join ตาราง

36 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การทํานอมอลไลเซชัน (Normalization)

z 1NF
– คอลัมนในแตละแถวเก็บคาเดียว
z 2NF
– ทุกคอลัมนทไ
ี่ มใชคียขึ้นกับทุกคียทรี่ วมเปน PK
z 3NF
– ไมมีคอลัมนที่ขื้นกับคาในคอลัมนที่ไมใช PK

37 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การเพิ่มความเร็วในการเขาถึง

z ดีนอมอลไลเซชัน (Denormalization)
– เพิ่มขอมูลของตารางหนึ่งเขาไปในอีกตาราง เพื่อเพิ่ม
ความเร็ว และลดการ join
– ควรทําดีนอมอลไลเซชัน
z ตารางอางอิง (Lookup Tables)
z ความสัมพันธแบบ one-to-one
z รวม attribute ของตารางแม (parent) ไวในตารางลูก (child)

38 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ตัวอยาง

39 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


การทําอินเด็กซ (Indexing)
z อินเด็กซ (Index) = ตารางขนาดเล็กที่บรรจุคาจากคอลัมนในตาราง
และตําแหนงของคานั้นในตาราง
z การคนหาสามารถใชอินเด็กซเพื่อหาตําแหนงของเรคอรดตัวที่ตองการ
ได
z a table can have an unlimited number of indexes but too many
can add overhead

40 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


Indexing Example

41 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ประมาณการขนาดพื้นที่จัดเก็บขอมูล

z ขนาดเรคอรด = ผลรวมของคาเฉลียของความ
กวางแตละคอลมน
z บวกพื้นทีเ่ พิ่มเติม (ผูผลิตอาจประเมินไวแลว)
z ประมาณการจํานวนเรคอรดในปจจุบัน และอัตรา
การเพิ่ม

42 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ออกแบบคลาสสําหรับเขาถึงและ
จัดการขอมูล

43 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ออกแบบคลาสสําหรับจัดการขอมูล

z ออกแบบคลาสดําเนินการเขาถึงและจัดการขอมูล
(Data access and manipulation class)
– เปนตัวกลางในการแปลงระหวางออบเจ็คในแหลงเก็บ
ขอมูล และออบเจ็คในระบบ
z แยกฟงกชนั จัดการขอมูลจากคลาสของออบเจ็คใน
ระบบ
z สําหรับแตละคลาสในระบบมีคลาส DAM สําหรับ
ติดตอกับตารางทีเ่ กีย
่ วของในฐานขอมูล (เพิ่ม ลบ
แกไข)
44 OOAD 2/2550 ดร.สุขสถิต มีสถิตย
ออกแบบคลาสสําหรับจัดการขอมูล

45 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


ตัวอยาง

46 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


Data Sizing Example

47 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


สรุป
z Choose an object-persistent format
– Files (sequential or Random Access)
– Databases (RDBMS, ORDBMS, OODBMS)
z Map problem domain objects to Data
z Optimizing object storage
– Normalization
– Denormalization, clustering, Indexes
z Design Data Access and Manipulation Classes

48 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


กรณีศึกษา

49 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


Class Diagram

50 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


Order Table OrderItem Table
Customer Table
-OrderPrimaryKey -OrderPrimaryKey
-CustPrimaryKey
-CustPrimaryKey -CDPrimaryKey
1..1 0..* 1..1 1..*

1..1 0..*
0..1
Review Table
1..1
OverseasOrder Table 0..* -CDPrimaryKey

-OrderPrimaryKey CD Table MktInfo Table


-CDPrimaryKey -CDPrimaryKey 1..1
1..1 1..1
1..1
1..1
0..* ArtistInfo Table

0..* -CDPrimaryKey
Tracks Table
-CDPrimaryKey
-TracksPrimaryKey

51 OOAD 2/2550 ดร.สุขสถิต มีสถิตย


52 OOAD 2/2550 ดร.สุขสถิต มีสถิตย

You might also like