Profilo di LaployLoy Business Intelligenc...FotoBlogElenchiAltro Strumenti Guida

Blog


06 febbraio

แผนภูมิ ER: ตอน 2

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แผนภูมิ ER: ตอน 2

 

5.2. นิยามกุญแจ
ในวิชาฐานข้อมูลสัมพันธ์เราใช้คำว่าดรรชนี (index) และกุญแจ (key) กับแนวคิดที่คล้ายกัน ดรรชนีในฐานข้อมูลเหมือนดรรชนีในหนังสือ คือมีไว้ค้นหาหัวข้อที่ต้องการในหนังสือได้อย่างรวดเร็ว (โดยไม่ต้องไล่หาทีละหน้า)  ในทำนองเดียวกันดรรชนีในฐานข้อมูลคือสำเนาของข้อมูลบางส่วนในฐานข้อมูล เราสามารถสร้างดรรชนีจากคอลัมน์ใดของตารางก็ได้ ส่วนกุญแจเป็นสิ่งที่เป็นนามธรรมกว่าดรรชนี เพราะกุญแจเองก็เป็นดรรชนีได้ด้วยเช่นกัน กุญแจหมายถึงคอลัมน์ในตารางซึ่งทำหน้าที่เชื่อมโยงตารางต่างๆ เข้าด้วยกัน

กุญแจสามารถทำหน้าที่เป็นได้ทั้งกุญแจและเป็นดรรชนี เมื่อทำหน้าที่เป็นดรรชนีมันคัดลอกคอลัมน์ในตารางไปทำเป็นโครงสร้างที่ใช้ค้นข้อมูลได้อย่างมีประสิทธิภาพ (เช่นเป็นโครงสร้างแบบต้นไม้ไบนารี) เมื่อทำหน้าที่เป็นกุญแจมันใส่เครื่องหมายพิเศษไว้ในคอลัมน์เพื่อระบุว่าคอลัมน์นั้นทำหน้าที่เชื่อมโยงกับตารางอื่นๆ กุญแจมีสามแบบคือกุญแจหลัก (Primary Key ย่อ PK) กุญแจเอกลักษณ์ (Unique Key ย่อ UK) และกุญแจนอก (Foreign Key ย่อ FK)

 

5.2.1. นิยามกุญแจหลัก
PK ทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง การแยกแยะนี้เป็นสิ่งจำเป็น เพราะหากไม่มีเราจะไม่สามารถค้นหาข้อมูลเฉพาะแถวที่ต้องการได้ ภาพ 5-8 แสดง PK ของตาราง Author และตาราง Publication

008

ภาพ 5-8 : กุญแจหลักทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง

 

5.2.2. นิยามกุญแจเอกลักษณ์
UK เหมือน PK คือทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง โดยค่าของ UK จะไม่มีการซ้ำกัน ชนิดข้อมูลของ UK มักเป็นแบบเลขจำนวนเต็ม (สาเหตุที่ไม่ใช้ชื่อนักเขียนหรือชื่อหนังสือเป็นค่าของ UK ผู้เขียนจะอธิบายในบทต่อไป) เนื่องจากเราใช้ตัวเลขแทนชื่อเราจึงเรียกกุญแจเอกลักษณ์ได้อีกอย่างหนึ่งว่ากุญแจแทน (Surrogate Key ย่อ SK)

ยกตัวอย่างเช่นตาราง Author มีคอลัมน์ AUTHOR_ID เป็น UK เพราะมันมีค่าเป็นตัวเลขจำนวนเต็มซึ่งแทนชื่อของผู้เขียน (แทนค่าของคอลัมน์ NAME) แม้โอกาสน้อยมากที่จะมีผู้เขียนชื่อซ้ำกันแต่ SK ก็ยังมีประโยชน์ในการเพิ่มประสิทธิภาพ UK ต่างจาก PK ที่เราใช้เพื่อกำหนดความสัมพันธ์ระหว่างตาราง แต่เราจะไม่ใช้ UK เพื่อการนี้

ต่อไปนี้จะยกตัวอย่างตารางที่มี PK และ UK คิวรีในภาพ 5-9 ทำหน้าที่สร้างตาราง Author

009

ภาพ 5-9 : คิวรีทำหน้าที่สร้างตาราง Author

 

โปรดสังเกตว่าผู้เขียนกำหนดให้คอลัมน์ author_id เป็น PK และกำหนดให้คอลัมน์ name เป็น UK (คือไม่อนุญาตให้มีข้อมูลซ้ำกัน) เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลนักเขียนคนเดียวกันซ้ำมากกว่าหนึ่งแถว หรือป้องกันไม่ให้นักเขียนสองคนใช้นามปากกาซ้ำกัน

 

5.2.3. นิยามกุญแจนอก
FK คือสำเนาของ PK ที่ถูกคัดลอกจาก PT ไปใส่ CT เพื่อให้ทั้งสองตารางสามารถเชื่อมโยงกันได้ FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT

ในภาพ 5-10 จะเห็นตาราง Publication มี FK ชื่อ author_id (FK) เชื่อมโยงกับตาราง Author เพราะนักเขียนหนึ่งคนอาจเขียนหนังสือไว้หลายเล่ม ยกตัวอย่างเช่นผู้เขียนชื่อ Larry Niven (นักเขียนนิยายวิทยาศาสตร์ที่ผู้เขียนชื่นชอบ) มีรหัสประจำตัว 4 และมีหนังสือสี่เล่ม ดังนั้นในตาราง Author จะมี author_ID ที่เป็น 4 อยู่หนึ่งแถวและในตาราง Publication จะมี author_ID เป็น 4 อยู่สี่แถว

ดูภาพ 5-10 อีกครั้ง โปรดสังเกตว่าตาราง CoAuthor มีการเชื่อมโยงไปยังสองตาราง คือตาราง Author และตาราง Publication ที่เป็นเช่นนั้นเพราะผู้เขียนร่วมอาจเขียนหนังสือร่วมกับนักเขียนมากกว่าหนึ่งคน และในขณะเดียวกันก็อาจมีหนังสือ (ที่ตนเองร่วมเขียน) ได้มากกว่าหนึ่งเล่มด้วย ดังนั้นตาราง CoAuthor จึงมี FK ถึงสองอัน อันแรกชื่อ author_id (FK) ใช้เชื่อมโยงกับตาราง Author และอันที่สองคือ publicaction_ID เพื่อใช้เชื่อมโยงกับตาราง Publication

010

ภาพ 5-10 : FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT

 

ภาพ 5-11 เป็นคิวรีเพื่อสร้างตาราง Publication ซึ่งแสดงให้เห็นวิธีสร้างตารางที่มีกุญแจครบทั้งสามแบบ คือมีทั้ง PK, FK และ UK  

 

011

ภาพ 5-11 : คิวรีเพื่อสร้างตาราง Publication

โปรดสังเกตว่าคิวรีในภาพ 5-11 ผู้เขียนกำหนดให้คอลัมน์ publication_id เป็น PK ส่วน subject_id และ author_id เป็น FK เพื่อใช้เชื่อมโยงกับตาราง Subject และ Author ตามลำดับ ส่วนคอลัมน์ title ถูกกำหนดให้เป็น UK เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลชื่อหนังสือซ้ำกัน

 

5.3. สาธิตการออกแบบฐานข้อมูลอย่างง่าย
ในหัวข้อนี้ผู้เขียนจะแสดงวิธีออกแบบตารางสองตารางที่มีการเชื่อมโยงกันอย่างง่ายๆ สมมุติว่าเรามีข้อมูลอย่างที่เห็นในภาพ 5-12 ข้อมูลแต่ละบรรทัดคือข้อมูลของเพลงหนึ่งเพลง คอลัมน์แรก Band name คือชื่อวงดนตรี คอลัมน์ที่สอง Track คือชื่อเพลง คอลัมน์สุดท้าย Description คือคำวิจารณ์ของเพลงนั้น

012

ภาพ 5-12: ข้อมูลเพื่อสาธิตการออกแบบฐานข้อมูลอย่างง่าย

 

สมมุติว่าผู้เขียนถูกสั่งให้ทำสิ่งต่างๆ ดังนี้
1.    นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย
2.    กำหนด PK ให้แก่ตารางทั้งสอง
3.    กำหนด FK ใน CT

 

5.3.1. ตัวอย่างการออกแบบ
ข้อมูลดิบมีสามคอลัมน์ เราต้องสร้างตารางสองตารางจากสามคอลัมน์นี้ ตารางที่ 1 มีหนึ่งคอลัมน์ ตารางที่ 2 มีสองคอลัมน์ การสร้างความสัมพันธ์แบบหนึ่งต่อหลายทำได้โดยดูข้อมูลที่ซ้ำกัน ในภาพ 5-12 อาจดูยากเพราะข้อมูลไม่ได้เรียงแต่กระจายอยู่อย่างไม่มีแบบแผน

การออกแบบตารางตามโจทย์สามข้อนี้มีสิ่งที่ควรพิจารณาดังนี้
1.    วงดนตรีหนึ่งวงปรกติจะมีเพลงมากกว่าหนึ่งเพลง เนื่องจากเราต้องการเชื่อมโยงความสัมพันธ์แบบหนึ่งต่อหลายโดย  ดังนั้น "หนึ่ง" คือ "หนึ่งวงดนตรี" และ "หลาย" คือ "หลายเพลง"
2.    ชื่อวงในคอลัมน์แรกมีการซ้ำกัน แต่คอลัมน์อื่นๆ ไม่มีข้อมูลซ้ำกันเลย ข้อเท็จจริงนี้สนับสนุนแนวคิดในข้อที่หนึ่ง
3.    เนื่องจากคอลัมน์แรกมีข้อมูลซ้ำกัน จึงเหมาะนำมาสร้างเป็น PT คอลัมน์ที่เหลืออีกสองคอลัมน์ไม่มีข้อมูลซ้ำจึงเหมาะนำมาใช้สร้างเป็น CT
4.    ข้อมูลชื่อเพลงจะต้องไม่มีการซ้ำกัน

ภาพข้างล่างแสดงทางเลือกสามแบบในการออกแบบ ทางเลือกที่ 3 ดีที่สุดเพราะ SK ถูกนำมาใช้เป็น PK และ FK  นั้นคือเรากำหนด band_id และ track_id เป็นเลขจำนวนเต็มเพื่อใช้เป็นตัวเชื่อมโยงแทนที่จะใช้ชื่อวงหรือชื่อเพลง ทั้งทางเลือกที่ 3 และที่ 2ใช้การกำหนดความสัมพันธ์แบบจำแนกไม่ได้ คือ CT ไม่ขึ้นกับ PT คือ PK ของ CT ไม่ใช่กุญแจเดียวกันกับ PK ในตารางแม่

013

ภาพ 5-13 : แผนภูมิ ER แสดงการออกแบบความสัมพันธ์ระหว่างตาราง Band และ Track

 

ส่วนทางเลือกที่ 2 ไม่ค่อยดี (แต่ก็ยังดีกว่าทางเลือกที่ 1) เพราะ PK ในตาราง Band และ FK ในตาราง Track ไม่ได้ใช้ SK (คือไม่ได้ใช้เลขรหัสแทนชื่อวง) จึงมีประสิทธิภาพต่ำกว่าทางเลือกที่ 3 ส่วนทางเลือกที่ 1 มีประสิทธิภาพต่ำที่สุดเพราะใช้ชื่อวง (band_name) เป็นตัวเชื่อมโยง คือใช้ชื่อวงเป็นทั้ง PK ในตาราง Band และ PK ในตาราง Track ด้วย การทำเช่นนี้ทำให้ชื่อวงมีฐานะเป็นกุญแจร่วม (Composite Key หรือ Compound Key ย่อ CK) คือมีข้อมูล (ชื่อวง) ซ้ำกันอยู่ในทั้งสองตารางซึ่งไม่ดี เพราะมีข้อมูลซ้ำกันจำนวนมากซึ่งเป็นสิ่งที่เราต้องการหลีกเลี่ยงตั้งแต่แรก

 

5.3.2. นิยามบูรณภาพสัมพันธ์
บูรณภาพสัมพันธ์ (Referential Integrity ย่อ RI)คือการควบคุมความคงเส้นคงว่าของความสัมพันธ์ระหว่างค่าของ PK และ FK  ซึ่งเป็นค่าที่เราใช้เชื่อมโยง PT และ CT เข้าด้วยกัน การควบคุมทำได้โดยใช้กลไกที่เรียกว่าข้อบังคับ (constraint) โปรแกรม RDBMS ส่วนใหญ่จะมีกลไกนี้ฝังมาในตัวอยู่แล้ว ยกตัวอย่างเช่นใน PT  คอลัมน์ที่เป็น PK จะมีค่าซ้ำกันไม่ได้ ตัวอย่างในหัวข้อที่ผ่านมา PT คือ Band มี PK เป็นชื่อวงดนตรี ค่านี้จะซ้ำกันไม่ได้ เพราะค่านี้ถูกใช้เป็น FK ใน CT  ดังนั้นใน PT จึงมีข้อมูลนี้ได้เพียงแถวเดียวเท่านั้น

เพื่อคงไว้ซึ่ง RI การออกแบบฐานข้อมูลจำเป็นต้องครอบคลุมประเด็นต่างๆ ต่อไปนี้
•    ตารางที่เก็บ PK จะถูกถือว่าเป็น PT และตารางที่เก็บ FK จะถูกถือว่าเป็น CT
•    เมื่อแทรกข้อมูลแถวใหม่เข้าสูง CT ค่าของ FK ของข้อมูลนั้นต้องเป็นค่ามีปรากฏอยู่ใน PT หรือจะเป็นค่า  NULL ก็ได้
•    FK จะมีค่าเป็น  NULL ก็ได้ แต่ PK จะมีค่าเป็น NULL ไม่ได้
•    การเปลี่ยนแปลงค่าใน PT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ PK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะปรับแก้ค่าของ FK ใน CT ที่เชื่อมโยงอยู่ทั้งหมดด้วย
•    การเปลี่ยนแปลงค่าใน CT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ FK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะทำให้ค่าของ FK เป็น NULL หรือมีการตรวจสอบค่า PK ใน PT ด้วย
•    การลบแถวใน PT เป็นสิ่งต้องห้าม นอกเสียจากว่าการลบนั้นจะดำเนินการกับ CT ทุกตาราง คือลบแถวข้อมูลใน CT ทุกแถวที่มี FK ตรงกับแถวข้อมูล PT ที่ถูกลบ

 

5.4. สรุปท้ายบท
แผนภูมิ ERD เป็นเครื่องมือช่วยออกแบบฐานข้อมูลที่ใช้งานได้ง่าย ปัจจุบันมีซอฟต์แวร์ที่ช่วยให้ท่านสร้างแผนภูมิ ERD บนจอภาพแทนการร่างในกระดาษและสามารถผลิตโค้ดภาษา SQL ให้โดยอัตโนมัติ แผนภูมิ ERD แสดงความสัมพันธ์ระหว่างเอนทิตีหรือตาราง ความสัมพันธ์มีหลายแบบ อาทิ หนึ่งต่อหนึ่ง หนึ่งต่อหลาย ความสัมพันธ์ระหว่างตารางมีกุญแจหรือคีย์เป็นสิ่งเชื่อมโยง กุญแจมีหลายแบบ อาทิ กุญแจหลัก กุญแจนอก ในบทต่อๆ ไปท่านจะได้เรียนเรื่องเหล่านี้ในรายละเอียดลึกลงไปอีก

ในบทหน้าท่านจะได้เรียนเรื่องนอร์มัลไลเซชัน ซึ่งเป็นหัวข้อสำคัญอีกหัวข้อหนึ่งในเรื่องการออกแบบฐานข้อมูล

 

5.5. คำถามท้ายบท
1.    ERD มีประโยชน์อย่างไร
2.    ตีนกามีหน้าที่อะไร
3.    ความสัมพันธ์แบบหนึ่งต่อหนึ่งพบได้ในกรณีใด
4.    ความสัมพันธ์แบบหลายต่อหลายคืออะไร
5.    สัญลักษณ์รูปวงกลมและขีดหนึ่งขีดใช้แทนอะไร
6.    ความสัมพันธ์แบบจำแนกได้คืออะไร
7.    ความสัมพันธ์แบบจำแนกไม่ได้เป็นอย่างไร
8.    ตารางผูกพันคืออะไร
9.    กุญแจหลักมีหน้าที่อะไร
10.    กุญแจเอกลักษณ์คืออะไร

 

5.6. แบบฝึกหัดท้ายบท
พิจารณาข้อมูลในภาพ 5-13 แล้วทำสิ่งต่างๆ ดังนี้
1.    นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย
2.    กำหนด PK ให้แก่ตารางทั้งสอง
3.    กำหนด FK ใน CT

 

014

ภาพ 5-13 : ตัวอย่างข้อมูลสำหรับทำแบบฝึกหัดท้ายบท

 

แผนภูมิ ER: ตอน 1

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แผนภูมิ ER: ตอน 1

 

บทที่ผ่านมาท่านได้เรียนเรื่องการออกแบบฐานข้อมูลเบื้องต้นไปแล้วใน ในบทนี้ท่านจะได้เรียนวิธีใช้แผนภูมิ ER เพื่อช่วยออกแบบฐานข้อมูล และจะได้เรียนนิยามความหมายของคำสำคัญต่างๆ ที่เกี่ยวข้องกับการออกแบบฐานข้อมูล เช่น ความสัมพันธ์แบบต่างๆ ตารางแม่ ตารางลูก กุญแจชนิดต่างๆ และตอนท้ายบทผู้เขียนจะสาธิตการออกแบบฐานข้อมูลอย่างง่ายให้ดูหนึ่งแบบ

หัวข้อต่างๆ ที่ท่านจะได้เรียนในบทนี้คือ
•    นิยามแผนภูมิอีอาร์
     o    ตีนกา
     o    ความสัมพันธ์แบบหนึ่งต่อหนึ่ง
     o    ความสัมพันธ์แบบหนึ่งต่อหลาย
     o    ความสัมพันธ์แบบหลายต่อหลาย
     o    ความสัมพันธ์แบบศูนย์ หนึ่ง และหลายๆ
     o    ตารางแม่ ตารางลูก
     o    ความสัมพันธ์ที่จำแนกได้และไม่ได้
     o    นิยามกุญแจ
     o    นิยามกุญแจหลัก
     o    นิยามกุญแจเอกลักษณ์
     o    นิยามกุญแจนอก
•    สาธิตการออกแบบฐานข้อมูลอย่างง่าย
     o    ตัวอย่างการออกแบบ
     o    นิยามบูรณภาพสัมพันธ์

 

5.1. นิยามแผนภูมิอีอาร์
หากเครื่องมือที่ดีที่สุดของนักเขียนโปรแกรมคือโฟลชาร์ท เครื่องมือที่ดีที่สุดของนักออกแบบฐานข้อมูลก็คือแผนภูมิอีอาร์ (Entity / Relation Diagram ย่อ ERD) เพราะ ERD ช่วยให้เราแสดงภาพความสัมพันธ์ภายในเอนทิตี และระหว่างเอนทิตี ได้เป็นอย่างดี คำว่าเอนทิตี (entity) ในการออกแบบฐานข้อมูลก็คือตารางในฐานข้อมูลนั่นเอง ท่านได้เรียนเรื่อง ERD ไปแล้วเล็กน้อยในบทก่อนหน้านี้ ในบทนี้ท่านจะได้เรียนวิธีอ่านและเขียน ERD เพิ่มเติม

 

001

ภาพ 5-1 : แผนภูมิอีอาร์หรือ ERD เป็นแผนภูมิง่ายๆ ไม่มีอะไรซับซ้อน เป็นเครื่องมือสำหรับนักออกแบบฐานข้อมูลเพื่อใช้แสดงภาพความสัมพันธ์ในเอนทิตี และระหว่างเอนทิตี

 

5.1.1. ตีนกา
คำว่าตีนกาในหัวข้อนี้ไม่ใช่รอยเหี่ยวย่นข้างดวงตา แต่เป็นสัญลักษณ์ใน ERD ที่ใช้เพื่อแสดงความสัมพันธ์แบบหนึ่งต่อหลาย (one-to-many) หรือหลายต่อหลาย (many-to-many) โดยในด้านที่เป็น "หลาย" จะใช้สัญลักษณ์รูป "ตีนกา" ซึ่งเป็นรูปเส้นสามแฉก เหมือนอย่างรอยที่เกิดหากท่านจับตีนกามาจุ่มหมึก (ถ้ามันยอม) แล้วซับลงบนกระดาษ  (ผู้เขียนไม่แน่ใจเหมือนกันว่าตีนของอีกาอันที่จริงแล้วมีนิ้วอยู่กี่นิ้ว แต่สัญลักษณ์ใน ERD จะเป็นเส้นสามเส้น)

002

ภาพ 5-2 : ตีนกาคือสัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์ใน ERD ในด้านที่เป็น "หลาย" ยกตัวอย่างเช่นในภาพนี้ แสดงความสัมพันธ์แบบ "หนึ่งต่อหลาย" ด้านที่เป็น "หนึ่ง" คือตาราง Author ด้านที่เป็น "หลาย" คือตาราง Publication นั่นคือนักเขียน (Author) หนึ่งคนอาจมีหนังสือ (Publication) ได้หลายเล่ม

 

5.1.2. ความสัมพันธ์แบบหนึ่งต่อหนึ่ง
ความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นแบบที่ไม่ค่อยพบบ่อยนัก นอกจากจะจงใจออกแบบให้เป็นเช่นนั้น ท่านจะพบความสัมพันธ์แบบหนึ่งต่อหนึ่งได้ในการแปลงนอร์มัลฟอร์มระดับที่สี่เพื่อขจัดค่า NULL ออกจากตารางแม่ (เพื่อประหยัดเนื้อที่ในฮาร์ดดิสก์ ดูรายละเอียดในบทต่อไป)  เนื่องจากปัจจุบันฮาร์ดดิสก์มีความจุสูงมากและมีราคาถูก และใน SQL2008 มีชนิดข้อมูลที่เปลี่ยนความกว้างได้ ความสัมพันธ์แบบหนึ่งต่อหนึ่งจึงไม่เป็นที่นิยมเพราะมีประสิทธิภาพต่ำ

สัญลักษณ์แทนความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นขีดเพียงขีดเดียว

003

ภาพ 5-3 : ความสัมพันธ์แบบหนึ่งต่อหนึ่งแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยอยู่ในทั้งสองตาราง สัญลักษณ์จึงใช้ขีดๆ เดียว

 

5.1.3. ความสัมพันธ์แบบหนึ่งต่อหลาย
ความสัมพันธ์แบบหนึ่งต่อหลายเป็นรูปแบบที่พบได้บ่อยที่สุดในฐานข้อมูลสัมพันธ์ นั่นคือข้อมูลหนึ่งแถวในตาราง ก เชื่อมโยงกับข้อมูลหลายแถวในตาราง ข ยกตัวอย่างเหมือนที่เรียนไปแล้วในหัวข้อตีนกา ตาราง Author เก็บข้อมูลนักเขียนหนึ่งแถวคือนักเขียนหนึ่งคน นักเขียนคนเดียวอาจเขียนหนังสือไว้หลายเล่ม ดังนั้นในตาราง Publication ซึ่งเก็บข้อมูลหนังสือหนึ่งเล่มต่อหนึ่งแถวจึงอาจเชื่อมโยงกับตาราง Authorในแบบหนึ่งต่อหลาย

004

ภาพ 5-4 : ความสัมพันธ์แบบหนึ่งต่อหลายแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยในตาราง ก และหลายหน่วยในตาราง ข ตรงตาราง ก จึงใช้รูปขีดๆ เดียว ส่วนตาราง ข ซึ่งมีข้อมูลหลายหน่วยจะใช้สัญลักษณ์รูปตีนกา

 

5.1.4. ความสัมพันธ์แบบหลายต่อหลาย
ความสัมพันธ์แบบหลายต่อหลายหมายถึงทุกๆ แถวในตาราง ก อาจเชื่อมโยงกับหลายๆ แถวในตาราง ข ตัวอย่างคลาสสิกของความสัมพันธ์แบบนี้คือ ตารางเก็บรายชื่อนักเรียนกับตารางเก็บรายชื่อวิชา ปรกตินักเรียนทุกคนจะลงทะเบียนเรียนมากกว่าหนึ่งวิชา (คือไม่มีนักเรียนคนใดลงทะเบียนเรียนเพียงวิชาเดียว) และในทางกลับกัน ทุกๆ วิชาจะมีนักเรียนเข้าเรียนมากกว่าหนึ่งคน (ไม่มีวิชาใดที่มีนักเรียนลงทะเบียนเรียนเพียงคนเดียว) ผลลัพธ์คือความสัมพันธ์แบบหลายต่อหลายระหว่างนักเรียนกับวิชาต่างๆ

การออกแบบฐานข้อมูลให้มีตารางซึ่งมีความสัมพันธ์แบบหลายต่อหลายไม่ได้ทำให้เกิดผลเสียอะไร แต่ถ้าโปรแกรมประยุกต์หรือผู้ใช้ต้องการค้นหานักเรียนแต่ละคนในแต่ละรายวิชา เราจะต้องสร้างตารางขึ้นอีกอันเพื่อการนี้ ยกตัวอย่างเช่นตารางแรกคือ A ตารางที่สองคือ B ตารางที่สามที่ต้องสร้างคือ AB อันเป็นตารางที่รวมข้อมูลจาก A และ B โปรดทราบว่าตาราง AB ไม่ใช่สิ่งจำเป็น เราจะสร้างก็ต่อเมื่อโปรแกรมประยุกต์หรือผู้ใช้ต้องการเท่านั้น

005

ภาพ 5-5 : ความสัมพันธ์แบบหลายต่อหลายสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตาราง ในภาพนี้ตาราง Publisher เก็บข้อมูลสำนักพิมพ์ ตาราง Publication เก็บข้อมูลหนังสือ สองตารางนี้มีความสัมพันธ์แบบหลายต่อหลาย จึงสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตารางคือ Edition

 

5.1.5. ความสัมพันธ์แบบศูนย์ หนึ่ง และหลายๆ
ความสัมพันธ์ระหว่างตารางต่างๆ อาจเป็นแบบศูนย์ หนึ่ง และหลายๆ ศูนย์หมายถึงไม่มีบรรทัดข้อมูลในตารางเป้าหมายเลย ศูนย์และหนึ่งหมายถึงอาจมีหรือไม่มีข้อมูลก็ได้ หนึ่งโดยไม่มีศูนย์ (คือมีแค่หนึ่งเท่านั้น) หมายถึงจำเป็นต้องมีข้อมูลหนึ่งบรรทัด

ยกตัวอย่างเช่นความสัมพันธ์ระหว่างตาราง Rank และตาราง Edition โดยตาราง Rank เก็บข้อมูลการจัดอันดับของหนังสือ (ว่าได้รับความนิยมเพียงใด) และตาราง Edition เก็บข้อมูลการจัดพิมพ์ในแต่ละครั้ง เนื่องจากในตาราง  Edition จะมีข้อมูลหนังสือเรื่องหนึ่งอยู่หนึ่งแถวมันจึงมีความสัมพันธ์แบบ "หนึ่ง" ส่วนตาราง Rank อาจไม่มีข้อมูลหนังสือเล่มนั้นอยู่เลย หรืออาจข้อมูลหนังสือเล่มนั้นอยู่หนึ่งแถว มันจึงมีความสัมพันธ์แบบ "ศูนย์และหนึ่ง"

006

ภาพ 5-6 : สัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์แบบศูนย์และหนึ่งคือรูปวงกลม (แทนศูนย์) และขีดหนึ่งขีด (แทนหนึ่ง) อย่างที่เห็นทางกรอบซ้าย ซึ่งแสดงความสัมพันธ์ระหว่างตาราง Rank และ Edition โดยในฝั่ง Rank เป็นแบบศูนย์และหนึ่ง ขณะที่ในฝั่ง Edition เป็นแบบหนึ่ง ดังนั้นความสัมพันธ์ระหว่างตาราง Rank และ Edition จึงเป็นแบบหนึ่งต่อศูนย์และหนึ่ง  ส่วนสัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์แบบศูนย์และหนึ่งหรือหลายๆ คือรูปตีนกาบวกขีดและวงกลมอย่างที่เห็นด้านบนของตารง Edition ทางกรอบขวาในภาพ

 

5.1.6. ตารางแม่ ตารางลูก
ในแบบจำลองฐานข้อมูลสัมพันธ์ท่านจะได้พบความสัมพันธ์แบบตารางแม่ (Parent Table ย่อ PT) และตารางลูก (Child Table ย่อ CT)อยู่เสมอ  นิยามของ PT คือตารางซึ่งมีข้อมูลที่ถูกอ้างถึงใน CT ส่วนนิยามของ CT คือตารางที่อ้างถึงข้อมูลใน PT ยกตัวอย่างเช่น ในภาพ 5-6 ตาราง Publication เป็น PT ของตาราง Edition และพูดได้อีกอย่างหนึ่งว่าตาราง Edition เป็น CT ของตาราง Publication

วิธีดูว่าตารางใดเป็น PT ตารางใดเป็น CT ให้ดูที่ FK หากตาราง ก มี FK ที่เชื่อมโยงไปยังตาราง ข จะถือว่าตาราง ก เป็น CT ของตาราง ข หรือพูดได้อีกอย่างหนึ่งว่าตาราง ข เป็น PT ของตาราง ก ยกตัวอย่างเช่น ในภาพ 5-6 ตาราง Edition มี FK คือคอลัมน์ publication_id ที่เชื่อมโยงไปยังคอลัมน์ชื่อเดียวกันในตาราง Publication

 

5.1.7. ความสัมพันธ์ที่จำแนกได้และไม่ได้
ฐานข้อมูลสัมพันธ์มักมีตารางจำนวนมากเชื่อมโยงกันด้วยความสัมพันธ์แบบกุญแจหลักหรือไพร์มารีคีย์ (PK) และกุญแจนอกหรือฟอร์เรนคีย์ (FK) ความสัมพันธ์เกิดระหว่าง PT และ CT ความสัมพันธ์ที่ว่านี้มีหลายแบบได้แก่


•    ความสัมพันธ์แบบจำแนกได้: คือความสัมพันธ์ที่ CT ถูกแยกแยะโดย PT ในบางส่วน และถูกกำหนดความผู้พันธ์ในอีกบางส่วน ยกตัวอย่างเช่นในภาพ 5-7 ตาราง CoAuthor ซึ่งเก็บชื่อผู้เขียนร่วม มี PT สองตารางคือ Author และตาราง Publication โดยในตาราง CoAuthor จะมี PK เดียวกับ PT ทั้งสอง

•    ความสัมพันธ์แบบจำแนกไม่ได้: คือความสัมพันธ์ที่ CT ไม่ขึ้นกับ PT นั่นคือ PK ของ CT ไม่ใช่กุญแจเดียวกันกับ PK ของ PT

•    ตารางผูกพัน: คือตารางที่มี FK เป็น PK ที่มาจาก PT เช่นตาราง CoAuthor ในภาพ 5-7

•    ตารางไม่ผูกพัน: หรือเอนทิตีอิสระคือตารางที่ไม่มี FK ที่เป็น PK ใน PT เช่นตาราง Publication ในภาพ 5-7

007

ภาพ 5-7 : แผนภูมิ ER นี้แสดงความสัมพันธ์ที่จำแนกได้และไม่ได้

 


05 febbraio

วิธีออกแบบฐานข้อมูล : ตอน 2

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

วิธีออกแบบฐานข้อมูล : ตอน 2

 

4.4. การออกแบบฐานข้อมูลในโลกจริง
ในโลกของความเป็นจริงการออกแบบฐานข้อมูลจะต้องคำนึงถึงผู้ใช้งานเป็นหลัก โดยการกระทำต่างๆ ข้อผู้ใช้จะมีผลมาจากกฎทางธุรกิจ กฎทางธุรกิจคือสิ่งที่เกิดจากธรรมชาติของกิจกรรมในหน่วยงานนั้นๆ เช่นบริษัทที่ผลิตไอศกรีมย่อมมีกฎทางธุรกิจที่แตกต่างจากธนาคาร  กฎทางธุรกิจคือตัวกำหนดการทำงาน ยกตัวอย่างเช่นหากกฎทางธุรกิจกำหนดไว้ว่าไอศกรีมหางเสือจัดเป็นสินค้าประเภท ฮ พนักงานย่อมจะจัดเก็บข้อมูลสินค้าประเภทนี้ไว้ในฐานข้อมูลของสินค้าประเภท ฮ

บางครั้งมุมมองของผู้ใช้กับมุมมองของผู้ออกแบบฐานข้อมูลอาจแตกต่างกัน ขึ้นอยู่กับการตีความกฎทางธุรกิจ แม้จะมองต่างมุมแต่ทั้งผู้ใช้และผู้ออกแบบฐานข้อมูลอาจถูกทั้งคู่ ที่เห็นต่างกันเป็นเพียงการมองปัญหาจากคนละด้าน

คนที่สำคัญสุดในการออกแบบฐานข้อมูลไม่ใช่ตัวท่าน แต่เป็น "ผู้ใช้ระดับล่างสุด" (end-user ผู้ใช้ที่ไม่มีความรู้ด้านคอมพิวเตอร์เลย แต่มักมีความรู้เกี่ยวกับกฎทางธุรกิจเป็นอย่างดี เช่นเจ้าหน้าที่บริหารระดับสูง) ท่านจึงต้องค้นหาความต้องการที่แท้จริงของผู้ใช้ระดับล่างสุดให้ได้ เคล็ดลับคือต้องคุยให้ถูกคน คนที่ท่านควรคุยด้วยคือผู้ใช้ระดับล่างสุดที่รู้ความต้องการทางธุรกิจอย่างรอบด้าน

ท่านต้องสืบให้รู้ว่าพนักงานระดับใดได้รับข้อมูลในขอบเขตใด เพราะบางครั้งผู้ใช้อาจเป็นนักพัฒนาซอฟต์แวร์ หรือเป็นผู้ใช้ระดับล่างสุด หรือแม้กระทั้งเป็นคนจากทั้งสองกลุ่ม พนักงานเหล่านี้ย่อมได้รับข้อมูลในขอบเขตที่แตกต่างกัน ยกตัวอย่างเช่น  พนักงานระดับล่างจะได้รับข้อมูลแคบๆ เฉพาะในส่วนที่ตนเกี่ยวข้อง ขณะที่พนักงานระดับบริหารจะได้รับข้อมูลในมุมกว้างแต่เป็นข้อมูลรวบยอด ท่านจำเป็นต้องรู้ว่าหากต้องการรายละเอียดต้องไปคุยกับพนักงานระดับล่างในแต่ละแผนก หากต้องการภาพรวมต้องไปคุยกับพนักงานระดับบริหาร

 

4.5. กฎทางธุรกิจ
กฎทางธุรกิจ (Business Rules) คือนิยามของกระบวนการ คำจำกัดความและข้อกำหนดต่างๆ ที่จำเป็นต้องนำมาใช้เพื่อให้หน่วยงานสามารถทำงานได้บรรลุเป้าหมาย ยกตัวอย่างกฎทางธุรกิจเช่น "ยอมให้ลูกค้านำสินค้าที่มีปัญหามาเปลี่ยนได้ภายในเจ็ดวันหลังจากซื้อ" หากเราออกแบบฐานข้อมูลมาอย่างสวยงามตามหลักการออกแบบทุกประการ แต่ฐานข้อมูลนั้นไม่สามารถตอบสนองกฎทางธุรกิจได้ฐานข้อมูลนั้นก็ไร้ค่า

โปรดพิจารณาแผนภูมิ ERD ในภาพ 4-2 อันเป็นโครงสร้างฐานข้อมูลร้านขายหนังสือออนไลน์ (ขายในอินเตอร์เน็ต) จะเห็นว่าข้อมูลของหนังสือหนึ่งเล่มถูกแบ่งแยกออกเป็นหกตาราง แต่ละตารางถูกเชื่อมโยงด้วยตัวเชื่อมที่ต่างกัน ยกตัวอย่างเช่นตาราง Publication (เป็นตารางหลักเก็บข้อมูลหนังสือ) ถูกกำหนดให้มีสี่คอลัมน์ คอลัมน์แรกคือ publication_id เป็นคีย์หลักของตารางนี้ subject_id เป็นฟอร์เรนคีย ทำหน้าที่เชื่อมกับตาราง subject ซึ่งเก็บข้อมูลประเภทหรือชนิดของหนังสือ author_id เป็นฟอร์เรนคียเช่นกันทำหน้าที่เชื่อมกับตาราง Author ซึ่งเก็บข้อมูลผู้แต่งหนังสือ และสุดท้ายคือคอลัมน์ title ที่ไม่ได้เชื่อมโยงกับใคร ทำหน้าที่เก็บชื่อหนังสือ

ฐานข้อมูลมีคุณสมบัติต่างๆ อย่างที่กล่าวถึงในย่อหน้าบนเพราะผู้ออกแบบพิจารณากฎทางธุรกิจแล้วนำมาใช้ออกแบบฐานข้อมูล หากเป็นแผนภูมิ ERD ของร้านขายหนังสือออนไลน์ร้านอื่น ที่มีกฎทางธุรกิจแตกต่างจากนี้ โครงสร้างต่างๆ ในแผนภูมิ ERD ย่อมจะแตกต่างไปจากนี้ การทำความเข้าใจกฎทางธุรกิจจะช่วยให้เข้าใจการไหลของข้อมูลที่เกิดขึ้นในการทำงานประจำวัน สิ่งนี่แหละคือหัวใจของการออกแบบฐานข้อมูล

 

4.6. นิยามกฎทางธุรกิจ
นิยามกฎทางธุรกิจคือกระบวนการต่างๆ ที่เกิดขึ้นในการทำงานประจำวัน การที่องค์กรตัดสินใจว่างานต่างๆ จะดำเนินการด้วยกรรมวิธีใด หรือองค์กรมีขึ้นเพื่อทำหน้าที่อะไร มีงานอะไรที่เกี่ยวข้องบ้าง มีรายได้จากอะไร และทำกำไรได้ด้วยวิธีใดมีผลมาจากการนิยามกฎทางธุรกิจ

นิยามกฎทางธุรกิจอาจกว้างและแตกต่างกันไปในระหว่างองค์กร แต่มักหนีไม่พ้นประเด็นต่างๆ ดังนี้
•    นโยบายขององค์กรในทุกรูปแบบและระดับชั้นขององค์กร
•    สูตรคำนวณต่างๆ (เช่นสถาบันการเงินจะมีสูตรคำนวณค่างวดในการซื้อบ้านหรือรถยนต์)
•    กฎระเบียบต่างๆ (อาจเกิดจากกฎหมาย หรือข้อจำกัด หรือมาตรฐานอุตสาหกรรม)

นิยามกฎทางธุรกิจจะเป็นตัวกำหนดโครงสร้างของฐานข้อมูล ยกตัวอย่างเช่นในฐานข้อมูลของร้านขายหนังสือออนไลน์ที่แสดงในแผนภูมิ ERD ที่ผ่านมา มีกฎทางธุรกิจว่าในตาราง Publication หนังสือทุกเล่มอย่างน้อยต้องมีผู้แต่งหนึ่งคน และหนังสือบางเล่มอาจมีผู้แต่งสองคนหรือมากกว่าก็ได้  แต่หนังสือทุกๆ เล่มจะมีผู้แต่งจำนวนศูนย์คนไม่ได้

ตาราง edition เกิดจากกฎทางธุรกิจว่าหนังสือหนึ่งเล่มอาจมีการปรับปรุงและพิมพ์ใหม่ได้หลายครั้ง ดังนั้นหนังสือหนึ่งเล่มจึงมีข้อมูลในตาราง edition ได้หลายบรรทัด แต่จะเป็นศูนย์ไม่ได้  (ต้องมีการพิมพ์อย่างน้อยหนึ่งครั้ง) ส่วนข้อมูลผู้เขียน (ตาราง Author) มีข้อกำหนดว่าผู้เขียนหนึ่งคนอาจมีจำนวนเล่มของหนังสือที่เกี่ยวข้องเป็น ศูนย์ หนึ่ง สอง หรือมากกว่าก็ได้ (แม้ผู้เขียนที่มีหนังสือศูนย์เล่มยังไม่จัดว่าเป็นผู้เขียนจริงๆ แต่กฎทางธุรกิจอนุโลมให้)

 

4.7. ความสำคัญของกฎทางธุรกิจ
ในขั้นตอนการออกแบบฐานข้อมูลผู้เขียนเคยเจอทั้งลูกค้าที่บอกว่า "อย่าใส่กฎทางธุรกิจไว้ในฐานข้อมูล" และลูกค้าที่บอกว่า "กรุณาใส่กฎทางธุรกิจไว้เยอะๆ" ทั้งสองเงื่อนไขที่ว่ามานั้นล้วนเหลวไหล เพราะการออกแบบฐานข้อมูลอย่างไรก็ต้องใส่กฎทางธุรกิจไว้เสมอ แต่การใส่กฎทางธุรกิจไว้เยอะๆ ก็ทำไม่ได้เช่นกัน บางคนอาจต้องการให้สพร็อกซ์เป็นตัวกำหนดกฎทางธุรกิจ ผู้เขียนไม่แนะนำให้ทำเช่นนั้นเพราะจะทำให้ฐานข้อมูลทำงานอย่างไม่มีประสิทธิภาพ (โดยเฉพาะอย่างยิ่งในแบบจำลองฐานข้อมูลสัมพันธ์) แต่การใส่เมธอดไว้คู่กับออพเจ็กต์ฐานข้อมูลกลับให้ผลตรงกันข้าม คือทำให้ฐานข้อมูลมีประสิทธิภาพดีขึ้น (ในแบบจำลองฐานข้อมูลแบบวัตถุ)

เนื่องจากหนังสือเล่มนี้เน้นเฉพาะฐานข้อมูลสัมพันธ์ ผู้เขียนจึงไม่แนะนำให้ใส่กฎทางธุรกิจไว้ในสพร็อกซ์ แต่ให้ใช้โครงสร้างของตาราง และความสัมพันธ์ระหว่างตาราง เป็นตัวสะท้อนกฎทางธุรกิจ ส่วนกฎทางธุรกิจที่มีตรรกะซับซ้อนให้ทำในระดับโค้ดของโปรแกรมประยุกต์ ควรใช้สพร็อกซ์เพื่อทำหน้าที่เชื่อมต่อระหว่างฐานข้อมูลและโปรแกรมประยุกต์ ในหนังสือนี้ท่านจะได้เรียนวิธีสร้างและใช้งานสพร็อกซ์โดยละเอียด ทั้งสพร็อกซ์ ภาษา T-SQL และสพร็อกซ์ภาษา C#

 

4.8. ความสัมพันธ์กับมนุษย์
ฐานข้อมูลและโปรแกรมประยุกต์ล้วนจะถูกใช้งานโดยมนุษย์ทั้งสิ้น ท่านจึงหลีกเลี่ยงไม่ได้ที่จะต้องมีปฏิสัมพันธ์กับมนุษย์ โดยเฉพาะอย่างยิ่งผู้ใช้งานระดับปลายแถวเพราะเป็นเจ้าหน้าที่ระดับที่รู้รายละเอียดปลีกย่อยดีกว่าใคร และเป็นเป็นกลุ่มผู้ใช้กลุ่มใหญ่ที่สุด การพูดคุยและการรับฟังผู้ใช้งานระดับปลายแถวจะทำให้ท่านออกแบบฐานข้อมูลได้ดีขึ้น สิ่งที่ควรคำนึงด้านความสัมพันธ์กับมนุษย์มีดังนี้


•    เปลี่ยนลักษณะเฉพาะให้เป็นลักษณะทั่วไป: นักออกแบบฐานข้อมูลต้องแปลงสิ่งผู้ใช้มองว่าเฉพาะเจาะจงให้เป็น แอบสเทรก (abstract การลดทอนรายละเอียดให้เป็นนามธรรมเพื่อให้เกิดความไม่จำเพาะเจาะจง) ยกตัวอย่างเช่นผู้ใช้มองว่าการขายรถยี่ห้อโตโยต้ากับยี่ห้อฟอร์ดเป็นกระบวนการที่แตกต่างกันโดยสิ้นเชิง เพราะบริษัทผู้ผลิตคนละรายกัน ของแถมต่างๆ ก็ไม่เหมือนกัน บริการหลังการขายก็แตกต่างกัน ฯลฯ แต่ในมุมมองนักออกแบบฐานข้อมูลท่านจะต้องมองว่าทั้งโตโยต้าและฟอร์ดเป็นรถยนต์เหมือนกัน การขายรถยนต์อะไรก็ตามเป็นธุรกรรมแบบเดียวกัน หากต้องแบ่งแยกอาจก็อาจแบ่งว่าเป็นรถเก๋งหรือรถกระบะ แต่ไม่ได้มองว่าการขายรถคนละยี่ห้อเป็นธุรกรรมที่แตกต่างกันโดยสิ้นเชิง


•    คุยให้ถูกคน: จากประสบการของผู้เขียนพบว่าพนักงานบางคนจะมีความรู้ทางเทคนิคดี ขณะที่บางคนไม่ แต่พนักงานที่มีความรู้ทางเทคนิคดีใช่ว่าจะเป็นแหล่งข้อมูลเพื่อการออกแบบฐานข้อมูลดีกว่าคนที่รู้เทคนิคน้อยกว่า ปรกติแล้วในองค์กรเล็กๆ พนักงานที่รู้รายละเอียดของธุรกิจดีที่สุดคือเจ้าหน้าที่บริหารระดับสูง ถ้าเป็นองค์ที่ใหญ่ขึ้นพนักงานที่มีความรู้ในรายละเอียดของธุรกิจดีที่สุดคือเจ้าหน้าระดับผู้จัดการ ถ้าเป็นองค์กรเล็กๆ การเข้าพบเจ้าหน้าที่บริหารระดับสูงจะทำได้ง่าย ในองค์ที่ใหญ่ขึ้นการเข้าพบเจ้าหน้าที่บริหารระดับสูงทำได้ยากหรือทำไม่ได้เลย แต่ถึงจะทำได้ก็อาจไม่เป็นประโยชน์ต่อการออกแบบฐานข้อมูลมากนัก


•    คุยกับคนคอมพิวเตอร์: เจ้าหน้าที่ฝ่ายคอมพิวเตอร์บางครั้งก็ให้ข้อมูลที่มีค่า บางครั้งก็ทำตัวเป็นอุปสรรค เพราะบางครั้งพนักงานภายในอาจจะอ่านความต้องการของผู้ใช้ได้ไม่ชัดเจนเท่าคนนอกที่มักมีมุมมองซึ่งสดใหม่กว่า แต่อย่าเหมาว่าท่านรู้ดีกว่าพนักงานภายในไปเสียทุกเรื่อง ให้ตระหนักว่าท่านมีความรู้ความชำนาญในการออกแบบฐานข้อมูลมากกว่า (ถ้าไม่เป็นเช่นนั้นคงไม่ถูกจ้างให้ไปทำ) แต่ในเรื่องกฏทางธุรกิจแล้วย่อมรู้น้อยกว่า


•    รับแต่ข้อมูลที่ถูกต้อง: นักออกแบบฐานข้อมูลจะต้องรู้ว่าควรฟังใครหรือไม่ควรฟังใคร ผู้ใช้บางระดับอาจมีภาพมุมกว้างแต่ขาดรายละเอียด ในขณะที่บางระดับมีภาพมุมแคบแต่มีรายเอียดมาก การพบปะพูดคุยกับผู้ใช้หลายๆ ระดับๆ ละหลายๆ คนจะช่วยให้ได้รับข้อมูลมากขึ้นซึ่งจะช่วยให้ท่านกลั่นกรองได้ว่าข้อมูลใดถูก ข้อมูลใดผิด


•    ระวังการใช้คำ: คำเฉพาะหรือคำจาร์กอนในองค์กรต่างๆ อาจทำให้ไขว้เขวได้ง่าย ผู้เขียนเคยพบโครงการหนึ่งที่ผู้ออกแบบฐานข้อมูลออกแบบผิด เพราะตอนสัมภาษณ์ผู้ใช้เพื่อเก็บข้อมูลเข้าใจผิดความหมายของคำๆ หนึ่งผิดไป  ต่อมาภายหลังเมื่อรู้ว่าผิดก็สายไปแล้ว (เพราะฐานข้อมูลและแอพลิเกชันพัฒนาเสร็จแล้วและระบบเริ่มเดินเครื่องแล้ว) คำที่เข้าใจผิดคือคำว่า "ผนึก" เป็นคำจาร์กอนในองค์กรนั้นหมายถึงขั้นตอนระหว่างกลางในสายการผลิต เป็นการห่อหุ้มชิ้นส่วนก่อนส่งไปยังกระบวนการถัดไป แต่นักออกแบบฐานข้อมูลเข้าใจผิด คิดว่าคำนี้หมายถึงขั้นตอนบรรจุหีบห่ออันเป็นขั้นตอนสุดท้าย การพูดคุยกับผู้ใช้ท่านจะต้องสอบถามความหมายของคำต่างๆ ให้ชัดเจน อย่าอนุมานความหมายไปเอง

 

4.9. ศึกษาจากระบบเดิม
บ่อยครั้งหน่วยงานที่ท่านจะออกแบบสร้างฐานข้อมูลมีระบบฐานข้อมูลเดิมอยู่แล้ว มันอาจเป็นแหล่งข้อมูลที่มีค่าให้ท่านใช้หาข้อมูลสำหรับออกแบบฐานข้อมูลได้ดี ระบบฐานข้อมูลเดิมอาจเป็นเพียงเอกสารกระดาษ ระบบฐานข้อมูลเก่าในเมนเฟรม หรือแม้แต่การจัดเก็บข้อมูลด้วยโปรแกรมเวิร์คชีต จงศึกษาจากระบบเดิมในสิ่งต่างๆ ต่อไปนี้

•    เอกสารกระดาษ: หากระบบเดิมทำงานโดยใช้เอกสารกระดาษ ให้รวบรวมเอกสารให้ได้มากที่สุดแล้วศึกษาจากเอกสารเหล่านั้น การทำเช่นนี้จะทำได้ง่ายขึ้นหากมีพนักงานในองค์กรนั้น ซึ่งเป็นผู้มีความรู้ในระบบเป็นอย่างดี ให้ความช่วยเหลือในการรวมรวมและแยกแยะเอกสาร


•    ระบบฐานข้อมูลเดิม: การศึกษาระบบงานจากฐานข้อมูลเดิมมักทำได้อย่างยากลำบาก เพราะโครงสร้างของฐานข้อมูลเดิมอาจมีขนาดใหญ่และซับซ้อน หรือเข้าถึงได้ยากหรือไม่ได้เลย เช่นเดียวกับเอกสารกระดาษ การศึกษาระบบฐานข้อมูลเดิมจะทำได้ง่ายขึ้นหากได้รับความช่วยเหลือจากพนักงานที่มีความรู้ในระบบเป็นอย่างดี


•    ระบบผสม: มีบางกรณีที่ระบบฐานข้อมูลเดิมขององค์กรเป็นระบบผสม ที่มีข้อมูลจากแผนกต่างๆ ซึ่งใช้เทคโนโลยีแตกต่างกัน เช่นแผนกการผลิตใช้แอพลิเกชันที่สร้างจากภาษา C# แผนกบัญชีใช้ออราเคิล และแผนกบริหารใช้ไมโครซอฟต์เอกเซล ฐานข้อมูลในระบบต่างๆ เหล่านี้เชื่อมโยงกันผ่านฐานข้อมูลกลางหรือเกตเวย์ อันเป็นฐานข้อมูลกลางที่รับข้อมูลจากทุกหน่วยงานมาผสมกัน


•    แปลงจากเวิร์คชีต: เวิร์คชีต (worksheet)หรือสเปรดชีต (spreadsheet) แม้จะคล้ายแฟลตไฟล์แต่เมื่อพิจารณาโดยละเอียดจะพบว่าอาจมีความซับซ้อนกว่า เพราะอาจมีเวิร์คชีตซ้อนกันหลายระดับและอาจมีสูตรคำนวณมากมาย แต่โดยทั่วไปแล้วการศึกษาจากเวิร์คชีตจะง่ายกว่าการศึกษาจากระบบข้อมูลเดิมในเมนเฟรมและระบบผสม


•    ฐานข้อมูลสัมพันธ์เดิม: ในกรณีที่หน่วยงานมีฐานข้อมูลสัมพันธ์อยู่แล้ว แต่ต้องการสร้างฐานข้อมูลใหม่เพราะของเก่ายุ่งเหยิงไม่มีประสิทธิภาพ ในกรณีนี้การศึกษาระบบงานจากฐานข้อมูลเดิมคือการหาว่าปัญหาคืออะไร และมีวิธีแก้ไขอย่างไรบ้าง โดยปรกติแล้วผู้ใช้ที่ไม่พอใจในระบบเดิมจะมีแนวคิดอยู่ในใจแล้วว่าต้องการปรับปรุงอะไรบ้าง

 

4.10. ข้อจำกัดและการตรวจสอบ
ข้อจำกัดคือสิ่งที่กำหนดว่าอะไรทำได้อะไรทำไม่ได้ ยกตัวข้อจำกัดคือ  "ตัวแทนฝ่ายขายภาคกลางจะขายสินค้าที่ภาคเหนือไม่ได้แต่ขายที่ภาคตะวันออกได้" ส่วนการตรวจสอบคือการคัดกรองข้อมูล เพื่อให้ฐานข้อมูลมีความถูกต้อง ยกตัวอย่างการตรวจสอบคือ "ยอดสั่งซื้อต่ำสุดของไอศกรีมหางเสือคือหนึ่งกล่อง"

ท่านสามารถใส่ข้อกำหนดของข้อจำกัดและการตรวจสอบในฐานข้อมูลสัมพันธ์ได้ โดยจะทำในระดับคอลัมน์หรือในระดับตารางก็ได้ ยกตัวอย่างเช่น

•    NOT NULL: ทำหน้าที่กำหนดว่าคอลัมน์นั้นจะเป็น NULL ไม่ได้ คือจะต้องมีข้อมูลอยู่เสมอ
•    Validate Check: ทำหน้าที่ตรวจสอบการใส่ข้อมูลว่าตรงกับข้อกำหนดหรือไม่ ยกตัวอย่างเช่นคอลัมน์ที่ใช้เก็บข้อมูลเพศ กำหนดไว้ว่าให้เป็นตัวอักษรหนึ่งตัว จะต้องเป็น M หรือ F เท่านั้น
•    Key: กำหนดการเป็นกุญแจหรือคีย์ของคอลัมน์ใดๆ เช่นเป็นไพรมารีคีย์ ฟอร์เรนคีย์ และคีย์ที่ห้ามมีค่าซ้ำกัน

 

4.11. สรุปท้ายบท
การออกแบบฐานข้อมูลจำเป็นต้องมีการวางแผนที่ดี โครงสร้างของฐานข้อมูลที่ดีควรเรียบง่าย มีบูรณภาพดี สนับสนุนคิวรีทั้งแบบประจำและแบบเฉพาะกิจ ไม่ควรทำนอร์มัลไลซ์เข้มข้นเกินไปจนยากแก่การเขียนคิวรี สามารถรองรับการเพิ่มขยายและเปลี่ยนแปลงในอนาคตได้ หากท่านออกแบบได้ดังนี้จะมีผลให้ฐานข้อมูลทำงานได้อย่างมีประสิทธิภาพ มีความยืดหยุ่น สร้างแอพลิเกชันได้ง่าย

การวางแผนสร้างฐานข้อมูลจะต้องคำนึงถึงกฎทางธุรกิจ เนื่องจากองค์กรแต่ละแห่งย่อมมีกฎเกณฑ์ในการดำเนินงานที่แตกต่างกัน ดังนั้นในฐานะนักออกแบบฐานข้อมูล ท่านจะต้องรวบรวมข้อมูลจากผู้ใช้งานในองค์กรนั้นๆ รวมทั้งศึกษาระบบงานเดิมที่องค์กรนั้นๆ ใช้อยู่ รับฟังความต้องการและความคาดหวัง เพื่อนำมาออกแบบฐานข้อมูลใหม่ที่สามารถตอบสนองความต้องการทางธุรกิจได้ตรงตามจุดมุ่งหมาย

ในบทต่อไปท่านจะได้เรียนวิธีใช้แผนภูมิ ERD เพื่อการออกแบบฐานข้อมูล

 

4.12. คำถามท้ายบท

1.    ขั้นตอนที่สำคัญสุดในการออกแบบฐานข้อมูลคืออะไร
2.    บูรณภาพของข้อมูลคืออะไร
3.    คิวรีแบบ ad-hoc คืออะไร
4.    ฐานข้อมูลควรเชื่อมต่อกับแอพลิเกชันอย่างไร
5.    ฐานข้อมูลที่มีประสิทธิภาพเป็นอย่างไร
6.    การออกแบบทางแนวคิดคืออะไร
7.    การออกแบบทางตรรกะคืออะไร
8.    กฎทางธุรกิจคืออะไร
9.    การออกแบบฐานข้อมูลสัมพันธ์ควรสะท้อนกฎทางธุรกิจด้วยอะไร
10.    การศึกษาจากระบบเดิมอาจศึกษาจากอะไรได้บ้าง

 

4.13. แบบฝึกหัดท้ายบท
สมมุติว่าท่านไปเก็บข้อมูลเพื่อออกแบบสร้างฐานข้อมูลที่สโมสรกอล์ฟแห่งหนึ่ง เมื่อตรวจสอบแอพลิเกชันฐานข้อมูลเดิมที่ใช้งานอยู่ท่านพบว่ามีหน้าจอให้ป้อนพิมพ์ข้อมูลสมาชิกดังภาพ 4-3

003

ภาพ 4-3: หน้าจอให้ป้อนพิมพ์ข้อมูลสมาชิกของแอพลิเกชันฐานข้อมูลเดิมที่ใช้งานอยู่

จงออกแบบตารางเพื่อเก็บข้อมูลจากหน้าจอนี้ โดยแบ่งออกเป็นสองตารางคือ ตาราง Member เก็บข้อมูลสมาชิก และตาราง Type เก็บชนิดสมาชิกและจำนวนเงินค่าสมาชิก สองตารางนี้เชื่อมโยงกันด้วยคีย์ที่เหมาะสม

 

วิธีออกแบบฐานข้อมูล : ตอน 1

 

   Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

วิธีออกแบบฐานข้อมูล : ตอน 1

  หากท่านได้รับหน้าที่ให้ออกแบบฐานข้อมูลท่านต้องอ่านบทนี้ให้ดี หากท่านไม่ต้องสร้างฐานข้อมูล (เพราะมีผู้อื่นสร้างไว้แล้ว ท่านมีหน้าที่เพียงเขียนคิวรีใช้งานฐานข้อมูล) ท่านยิ่งจำเป็นต้องอ่านบทนี้ การเขียนคิวรีได้ดีท่านต้องเข้าใจความคิดของนักออกแบบฐานข้อมูล เพราะจะทำให้ท่านรู้ว่าเพราะอะไรฐานข้อมูลจึงมีสภาพอย่างที่เป็นอยู่ ความเข้าใจนี้มีส่วนช่วยให้ท่านเขียนคิวรีได้ดีขึ้น

ในบทที่แล้วท่านได้เรียนสิ่งสำคัญเบื้องต้นในการออกแบบฐานข้อมูลไปแล้ว ในบทนี้ท่านจะได้เรียนการออกแบบฐานข้อมูลในระดับที่ลึกขึ้น ซึ่งมีหัวข้อต่างๆ ดังนี้

•    กำหนดเป้าหมาย
•    ฐานข้อมูลที่มีประสิทธิภาพ
•    หลักการออกแบบฐานข้อมูล
•    การออกแบบฐานข้อมูลในโลกจริง
•    กฎทางธุรกิจ
•    นิยามกฎทางธุรกิจ
•    ความสำคัญของกฎทางธุรกิจ
•    ความสัมพันธ์กับมนุษย์
•    ศึกษาจากระบบเดิม
•    ข้อจำกัดและการตรวจสอบ

 

4.1. กำหนดเป้าหมาย
ขั้นตอนที่สำคัญสุดในการวางแผนโครงการอะไรก็ตามมีเพียงอยู่เพียงขั้นตอนเดียว นั่นคือการระบุว่าจุดมุ่งหมายหรือเป้าหมายของงานเป็นอย่างไร การทำโครงการจะเริ่มจากขั้นตอนไหนก็ได้ แต่โครงการที่ประสบความสำเร็จส่วนมากเป็นโครงการที่วางแผนไว้ก่อนอย่างรัดกุม ขั้นตอนแรกสุดของการวางแผนคือการนิยามเป้าหมาย การออกแบบฐานข้อมูลก็เช่นเดียวกัน ท่านควรนิยามเป้าหมายโดยพิจารณาประเด็นต่างๆ ดังนี้


•    โครงสร้าง: หากท่านออกแบบฐานข้อมูลที่ต้องใช้กระดาษ A4 มากถึง 50 หน้านำมาติดไว้บนกำแพง ลากเส้นเชื่อมโยงความสัมพันธ์ระหว่างแผ่น เมื่อไล่ดูความสัมพันธ์แต่ละอย่างต้องใช้เวลาถึง 20 นาที แสดงว่าโครงสร้างนี้มีปัญหาแล้ว การออกแบบฐานข้อมูลจะต้องคำนึงถึงโครงสร้าง ฐานข้อมูลที่ดีควรเรียบง่าย ไม่ซับซ้อนเกินความจำเป็น


•    บูรณภาพของข้อมูล: บูรณภาพหมายถึงกฎที่ใช้ในการออกแบบฐานข้อมูลเพื่อให้มั่นใจว่าข้อมูลจะไม่สูญหายหรือเปลี่ยนแปลงไปโดยไม่เจตนา จะหายไปก็ต่อเมื่อท่านสั่งลบอย่างตั้งใจเท่านั้น การออกแบบฐานข้อมูลจะต้องคำนึงถึงบูรณภาพด้วย


•    คิวรีแบบประจำและแบบจร: คิวรีแบบประจำคือคิวรีที่ผู้สร้างหรือผู้ดูแลฐานข้อมูล (DBA) สร้างเก็บไว้ให้ผู้ใช้เรียกใช้กระทำการต่างๆ กับฐานข้อมูล คิวรีแบบจร (ad-hoc) คือคิวรีที่ผู้ใช้เขียนขึ้นเองสดๆ เพื่อใช้เฉพาะกิจ เนื่องจากผู้เขียนคิวรีแบบจรมักไม่ใช่นักคอมพิวเตอร์ (เช่นอาจเป็นผู้จัดการฝ่ายขาย) จึงไม่รู้วิธีเขียนคิวรีให้มีประสิทธิภาพ คิวรีแบบจรจึงมักถูกห้ามใช้ในสภาพแวดล้อมที่คับขัน (คืองานที่มีผู้ใช้พร้อมกันมาก มีปริมาณข้อมูลไหลมากเช่นในงาน OLTP) แต่อาจใช้ได้ในสภาพแวดล้อมที่ผ่อนคลายกว่า (คืองานที่มีผู้ใช้งานพร้อมๆ กันน้อย มีปริมาณข้อมูลไหลน้อย เช่นในงานคลังข้อมูล)  ในการออกแบบฐานข้อมูลท่านควรพิจารณาว่าจะสนับสนุนคิวรีแบบประจำหรือแบบจร หรือทั้งสองแบบ


•    การคิวรี: ฐานข้อมูลที่ออกแบบมาสำหรับสภาพแวดล้อมที่คับขัน (เช่นในงาน OLTP) อาจเน้นประสิทธิภาพมากเกินไป (คือทำนอร์มัลไลซ์อย่างหนัก) การทำเช่นนั้นจะทำให้เขียนคิวรียาก ส่วนการออกแบบฐานข้อมูลในสภาพแวดล้อมที่ผ่อนคลายกว่า (เช่นในงานคลังข้อมูล) อาจนำฐานข้อมูลเพื่องาน OLTP มาลดการแยกย่อยตารางเพื่อให้นอร์มัลไลซ์มีความเข้มข้นน้อยลง (denornalize) เพื่อให้สะทอนลักษณะทางธุรกิจมากขึ้น ซึ่งจะช่วยให้เขียนคิวรีได้ง่ายกว่า (ดุรายละเอียดเกี่ยวกับการทำนอร์มัลไลซ์ในบทที่ 5 และ 6) ในการออกแบบฐานข้อมูลท่านจะต้องพิจารณาว่าควรทำนอร์มัลไลซ์มากน้อยเพียงใด ด้วยการชั่งน้ำหนักระหว่างประสิทธิภาพและความยากง่ายของการเขียนคิวรี


•    การอัพเดตข้อมูล: การออกแบบฐานข้อมูลเพื่องานที่อัพเดตข้อมูลน้อยแต่ทำอย่างถี่ๆ อย่างงาน OLTP กับงานที่อัพเดตข้อมูลนานครั้งๆ แต่ทำคราวละมากแถว อาจต้องใช้การออกแบบที่แตกต่างกันเพื่อให้มีประสิทธิภาพสูงสุด ในการออกแบบฐานข้อมูลท่านจะต้องดูให้แน่ใจว่าการอัพเดตจะเป็นไปอย่างมีประสิทธิภาพ


•    การแยก-รวมตาราง: การออกแบบฐานข้อมูลเพื่องาน OLTP ควรแยกย่อยตารางออกเป็นจำนวนมากโดยละเอียด (อาจไม่เป็นเช่นนั้นในทุกๆ กรณี) ส่วนการออกแบบฐานข้อมูลเพื่องานคลังข้อมูลไม่ควรแยกย่อยตาราง แต่ให้รวมข้อมูลเรื่องเดียวไว้ภายในตารางเดียวกัน ในการออกแบบฐานข้อมูลท่านจะต้องพิจารณาว่าควรแยกหรือรวมตารางมากเพียงใดจึงจะเหมาะกับงานนั้นๆ


•    การเพิ่มขยาย: ออกแบบให้รองรับกับปริมาณการใช้งานที่เพิ่มขึ้นอย่างรวดเร็วเป็นหลายเท่าได้ ยกตัวอย่างเช่น โหลดการทำงานของฐานข้อมูลอาจเพิ่มเป็นร้อยหรือพันเท่าได้ภายในชั่วข้ามคืนหากเว็บไซต์ได้รับความนิยมขึ้นอย่างฉับพลัน ในการออกแบบฐานข้อมูลท่านจะต้องหาลู่ทางให้รองรับปริมาณการใช้งานที่เพิ่มขึ้นได้


•    ความเปลี่ยนแปลง: การเปลี่ยนแปลงโครงสร้างของฐานข้อมูลมักส่งผลกระทบกับแอพลิเกชัน วิธีป้องกันไม่ให้เกิดผลกระทบคือลดความผูกพันระหว่างแอพลิเกชันกับฐานข้อมูลโดยสร้างตัวเชื่อมต่อ (เช่นสพร็อกซ์ ดูบทที่ 22) ตัวเชื่อมต่อนี้มีสภาพเป็นกล่องดำ เพราะแอพลิเกชันสามารถเรียกใช้งานได้โดยไม่ต้องรู้การทำงานภายในของมัน เมื่อแอพลิเกชันต้องการติดต่อกับฐานข้อมูลต้องทำโดยผ่านกล่องดำเท่านั้น หากภายหลังมีการเปลี่ยนแปลงโครงสร้างของฐานข้อมูล ท่านก็เพียงแต่แก้ไขเฉพาะกล่องดำไม่ต้องแก้ไขแอพลิเกชัน การออกแบบฐานข้อมูลท่านจะต้องทำให้ฐานข้อมูลเชื่อมต่อกับแอพลิเกชันอย่างหลวมๆ (loose coupling) โปรดจำไว้ว่าการเชื่อมหลวมๆ คือดี การเชื่อมต่อแบบแน่นๆ  (tight coupling) ไม่ดี

 

001

ภาพ 4-1 : เว็บไซต์อย่าง ebay.com มีผู้เข้าทำธุรกรรมจากทั่วโลกวันละหลายๆ ล้านรายการ

 

4.2. ฐานข้อมูลที่มีประสิทธิภาพ
การออกแบบฐานข้อมูลให้บรรลุเป้าหมายทั้งหมดตามหัวข้อที่ผ่านมาอาจเป็นงานที่น่าปวดหัว แต่ก็คุ้มค่าเพราะหากทำได้จะเกิดข้อดีต่างๆ หลายอย่างดังนี้
•    ทำงานได้ดี: ฐานข้อมูลทำงานตอบสนองความต้องการได้ทุกข้อ กินทรัพยากรน้อย ผู้ใช้ทุกคนสามารถใช้งานได้อย่างไม่ติดขัด
•    คิวรีง่าย: เขียนคิวรีแล้วไม่เกิดปัญหาต่างๆ เช่น บูรณภาพของข้อมูล ความสัมพันธ์ระหว่างตารางผิด ตารางออกแบบไม่ได้ ฯลฯ
•    สร้างแอพลิเกชันง่าย: การออกแบบฐานข้อมูลให้สร้างแอพลิเกชันได้ง่ายเป็นสิ่งดี โดยเฉพาะอย่างยิ่งในงาน OLTP เพราะผู้ใช้ต้องใช้งานฐานข้อมูลทางอ้อมผ่านแอพลิเกชันโปรแกรม แต่ฐานข้อมูลในงานคลังข้อมูลอาจไม่จำเป็น เพราะผู้ใช้มักคิวรีฐานข้อมูลเองโดยตรงไม่ได้ทำงานผ่านแอพลิเกชัน
•    มีความยืดหยุ่น: การออกแบบฐานข้อมูลให้มีความยืดหยุ่นจะช่วยบรรเทาผลกระทบหากมีการเปลี่ยนแปลงโครงสร้างฐานข้อมูล

 

4.3. หลักการออกแบบฐานข้อมูล

หลักการออกแบบฐานข้อมูลมีขั้นตอนต่างๆ ดังต่อไปนี้

•    วิเคราะห์ความต้องการ: เป็นขั้นตอนรวบรวมข้อมูลว่าฐานข้อมูลต้องมีคุณสมบัติอย่างไรบ้าง ผู้ใช้งานต้องการเก็บข้อมูลอะไร และคาดหวังว่าจะได้ผลลัพธ์อย่างไรบ้าง สิ่งที่ต้องทำคือจดบันทึกความต้องการต่างๆ ไว้ ขณะที่พูดคุยกับผู้ใช้ในระดับต่างๆ
•    การออกแบบทางแนวคิด: เป็นขั้นตอนออกแบบในกระดาษหรือใช้เครื่องมือที่เป็นซอฟต์แวร์ช่วยออกแบบเพื่อร่างแผนภูมิต่างๆ เช่นแผนภูมิ ERD เพื่อออกแบบโครงสร้างของตาราง คอลัมน์ และความเชื่อมโยงระหว่างตาราง การทำนอร์มัลไลซ์ก็ควรจะอยู่ในขั้นตอนนี้ด้วย

 

002

ภาพ 4-2 : ตัวอย่างแผนภูมิ ERD ของฐานข้อมูลร้านขายหนังสือในอินเตอร์เน็ตแห่งหนึ่ง

 

•    การออกแบบทางตรรกะ: เขียนคิวรี DDL (Data definition Language) เพื่อสร้างตารางต่างๆ ในฐานข้อมูล เครื่องมือสร้างแผนภูมิ ERD บางตัวอาจให้ DDL ได้โดยอัตโนมัติแต่เป็นเพียงคิวรีทั่วๆ ไป หากจะนำมาใช้ควรตรวจสอบให้ดีก่อน
•    การออกแบบทางกายภาพ: ปรับแก้คิวรีเพื่อสนับสนุนลักษณะทางกายภาพบางอย่าง เช่นพิจารณาว่าจำเป็นจะต้องต้องการเก็บออพเจ็กต์ที่เป็นไบนารีขนาดใหญ่ไว้เป็นไฟล์แยกต่างหากจากตารางมาตรฐานหรือไม่
•    การปรับแต่ง: ประกอบด้วยกระบวนการหลายอย่าง เช่นเพิ่มหรือลดระดับความเข้มข้นของการนอร์มัลไลซ์ การทำดรรชนี การจัดทำทริกเกอร์ การเพิ่มระบบรักษาความปลอดภัย หรืออะไรก็ตามที่ยังไม่ได้ทำในขึ้นตอนก่อนหน้านี้

ขั้นตอนเหล่านี้เป็นเพียงแนวทางโดยทั่วไป ท่านอาจสลับขั้นตอน ทำซ้ำ หรือนำขั้นตอนบางขั้นตอนหรือทั้งหมดมารวมกัน แล้วแบ่งแยกใหม่อย่างไรก็ได้ตามใจชอบ แต่สิ่งสำคัญที่ผู้เขียนขอแนะนำคือให้ออกแบบในกระดาษ (หรือใช้ซอฟต์แวร์) เขียนแผนภูมิ ERD ก่อนเขียนคิวรี DDL เสมอ เพื่อให้เห็นโครงสร้างในภาพรวมก่อนลงมือสร้างฐานข้อมูลจริงๆ

 


การประยุกต์ใช้งานฐานข้อมูล : ตอน 2

 

   Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

การประยุกต์ใช้งานฐานข้อมูล : ตอน 2

 

3.5. การประมวลผลแบบขนาน
ปัจจุบันนี้ถ้าเราไปพันทิพย์เพื่อซื้อคอมพิวเตอร์ธรรมดาๆ เราจะได้คอมพิวเตอร์ที่มีตัวประมวลผลแบบมีแกนในสองแกน (dual-core)  เครื่องเล่นเกมอย่างเพลย์สเตชันสาม (PlayStaton 3) มีตัวประมวลผลขนาด 64 บิตแบบแปดแกน ในไม่ช้าตัวประมวลผลที่มีแกนหลักจำนวน 16 หรือ 32 แกนก็จะกลายเป็นเรื่องธรรมดา การมีตัวประมวลผลหลายแกนทำให้เราสามารถใช้งานโปรแกรมประยุกต์ที่ทำงานแบบคู่ขนาน (concurrent) ได้

หลักการทำงานของฐานข้อมูลสัมพันธ์เอื้ออำนวยต่อการทำงานงานแบบคู่ขนาน เพราะแบบจำลองข้อมูลสัมพันธ์ตั้งอยู่บนพื้นฐานของเซต กฎของเซต (จำกัด) กล่าวว่า "ผลรวมของการทำยูเนียนกับส่วนต่างๆ ทั้งหมดย่อมเท่ากับเซตเดิม" แสดงเป็นสัญลักษณ์ได้ดังนี้

image นิยามการแบ่งส่วนของเซต A

image ยูเนียนส่วนต่างๆ ทั้งหมดของเซต A

นั่นหมายความว่าการกระทำต่างๆ กับแถวของตารางเราสามารถทำได้อย่างคู่ขนาน คือสามารถทำได้กับทุกแถวไปพร้อมๆ กันโดยไม่จำเป็นต้องไล่ตั้งแต่แถวแรกไปถึงแถวสุดท้าย แสดงเป็นสัญลักษณ์ได้ดังนี้

image

ไม่มีอะไรจะทำงานได้เร็วไปกว่าการทำงานแบบคู่ขนาน ในอนาคตอันใกล้นี้เมื่อระบบปฏิบัติการและโปรแกรม RDBMS ยุคใหม่สนับสนุนการทำงานแบบคู่ขนาน การคิวรีข้อมูลปริมาณมากๆ จะทำได้รวดเร็วขึ้นกว่าปัจจุบันนี้หลายเท่าตัว

004

ภาพ 3-4: เครื่องเล่นเกมเพลย์สเตชันสามเป็นคอมพิวเตอร์ที่ใช้ตัวประมวลผลแบบคู่ขนาน

 

3.6. แรมราคาถูกลง
หน่วยความจำหลักหรือแรม (Random Access Memory ย่อ RAM) นับวันยิ่งมีความจุมากขึ้นและมีราคาต่ำลง  คอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมมีแรมเพียง 2KB (สองพันไบต์) เท่านั้น แต่ในปัจจุบันเป็นเรื่องปรกติที่เราจะมีคอมพิวเตอร์ที่มีแรมจำนวน 2 หรือ 4GB (GB = พันล้านไบต์)  นั่นแปลว่าคอมพิวเตอร์ที่ผู้เขียนใช้ในปัจจุบันนี้มีแรมมากกว่าคอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมถึงหนึ่งล้านเท่า และมากกว่าเครื่องเมนเฟรมในอดีตหลายแสนเท่า

 

005

ภาพ 3-5: MPF-1 คอมพิวเตอร์ที่ผู้เขียนใช้ตอนเริ่มหัดเขียนโปรแกรมในปี ค.ศ. 1984 มีแรมเพียง 2KB (ผู้เขียนซื้อคอมพิวเตอร์นี้จากร้านค้าใกล้บ้านหม้อ MPF-1 ผลิตโดยบริษัท มัลติเทค ที่ปัจจุบันเปลี่ยนชื่อเป็นเอเซอร์ เป็นเครื่องมือสำหรับฝึกเขียนโปรแกรมภาษาเครื่อง (machine language) ของซีพียู Z80)

นอกจากแรมแล้ว จานบันทึกข้อมูลก็มีความจุสูงขึ้นแต่มีราคาต่ำลงเช่นกัน แผ่นบันทึกข้อมูล "ฟล็อปปิดิสก์" ขนาดห้านิ้วครึ่งความจุ 360KB ถูกแทนที่ด้วยฟล็อปปิดิสก์ขนาดสามนิ้วครึ่ง ความจุ 1.44MB ต่อมาเป็น DVD-ROM ความจุ 4.7GB และปัจจุบันเป็นแผ่นดิสก์แบบบลูเรย์ (Blue-ray) ซึ่งมีความจุสูงถึง 50GB

 

3.7. โซลิดสเตทดิสก์
โซลิดสเตทดิสก์ (Solid-State Disk) หรือฮาร์ดดิสก์ที่ทำจากสารกึ่งตัวนำ ไม่มีแผ่นจานแม่เหล็ก ไม่มีชิ้นส่วนที่เคลื่อนไหว จึงทำงานเงียบ กินกำลังไฟฟ้าน้อย และที่สำคัญคือทำงานเร็วกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก มีทั้งแบบที่ทำจากแรม (ปิดไฟแล้วข้อมูลหาย) และแบบที่ทำจากแฟลช (ปิดไฟแล้วข้อมูลไม่หาย)  แต่มีข้อเสียคือเทียบราคาต่อความจุยังแพงกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก แต่เชื่อว่าในอีกไม่ช้าจะมีราคาใกล้เคียงกันและจะมาแทนที่ฮาร์ดดิสก์ไปในที่สุด

006

ภาพ 3-6: โซลิดสเตทดิสก์มีความจุมากขึ้นแต่มีราคาต่ำลงเรื่อยๆ

3.8. ฮาร์ดดิสก์สมัยใหม่
ฮาร์ดดิสก์ (Hard disk drive ย่อ HDD) เป็นแผ่นจานแม่เหล็กที่ถูกประดิษฐ์คิดค้นโดยไอบีเอ็มตั้งแต่ปี ค.ศ. 1956 ปัจจุบันนี้ก็ยังไม่ตาย แต่มีราคาถูกลงและมีความจุมากขึ้น HDD ตามศูนย์ข้อมูล (Data center) หรือที่เครื่องแม่ข่ายให้บริการฐานข้อมูล (Database Server) เดิมจะใช้อินเตอร์เฟสแบบ SCSI (สแกซซี่)  ต่อพ่วง HDD ธรรมดาราคาไม่แพงเข้าด้วยกันหลายๆ ตัวเป็นแถว (Redundant Array of Inexpensive Disks ย่อ RAID) เพื่อเพิ่มความจุหรือเพิ่มความเชื่อถือได้ (หรือเล็งผลเลิศทั้งสองอย่าง)

ในสมัยก่อนหากต้องการสร้างคลังข้อมูลที่มีความจุระดับเทราไบต์ (Terabyte ย่อ TB) หรือล้านล้านไบต์ (1,000 ยกกำลัง 4 หรือ 10 ยกกำลัง 2) จำเป็นต้องใช้แถบแม่เหล็กหรืออุปกรณ์บันทึกข้อมูลด้วยแสงเป็นจำนวนมาก สลับสับเปลี่ยน (mount และ dismount) โดยอัตโนมัติด้วยน้ำมือของหุ่นยนต์ที่คล่องแคล่ว หรือจัดทำเป็นเซอฟเวอร์ฟาร์ม (Server Farm) ที่มีดิสก์ไซโล (Disks Silo) อยู่จำนวนมาก  แต่ตอนนี้หมดสมัยแล้ว เพราะในปัจจุบันแค่ HDD ธรรมดาราคาถูกก็มีความจุในระดับ TB ทำให้การจัดตั้งเครื่องแม่ข่ายให้บริการฐานข้อมูลทำได้งายขึ้น และมีราคาลดลง

007

ภาพ 3-7: โฆษณาขายฮาร์ดดิสก์ของบริษัท นอร์ทสตาร์ คอมพิวเตอร์ ในปี 1980 ความจุ 18MB รุ่นฮอร์ไรซอนราคาตัวละสามแสนบาท

 

3.9. เมื่อข้อมูลเปลี่ยนไป
ความก้าวหน้าทางเทคโนโลยีที่กล่าวถึงในหัวข้อต่างๆ ข้างบนทำให้ชวนคิดไปว่าการเก็บข้อมูลไม่ใช่ปัญหาอีกต่อไป นั่นคือเราไม่จำเป็นต้องออกแบบฐานข้อมูลโดยทำการลดทอนอย่างละเอียดรอบคอบเหมือนยุคก่อน เนื่องจากการเก็บข้อมูลซ้ำซ้อนหรือปล่อยให้คอลัมน์ส่วนใหญ่ว่างหรือเป็น NULL ไม่นับว่าเป็นเรื่องสำคัญ เพราะอุปกรณ์เก็บข้อมูลมีราคาถูกและมีความจุเหลือเฟือ และยังไม่จำเป็นต้องระวังเรื่องการใช้ทรัพยากรอื่นๆ เช่นกำลังการประมวลผลของซีพียู เพราะคอมพิวเตอร์สมัยใหม่มีตัวประมวลผลที่มีประสิทธิภาพสูงหลายตัว หรือมีซีพียูตัวเดียวแต่มีแกนในหลายแกน

ความคิดในย่อหน้าบนไม่เป็นความจริงเสมอไป เพราะขณะที่อุปกรณ์เก็บข้อมูลมีความจุเพิ่มขึ้น ขนาดของข้อมูลที่เราต้องการเก็บก็เพิ่มขึ้นเช่นกัน การใช้คอมพิวเตอร์ก่อนหน้านี้เน้นเก็บข้อความตัวอักษรและรูปภาพซึ่งกินเนื้อที่ไม่มาก แต่ปัจจุบันนี้เราเก็บข้อมูลเสียง (ไฟล์ MP3) หรือวิดีโอ (ไฟล์ .AVI, MP4, WMA และอื่นๆ)  และมีการประยุกต์ใช้งานใหม่ๆ ที่เพิ่มขนาดของข้อมูลอีกมาก เช่นโปรแกรมจดจำใบหน้าเพื่อการอ่านความรู้สึกและอารมณ์จากสีหน้า โปรแกรมจดจำลายนิ้วมือ โปรแกรมจดจำเส้นลายในดวงตาเพื่อแยกแยะความแตกต่างของบุคคล ข้อมูลแผนที่ๆ ทำงานร่วมกับดาวเทียม GPRS ข้อมูลเทียบ DNA ฯลฯ การประยุกต์ใช้งานใหม่เหล่านี้ล้วนต้องใช้พื้นที่เก็บข้อมูลขนาดใหญ่

 

008

ภาพ 3-8: ลักษณะของข้อมูลเปลี่ยนไป ข้อมูลสมัยใหม่มีขนาดใหญ่ขึ้นและซับซ้อนขึ้น ตัวอย่างเช่นในภาพนี้ เว็บไซต์ YouTube จัดเก็บคลิปวิดีโอที่สมาชิกส่งมาไว้เป็นฐานข้อมูลขนาดใหญ่

 

3.10. แต่ความคิดยังไม่เปลี่ยน
ยังมีสถาปนิก นักออกแบบฐานข้อมูลและนักเขียนโค้ดอยู่เป็นจำนวนมากที่แม้จะรู้ว่าอุปกรณ์บันทึกข้อมูลมีความจุสูงและมีราคาถูก แต่ยังติดนิสัยหรือยังมีความคิดในการบีบฐานข้อมูลให้เล็กที่สุดเหมือนสมัยที่อุปกรณ์บันทึกข้อมูลมีความจุน้อยและมีราคาแพง ในปัจจุบันการออกแบบฐานข้อมูลโดยเน้นประหยัดเนื้อที่ในอุปกรณ์บันทึกข้อมูล อาจไม่ใช่ทางเลือกที่ดีเสมอไป  เพราะการมุ่งเน้นประหยัดเนื้อที่อาจทำให้คิวรีซับซ้อน ใช้เวลาเขียนและบำรุงรักษามาก ซึ่งอาจไม่คุ้มกับเวลาและเงินที่ต้องใช้เพื่อเขียนและบำรุงรักษาคิวรีที่อาจสูงกว่าราคาของอุปกรณ์บันทึกข้อมูล

 

3.11. สรุปท้ายบท
ฐานข้อมูลมีหลายแบบที่ต้องเลือกใช้ให้เหมาะกับงาน เช่นฐานข้อมูลเพื่อใช้ในงาน OLTP ย่อมไม่เหมาะกับการนำมาใช้เพื่อการวิเคราะห์และทำรายงาน ความนิยมในการใช้งานเว็บแอพลิเกชันทำให้มีผู้ใช้ฐานข้อมูลทั่วโลกเพิ่มขึ้นเป็นจำนวนมากอยู่ตลอดเวลา การออกแบบฐานข้อมูลที่รองรับการใช้งานที่มีโหลดสูงได้จึงเป็นสิ่งจำเป็น

แม้อุปกรณ์ฮาร์ดแวร์จะมีราคาถูกลง มีประสิทธิภาพและความจุสูงขึ้น อาจทำให้การออกแบบฐานข้อมูลที่มุ่งเน้นการลดทอนอย่างถึงที่สุดเหมือนในอดีตไม่เหมาะกับปัจจุบัน แต่ธรรมชาติของข้อมูลก็เปลี่ยนไปด้วยเช่นกัน ข้อมูลสมัยใหม่มีขนาดใหญ่ขึ้นและซับซ้อนขึ้น ผู้ออกแบบฐานข้อมูลจึงยังจำเป็นต้องมีความรู้และความเข้าใจเรื่องการลดทอนข้อมูล ท่านจะได้เรียนเรื่องการลดทอนข้อมูลในบทที่ 5 และ 6 ในบทต่อไปท่านจะได้เรียนเรื่องพื้นฐานของการออกแบบฐานข้อมูลเพื่อการสร้างฐานข้อมูลที่มีประสิทธิภาพ

 

3.12. คำถามท้ายบท

1.    การใช้งานฐานข้อมูลแบบไคลแอนเซอฟเวอร์เป็นอย่างไร
2.    คลังข้อมูลคืออะไรมีหน้าที่อย่างไร
3.    ฐานข้อมูลแบบผสมผสานคืออะไร
4.    data bandwidth คืออะไร
5.    RAID คืออะไร
6.    การบีบฐานข้อมูลให้เล็กที่สุดมีข้อเสียอย่างไร
7.    ธรรมชาติของข้อมูลในปัจจุบันต่างจากในอดีตอย่างไร
8.    Solid-State Disk คืออะไร
9.    กฎของเซต (จำกัด) กล่าวว่าอย่างไร หมายความว่าอย่างไร

 

3.13. แบบฝึกหัดท้ายบท
จงเขียนคิวรีภาษา T-SQL เพื่อฉายแสดงข้อมูลในตาราง Employees ในฐานข้อมูล NorthWind โดยแสดงเฉพาะคอลัมน์ EmployeeID, LastName, FirstName, Title และ TitleOfCourtesy โดยให้แสดง 3 แบบดังนี้

1.    เซตของผู้ที่มี  TitleOfCourtesy = 'Ms.'
2.    เซตของผู้ที่มี  TitleOfCourtesy = 'Mr.'
3.    ผลจากการ UNION ALL ของทั้งสองเซต

 


การประยุกต์ใช้งานฐานข้อมูล : ตอน 1

 

   Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

การประยุกต์ใช้งานฐานข้อมูล : ตอน 1

 

ฐานข้อมูลต้องทำงานร่วมกับแอพลิเกชันได้ดี แอพลิเกชันคือโปรแกรมประยุกต์ใช้งานซึ่งมีหน้าที่แสดงส่วนปฏิสัมพันธ์กับผู้ใช้เพื่อให้ใช้งานได้ง่าย ผู้ใช้ไม่จำเป็นต้องรับรู้ถึงโครงสร้างหรือแม้แต่ความมีอยู่ของฐานข้อมูล ประเด็นคือต้องทำให้ผู้ไม่รู้เรื่องคอมพิวเตอร์เลย เช่นพนักงานธนาคาร พนักงานขาย พนักงานขายประกัน พนักงานระดับบริหาร และเจ้าหน้าที่ระดับต่างๆ ที่ไม่ใช่นักเทคนิคสามารถใช้งานฐานข้อมูลได้ง่ายที่สุด

หัวข้อที่ผ่านมาท่านได้เรียนลักษณะของแบบจำลองฐานข้อมูลชนิดต่างๆ ไปแล้ว ในบทนี้ท่านจะได้เรียนข้อควรคำนึงต่างๆ ในการประยุกต์ใช้งานฐานข้อมูล ซึ่งมีหัวข้อดังนี้

•    ฐานข้อมูลในงานธุรกรรม (OLTP)
•    ฐานข้อมูลในงานช่วยตัดสินใจ (OLAP)
•    ฐานข้อมูลแบบผสมผสาน
•    มุมมองใหม่ต่อฐานข้อมูล
•    การประมวลผลแบบขนาน
•    แรมราคาถูกลง
•    โซลิดสเตทดิสก์
•    ฮาร์ดดิสก์สมัยใหม่
•    เมื่อข้อมูลเปลี่ยนไป
•    แต่ความคิดยังไม่เปลี่ยน

 

3.1. ฐานข้อมูลในงานธุรกรรม (OLTP)
ฐานข้อมูลในงานธุรกรรมเป็นงานที่เข้าถึงข้อมูลหรือเปลี่ยนแปลงข้อมูลในปริมาณน้อย (คือครั้งละหนึ่งหรือสองแถว) งานส่วนมากคือการเรียกข้อมูลมาดู เพิ่มข้อมูล เปลี่ยนแปลงข้อมูล ลบข้อมูล โดยเป็นการทำครั้งละหนึ่งแถว เช่นข้อมูลของลูกค้าหนึ่งราย หรือสินค้าหนึ่งรายการ ยกตัวอย่างการใช้งานฐานข้อมูลในงานธุรกรรมมีดังนี้

•    ฐานข้อมูลแบบไคลแอนเซอฟเวอร์: การใช้งานในสภาพแวดล้อมแบบไคลแอนเซอฟเวอร์เป็นแบบที่นิยมกันมากก่อนยุคอินเตอร์เน็ตเฟื่องฟู มักเป็นการใช้งานภายในองค์กร จำนวนผู้ใช้ขึ้นอยู่กับขนาดขององค์กร อาจมีผู้ใช้เพียงคนเดียวถึงหลายพันคน การทำธุรกรรมจะเกี่ยวข้องกับข้อมูลครั้งและเพียงแถวเดียว หรือเรคคอร์ดเดียว หรือไม่ก็ดึงข้อมูลเป็นชุดเพื่อการทำรายงาน ฐานข้อมูลแบบไคลแอนเซอฟเวอร์ไม่จำเป็นต้องรองรับปริมาณการไหลของข้อมูลสูงมากนัก เพราะจำนวนผู้ใช้จะถูกจำกัดไว้ในปริมาณที่เหมาะสม ยกตัวอย่างเช่นหน่วยงานที่มีผู้ใช้หนึ่งพันคนโอกาสที่ผู้ใช้จะดึงข้อมูลจากฐานข้อมูลในขณะเดียวกันมีน้อยมาก

•    ฐานข้อมูลแบบ OLTP: เป็นฐานข้อมูลที่ใช้ร่วมกับอินเตอร์เน็ตแอพลิเกชัน ปริมาณผู้ใช้ที่เรียกใช้ฐานข้อมูลพร้อมๆ กันจะสูงกว่าฐานข้อมูลแบบไคลแอนเซอฟเวอร์มาก ฐานข้อมูลแบบ OLTP จึงจำเป็นต้องรองรับปริมาณการไหลของข้อมูลสูงกว่า งานลักษณะนี้จะมีผู้ใช้นับล้านคนใช้งานวันละยี่สิบสี่ชั่วโมงปีละสามร้อยหกสิบห้าวัน ทำให้อาจมีผู้ใช้นับพันดึงข้อมูลจากฐานข้อมูลพร้อมๆ กันได้ตลอดเวลา

 

001

ภาพ 3-1 : สถาปัตยกรรมแบบไคลแอนเซอฟเวอร์

 

3.2. ฐานข้อมูลเพื่อช่วยตัดสินใจ (OLAP)
ฐานข้อมูลในงานช่วยตัดสินใจมีหน้าที่เหมือนชื่อของมัน คือช่วยให้ผู้จัดการหรือเจ้าหน้าที่ในระดับบริหารมีข้อมูลสำหรับใช้ตัดสินใจดำเนินการในเรื่องต่างๆ ยกตัวอย่างการใช้งานฐานข้อมูลในงานช่วยตัดสินใจมีดังนี้

•    ฐานข้อมูลแบบโกดังข้อมูล: โกดังข้อมูล (data warehouse) มีแบบจำลองเหมือนกับฐานข้อมูลในงานธุรกรรม จะแปลกกันที่งานโกดังข้อมูลมักเก็บข้อมูลประวัติย้อนหลังไปหลายปีเพื่อใช้ในการทำนายแนวโน้ม ขณะที่งานธุรกรรมจะเก็บเฉพาะข้อมูลปัจจุบัน ดังนั้นฐานข้อมูลแบบโกดังข้อมูลจะมีขนาดใหญ่กว่าฐานข้อมูลในงานธุรกรรมหลายเท่า (บางครั้งใหญ่กว่าเป็นล้านเท่า) ข้อมูลที่อยู่ในโกดังข้อมูลมักเป็นข้อมูลที่รวบรวมมาจากฐานข้อมูลแบบ OLTP (คือย้ายข้อมูลมาจาก OLTP แล้วจึงลบข้อมูลใน OLTP ไปเสีย) โกดังข้อมูลต้องการแบบจำลองข้อมูลที่ถูกออกแบบมาเพื่อการนี้โดยเฉพาะ
•    ฐานข้อมูลแบบคลังข้อมูล: คลังข้อมูล (data mart) คล้ายโกดังข้อมูลแต่มีขนาดเล็กกว่ามาก มีหน้าที่ใช้พักข้อมูลชั่วคราวเพื่อการประมวลผลก่อนนำไปสร้างโกดังข้อมูล คลังข้อมูลจะมีแบบจำลองเหมือนกันกับโกดังข้อมูล
•    ฐานข้อมูลรายงาน: ฐานข้อมูลรายงานมีลักษณะเช่นเดียวกับโกดังข้อมูลแต่มีขนาดเล็กกว่า ฐานข้อมูลรายงานจะมีเฉพาะข้อมูลที่จำเป็นต้องใช้ในการทำรายงาน ขณะที่โกดังข้อมูลมีข้อมูลเก่าย้อนหลังไปนาน (archived data) สาเหตุที่ต้องมีฐานข้อมูลรายงานไม่ทำรายงานจากโกดังข้อมูลโดยตรงเพราะโกดังข้อมูลมีขนาดใหญ่เทอะทะไม่ยืดหยุ่น จึงใช้ทำรายงานได้ไม่สะดวก

IgniteAgentless_3b

ภาพ : 3-2 : ตัวอย่างระบบงานโกดังข้อมูลหรือดาต้าแวร์เฮาส์ใช้งานผ่านเว็บ

 

3.3. ฐานข้อมูลแบบผสมผสาน
ฐานข้อมูลแบบผสมผสาน (Hybrid Database ย่อ HD) คือการผสมความต้องการระหว่างฐานข้อมูลในงานธุรกรรมและฐานข้อมูลในงานช่วยตัดสินใจเอาไว้ด้วยกัน จุดมุ่งหมายของ HD คือต้องการลดค่าใช้จ่าย เพราะ HD จะมีเพียงฐานข้อมูลเดียว ใช้เซอฟเวอร์เพียงตัวเดียว จึงประหยัดค่าฮาร์ดแวร์ ซอฟต์แวร์ และรายจ่ายอื่นๆ ในการบำรุงรักษา  HD จึงเหมาะสำหรับงานที่มีปริมาณการไหลของข้อมูลต่ำและมีจำนวนผู้ใช้ไม่มากนัก

 

3.4. มุมมองใหม่ต่อฐานข้อมูล
ความก้าวหน้าทางฮาร์ดแวร์ที่เกิดขึ้นอยู่ตลอดเวลาทำให้คอมพิวเตอร์ที่เราใช้ทำฐานข้อมูลในปัจจุบันนี้แตกต่างจากสมัยที่ผู้เขียนสร้างฐานข้อมูลด้วยโปรแกรมดีเบสทู (dBase II) กฎของมัวร์บอกเราว่าตัวประมวลผลจะมีความเร็วเพิ่มเป็นสองเท่าในทุกๆ สิบแปดเดือน แต่ความก้าวหน้าทางฮาร์ดแวร์ไม่ได้จำกัดอยู่เฉพาะกับตัวประมวลผลเท่านั้น อุปกรณ์รอบข้างต่างๆ เช่นหน่วยบักทึกข้อมูลก็มีความจุมากกว่าเดิม และมีราคาถูกลงอย่างรวดเร็ว

เมื่อไม่กี่ปีมานี้เคยมีปัญหาใหญ่เรื่องแถบความกว้างในการไหลของข้อมูล (data bandwidth) ที่ใช้เพื่อรับ-ส่งข้อมูลระหว่างหน่วยความจำแรมกับฮาร์ดดิสก์มีขนาดเล็กและมีความเร็วต่ำ เปรียบเหมือนมีบ่อน้ำขนาดยักษ์แต่ท่อส่งน้ำมีขนาดเล็กจิ๋ว แต่ตอนนี้ปัญหาหมดไปแล้วเพราะฮาร์ดดิสก์รุ่นใหม่มีความเร็วสูงมาก

 

003

ภาพ 3-3 : โปรแกรมดีเบสทูเป็นโปรแกรมจัดการฐานข้อมูลเคยได้รับความนิยมอย่างสูง แต่มันไม่ใช่ RDBMS และไม่สนับสนุนภาษา SQL

 

04 febbraio

แบบจำลองฐานข้อมูล: ตอน 4

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แบบจำลองฐานข้อมูล: ตอน 4

 

 2.7.6. แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์
แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์ (Object-Relational Database Model ย่อ ORDM) เป็นแบบจำลองใหม่สุดที่นำข้อดีของ RDM และ ODM มารวมกัน ปรากฏขึ้นครั้งแรกในปี 1990 และยังได้รับการพัฒนาอยู่อย่างต่อเนื่อง  ข้อดีของแบบจำลอง  ORDM คือสามารถเขียนคิวรีได้แบบเดียวกับ RDM ข้อเสียคือความซับซ้อนของมัน

อย่างที่เรียนไปแล้ว่า ODM มีข้อดีที่เป็นสามมิติทำให้เข้าถึงข้อมูลได้รวดเร็วมาก ไม่ว่าข้อมูลนั้นจะอยู่ที่ส่วนไหนของฐานข้อมูลก็ตาม แต่มีข้อเสียที่ข้อมูลต้องเป็นชิ้นเล็กๆ เช่นแถวเดียว ถ้ามากกว่านั้น ODM จะทำงานช้าอย่างยิ่งยวด  ส่วน RDM เป็นสองมิติทำให้การเข้าถึงข้อมูลทำได้เร็วไม่ว่าจะเป็นข้อมูลแค่ทูเพิลเดียวหรือเป็นพันๆ ทูเพิล  RDM จึงเหมาะสุดเมื่อนำมาใช้กับข้อมูลก้อนโต แบบจำลอง  ORDM  ถูกพัฒนาขึ้นเพื่อกำจัดจุดอ่อนและผนวกข้อดีของทั้ง ODM และ  RDM เข้าไว้ด้วยกัน

อันที่จริงโปรแกรม RDBMS รุ่นใหม่ๆ จะมีคุณสมบัติบางอย่างของ ODM อยู่ในระดับหนึ่ง เช่นสามารถเก็บออพเจ็กต์แบบไบนารีได้ สามารถใส่เมธอดให้แก่ออพเจ็กต์ได้ ปัญหาหลักของการเก็บออพเจ็กต์แบบไบนารีใน RDM คือต้องเก็บออพเจ็กต์ใหญ่ๆ ไว้เป็นโครงสร้างย่อหรือตารางที่มีฟิลด์เดียวแยกไว้ต่างหาก แต่ก็มีบาง RDBMS ที่เก็บออพเจ็กต์ใหญ่ๆ ไว้นอกตาราง คือเก็บเป็นแฟ้มภายนอกได้ด้วย

 

2.7.7. แบบจำลองฐานข้อมูลวัตถุวิธี
แบบจำลองฐานข้อมูลวัตถุวิธี (Object Oriented Database Model ย่อ OODM) เป็นการผนวกข้อมูลและส่วนโค้ดที่จัดการมันไว้เป็นก้อนเดียวกัน (เหมือนออพเจ็กต์ในวิชา OOP) โปรแกรม DBMS ที่สนับสนุน OODM จะเรียกย่อว่า ODBMS (object database management system)โปรแกรม ODBMS ช่วยให้นักเขียนโค้ดใช้ภาษา OOP อย่าง C# จัดการฐานข้อมูลได้เหมือนเป็นออพเจ็กต์หนึ่ง

OODM ถูกพัฒนาขึ้นในปี 1985 โดยนักวิชาการหลายกลุ่มเช่นนักวิจัยที่มหาวิทยาลัย บราวน์ และ เอ็มไอที ช่วงแรก OODM จะใช้งานร่วมกับภาษา OOP เดิมอย่าง Smalltalk และ LISP ภายหลังปี 1990 เริ่มมี OODM ที่ใช้งานกับภาษาจาวา และปัจจุบันกำลังนิยมใช้กับภาษา C#

 

013

ภาพ 2-13 : มหาวิทยาลัย บราวน์ ซึ่งเป็นหนึ่งในต้นกำเนิดแบบจำลองฐานข้อมูลแบบวัตถุวิธี

 

เดิมทีภาษาคิวรีสำหรับ OODM เรียกว่าภาษา OQL (Object Query Language) มีหลายแบบ จนกระทั่งในปี 2005 คุก ไร และโรเซนเบอร์เกอร์ได้กำหนดมาตรฐานให้แก่ภาษา OQL เรียกว่าเนทีฟคิวรี (Native Queries) ซึ่งเป็นคิวรีแบบไทป์เซฟผนวกไว้ในภาษาจาวาและ C# ต่อมาในปี 2007 บริษัทไมโครซอฟต์ออก .NET Framework เวอร์ชัน 3.5 ซึ่งผนวกภาษา LINQ (อ่านว่าลิงค์ ย่อจาก Language Integrated Query) เพื่อให้นักเขียนโค้ดสามารถเขียนคิวรีไว้ภายในภาษา C# ได้โดยตรง (ดูบทที่ 31)

OODM เหมะกับงานฐานข้อมูลที่ซับซ้อนมากๆ มีผู้ทำการทดลองเพื่อวัดประสิทธิภาพระหว่าง RDM และ OODM พบ OODM มีประสิทธิภาพเหนือกว่า RDM ในงานบางอย่าง แต่ข้อเสียของ OODM ก็มีหลายอย่าง เช่น ไม่สามารถนำมาใช้ร่วมกับเครื่องมือต่างๆ ที่เป็นมาตรฐานเช่นเครื่องมือ OLAP เครื่องมือสำหรับการทำสำรองข้อมูล และการกู้ข้อมูล นอกจากนั้น OODM (และ OQL) ยังขาดพื้นฐานของหลักการพีชคณิตและแคลคูลัสสัมพันธ์ที่มีใน RDM ด้วยสาเหตุนี้ทำให้หลายๆ ฝ่ายมองว่า OODM ไม่เหมาะกับการนำมาใช้งานจริงเพราะยังไม่สมบูรณ์และมีสิ่งที่ต้องพัฒนาอีกมาก

 

2.8. สรุปท้ายบท
คอมพิวเตอร์เตอร์ย่อมมีประโยชน์น้อยหากขาดข้อมูลเพื่อใช้ประมวลผล การคิดค้นสร้างแบบจำลองฐานข้อมูลจึงเกิดขึ้นพร้อมๆ กับวิทยาการคอมพิวเตอร์ แบบจำลองฐานข้อมูลถูกพัฒนามาแล้ว 7 ยุคสมัย คือ Flat File, HDM, NDM, RDM, ODM, ORDM และ OORDM แบบจำลองสามแบบแรกหมดความนิยมใช้งานไปแล้ว ส่วนแบบจำลองที่เหลือยังมีใช้งานกันอยู่ครบทั้งสี่แบบ

บทที่เหลือของหนังสือนี้ผู้เขียนจะเน้นเฉพาะ RMD เท่านั้นเพราะเป็นแบบจำลองที่ได้รับความนิยมมากที่สุด และแบบจำลองประเภทอื่นๆ อยู่นอกเหนือขอบเขตของหนังสือเล่มนี้ โดยในบทต่อไปท่านจะได้เรียนวิธีประยุกต์ใช้งานแบบจำลองนี้

 

2.9. คำถามท้ายบท
1.    แอพลิเกชันคืออะไร
2.    ในเรื่องฐานข้อมูลคำว่าโปร่งใสหมายถึงอะไร
3.    OLTP คืออะไร
4.    ดาต้าแวร์เฮาส์ คืออะไร
5.    วิววัตถุคืออะไร
6.    ชนิดข้อมูลพื้นฐานประกอบด้วยอะไรบ้าง
7.    พอยน์เตอร์คืออะไร
8.    RDBMS คืออะไร
9.    แฟ้มแบบ CSV คืออะไร
10.    จงบอกข้อดีและข้อเสียของแบบจำลองฐานข้อมูลแบบลำดับชั้น
11.    ข้อดีคือการเพิ่มลดระเบียน (record) ทำได้ง่ายมาก ข้อเสียคือการค้นหาข้อมูลทำได้ช้าเพราะต้องไล่ไปตามลำดับชั้น
12.    จงบอกข้อดีและข้อเสียของแบบจำลองฐานข้อมูลสัมพันธ์

 

2.10. แบบฝึกหัดท้ายบท
จงเขียนคิวรีภาษา T-SQL เพื่อฉายแสดงข้อมูลทุกแถวในตาราง Employees ในฐานข้อมูล NorthWind โดยแสดงเฉพาะคอลัมน์ EmployeeID, LastName, FirstName, Title และ TitleOfCourtesy

 


แบบจำลองฐานข้อมูล: ตอน 3

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แบบจำลองฐานข้อมูล: ตอน 3

 

2.7. วิวัฒน์ของแบบจำลองฐานข้อมูล
การพัฒนาแบบจำลองข้อมูลเริ่มขึ้นตั้งแต่เริ่มมีการสร้างคอมพิวเตอร์ในปี ค.ศ. 1940 ช่วงแรกเป็นแบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบเครือข่าย (network database model) แบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบลำดับชั้น (hierarchical database model) ซึ่งทั้งสองแบบเป็นแบบจำลองที่ไม่สู้มีประสิทธิภาพนัก ต่อมาในช่วงปี 1960 จึงมีการคิดแบบจำลองข้อมูลสัมพันธ์ (relational database model) ที่ใช้งานได้จริงจัง และถือว่าเป็นแบบที่มีประสิทธิภาพสูงสุด และนิยมใช้กันมาจนถึงทุกวันนี้

 

006

ภาพ 2-6 : วิวัฒนาการของแบบจำลองข้อมูล

 

2.7.1. แบบจำลองฐานข้อมูลแบบ File System
แบบจำลองฐานข้อมูลแบบ File Systems เป็นแบบจำลองฐานข้อมูลที่โบราญสุด ปรากฏตัวขึ้นตั้งแต่เริ่มมีคอมพิวเตอร์คือก่อนปี 1950 และถูกใช้เรื่อยมาจนเสื่อมความนิยมไปในปี 1970 ข้อดีของ File Systems คือไม่ซับซ้อนทำความเข้าใจได้ง่าย ข้อเสียของ File Systems คือการขาดความยืดหยุ่น

File Systems จะเก็บข้อมูลเรียงติดกันไปหมด โปรแกรมจะแยกแยะว่าส่วนไหนเป็นข้อมูลอะไรได้ด้วยการนับจำนวนไบต์ เพราะความกว้างของคอลัมน์จะมีขนาดตายตัว หากข้อมูลสั้นกว่าก็จะถมด้วยเลขศูนย์หรือเครื่องหมายวรรค เราเรียก File Systems ได้อีกอย่างหนึ่งว่า Flat File

Flat File ที่ยังเหลือให้เห็นอยู่ในปัจจุบันคือแฟ้มแบบ CSV ซึ่งเป็นแบบที่คั่นคอลัมน์ด้วยคอมมา (comma-delimited file) เป็นแฟ้มที่เก็บข้อมูลตัวอักษรธรรมดา (text file) ข้อมูลแต่ละคอลัมน์ถูกคั่นด้วยเครื่องหมายจุลภาค  (,) แต่ละบรรทัดถูกแยกจากกันด้วยรหัสขึ้นบรรทัดใหม่ (รหัส new line ในภาษาซีคือ \n) ถ้าพูดให้ถึงที่สุดแล้วแฟ้มแบบ CSV ไม่ใช่ Flat File เพราะการมีคอมมาคั่นอาจถือว่าเป็นโครงสร้างอย่างหนึ่งได้เหมือนกัน

 

007

ภาพ 2-7 : แฟ้มแบบ CSV หรือแบบคั่นด้วยคอมมา (comma-delimited file)

 

2.7.2. แบบจำลองฐานข้อมูลแบบลำดับชั้น
แบบจำลองฐานข้อมูลแบบลำดับชั้น (Hierarchical Database Model ย่อ HDM) เกิดขึ้นในปี 1950 เป็นแบบจำลองฐานข้อมูลที่ถูกพัฒนาให้มีประสิทธิภาพดีกว่า File System และถูกใช้เรื่อยมาจนเสื่อมความนิยมไปในปี 1980 ข้อดีของ HDM คือการเพิ่มลดระเบียน (record) ทำได้ง่ายมาก ข้อเสียคือการค้นหาข้อมูลทำได้ช้าเพราะต้องไล่ไปตามลำดับชั้น

HDM มีโครงสร้างเหมือนต้นไม้กลับหัว คือรากอยู่บนสุดแล้วลำต้นแตกกิ่งก้านลงไปข้างล่าง (ดูภาพ 2-8)  ตารางที่อยู่บนคือตารางแม่ (parent table) ตารางที่มีลำดับต่ำกว่าคือตารางลูก (child table)

HDM มีความสัมพันธ์เป็นแบบ "หนึ่งต่อหลาย" (one to many) เพราะตารางแม่หนึ่งตารางอาจมีตารางลูกได้หลายตาราง และในขณะเดียวกันตารางลูกใดๆ อาจมีตารางลูกลงไปอีกชั้นหนึ่ง ทำให้มันมีฐานะเป็นตารางแม่ด้วยเช่นกัน ในทำนองเดียวกัน ตารางแม่ใดๆ อาจมีตารางแม่อยู่เหนือตัวมันอีก ทำให้มันมีฐานะเป็นตารางลูกด้วยเช่นกัน

 

008

ภาพ 2-8 : ในแผนภูมิแสดงแบบจำลองฐานข้อมูลแบบลำดับชั้นนี้ตารางงาน (Task)  คือส่วนหนึ่งของตารางโครงการ (Project) ตารางโครงการและตารางพนักงาน (Employee) เป็นส่วนหนึ่งของตารางผู้จัดการ (Manager) ตารางผู้จัดการเป็นส่วนหนึ่งของตารางแผนก (Department) ตารางแผนกต่างๆ เป็นส่วนหนึ่งของตารางบริษัท (Company) ข้อเสียของแบบจำลองฐานข้อมูลแบบลำดับชั้นคือการค้นหาข้อมูลต้องไล่ไปตามโหนดต่างๆ ยกตัวอย่างในภาพนี้หากต้องการค้นข้อมูลในตารางพนักงาน การค้นต้องทำจากบนสุดแล้วท่องไปในโหนดต่างๆ คือตารางบริษัท ตารางแผน ตารางผู้จัดการ แล้วจึงมาถึงตารางพนักงาน

 

2.7.3. แบบจำลองฐานข้อมูลแบบเครือข่าย
แบบจำลองฐานข้อมูลแบบเครือข่าย (Network Database Model ย่อ NDM) ถูกพัฒนามาจาก HDM เริ่มปรากฏในปี 1960 และถูกใช้เรื่อยมาจนเสื่อมความนิยมไปในปี 1990 แบบจำลอง NDM คล้ายคลึงกันมากกับ HDM จึงมีข้อดีข้อเสียใกล้เคียงกัน

คำว่าเครือข่ายในที่นี้ไม่ได้หมายถึงเครือข่ายคอมพิวเตอร์ แต่หมายถึงตารางต่างๆ ถูกนำมาเชื่อมโยงกันเป็นเครือข่ายเพื่อให้ตารางลูกมีตารางแม่ได้มากกว่าหนึ่งตาราง (ต่างจาก HDM ที่ตารางลูกมีตารางแม่ได้ได้เพียงตารางเดียว)  NDM จึงมีความสัมพันธ์เป็นแบบ "หลายต่อหลาย" (many to many)

 

009

ภาพ 2-9 : แผนภูมิแสดงแบบจำลองฐานข้อมูลแบบเครือข่าย จะเห็นว่าตารางผู้จัดการเป็นทั้งส่วนหนึ่งของตารางแผนกและตารางบริษัท หรือพูดอีกอย่างหนึ่งคือไม่เฉพาะตารางแผนกเท่านั้นที่มีตารางผู้จัดการ แต่ตารางบริษัทเองก็มีผู้จัดการด้วยเช่นกัน และตารางพนักงานสามารถแยกออกเป็นประเภทต่างๆ ของพนักงานได้

 

2.7.4. แบบจำลองฐานข้อมูลสัมพันธ์
แบบจำลองฐานข้อมูลสัมพันธ์ (Relational Database Model ย่อ RDM) เป็นแบบจำลองข้อมูลที่ถูกพัฒนาด้วยแนวคิดใหม่ซึ่งแตกต่างจากแบบจำลองฐานข้อมูล  HDM และ NDM ไปมาก RDM เริ่มปรากฏในปี 1970 และถูกใช้เรื่อยมาจนถึงทุกวันนี้ ข้อดีของ RDM คือมีบูรณภาพของข้อมูลดีมาก ข้อเสียคือโปรแกรม DBMS ซับซ้อนกว่าแบบจำลองสามแบบแรก

เมื่อพูดว่าความสัมพันธ์ (relational) คนทั่วไปมักนึกถึงการเชื่อมโยงระหว่างตารางต่างๆ ด้วยคีย์ต่างๆ (เช่นไพรมารีคีย์และฟอร์เรนคีย์) แต่อันที่จริงแล้วคำว่า "ความสัมพันธ์" ในวิชา  RDM หมายถึงความเชื่อมโยงของแอตทริบิวต์และทูเพิลภายในตาราง ไม่ใช่การเชื่อมโยงระหว่างตาราง

RDM มีประสิทธิภาพสูงกว่า  HDM และ NDM เช่นหากต้องการค้นหาข้อมูลของพนักงานหนึ่งคน เราไม่ต้องไล่จากตารางบนสุด (ตารางบริษัท) แล้วท่องไปตามตารางต่างๆ จนกระทั่งถึงตารางพนักงาน แต่เราสามารถเข้าถึงตารางพนักงานได้โดยตรง ข้อดีอีกอย่างหนึ่งของ RDM คือเราสามารถเชื่อมโยงตารางต่างๆ เข้าด้วยกันได้โดยไม่จำเป็นต้องคำนึงถึงลำดับชั้น คือตารางหนึ่งๆ จะเชื่อมโยงกับตารางอื่นๆ อย่างไรก็ได้โดยอิสระ

 

010

ภาพ 2-10 : สมมุตว่าเรามีตารางอยู่สองตาราง ตารางแรก Project (กรอบบน) ทำหน้าที่เก็บข้อมูลโครงการต่างๆ อีกตารางหนึ่งคือ Task  (กรอบล่าง) ทำหน้าที่เก็บรายละเอียดงานต่างๆ ในหนึ่งโครงงาน สองตารางนี้เชื่อมกันได้ด้วยคอลัมน์ Project_ID ซึ่งเป็นรหัสงาน ตัวเลขนี้ทำหน้าที่เป็นไพรมารีคีย์ในตาราง Project ซึ่งจะไม่มีค่าซ้ำกัน แต่ในตาราง Task คอลัมน์ Project_ID ทำหน้าที่เป็นฟอร์เรนคีย์ (คือเป็นคีย์สำหรับอ้างถึงข้อมูลในตารางอื่น) อาจมีค่าซ้ำกันได้ ยกตัวอย่างเช่นในตาราง Project บรรทัดแรก Project_ID เท่ากับ 1 คือโครงการ Software sales data mart มีงานย่อยสามงาน คือบรรทัดที่หนึ่งถึงสามในตาราง Task จะเห็นว่าคอลัมน์ Project_ID ในตาราง Task มีเลข 1 ซ้ำกันอยู่สามแถว

 

011

ภาพ 2-11 : แผนภูมิแสดงแบบจำลองฐานข้อมูลสัมพันธ์ตามตัวอย่างตารางในภาพ 2-10


 

2.7.5. แบบจำลองฐานข้อมูลแบบวัตถุ
แบบจำลองฐานข้อมูลแบบวัตถุ  (Object Database Model ย่อ ODM) เป็นแนวคิดใหม่ที่ปรากฏขึ้นในปี 1980 และยังได้รับการพัฒนาต่อเนื่องมาจนถึงทุกวันนี้  แบบจำลอง ODM อาศัยแนวคิดว่าข้อมูลเป็นออพเจ็กต์เหมือนออพเจ็กต์ในวิชา OOP (การเขียนโปรแกรมวัตถุวิธี)  แบบจำลอง ODM มีข้อดีคือการทำงานได้มีประสิทธิภาพสูงกว่า RDM อย่างชัดเจนในบางสถานการณ์ แต่มีข้อเสียคือเรียนรู้ได้ยากและผนวกกับภาษา OOP มาตรฐานอย่าง C# ไม่ได้

แบบจำลอง ODM มีโครงสร้างสามมิติ (ขณะที่ RDM เป็นโครงสร้างสองมิติ คือประกอบด้วยแอตทริบิวต์และทูเพิล)  ทำให้การดึงข้อมูลจากตำแหน่งใดๆ เป็นไปได้รวดเร็วมาก  แต่มีข้อเสียคือหากดึงข้อมูลปริมาณมากจะทำได้ช้ากว่า RDM แบบจำลอง ODM มีคุณสมบัติบางอย่างที่เหนือกว่า RDM อาทิ ไม่ต้องมีชนิดข้อมูลและไม่ต้องมีตารางแสดงความสัมพันธ์ ข้อดีอีกอย่างหนึ่งของ ODM คือเหมาะใช้พัฒนาแอพลิเกชันที่ซับซ้อนมากๆ เพราะวัตถุหรือออพเจ็กต์สามารถสืบคุณสมบัติกันได้ ทำให้สามารถพัฒนาออพเจ็กต์ที่ซับซ้อนอย่างยิ่งได้จากออพเจ็กต์ที่ไม่ซับซ้อนหลายๆ ตัวหรือหลายๆ ระดับชั้น

 

012

ภาพ 2-12 : นี่คือฐานข้อมูลเดียวกันกับในหัวข้อแบบจำลองฐานข้อมูลสัมพันธ์ แต่ภาพนี้แสดงในแบบจำลองฐานข้อมูลแบบวัตถุ โปรดสังเกตว่าคลาสพนักงาน (Employee Class) อยู่ในคอลเลคชันเดียวกันกับคลาสผู้จัดการ  (Manager Class) โดยมีคลาสงาน (Task Class) และคลาสอื่นๆ สืบคุณสมบัติไปจากมัน (เช่นคลาสพนักงานเต็มเวลา Full Time Employee Class)

 

แบบจำลองฐานข้อมูล: ตอน 2

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แบบจำลองฐานข้อมูล: ตอน 2

 

2.4. นิยามชนิดข้อมูล
ชนิดข้อมูลคือลักษณะหรือแบบแผนของข้อมูล แบ่งออกเป็นกลุ่มใหญ่ๆ สามกลุ่มดังนี้
•    ชนิดข้อมูลพื้นฐาน: คือข้อมูลสำหรับข้อมูลเดี่ยวๆ (สเกลาร์) เช่นข้อมูลแบบตัวอักษร ข้อมูลแบบตัวเลข
•    ชนิดข้อมูลซับซ้อน: เป็นโครงสร้างย่อย เช่นอาร์เรย์และออพเจ็กต์แบบไบนารี
•    ชนิดข้อมูลพิเศษ: โครงสร้างข้อมูลที่ก้าวหน้าเช่น โครงสร้างในเอกสารแบบ XML และข้อมูลมัลติมีเดียเช่นวิดีโอ เสียงและแผนภูมิ

 

2.4.1. ชนิดข้อมูลพื้นฐาน
ชนิดข้อมูลพื้นฐานแบ่งออกเป็นประเภทต่างๆ หลายแบบ จำนวนประเภทแตกต่างกันไประหว่างโปรแกรม DBMS แต่ละยี่ห้อ โดยทั่วไปแล้วชนิดข้อมูลพื้นฐานจะมีแบบต่างๆ ดังนี้

  • ตัวอักษร: ตัวอักษร (string) เก็บข้อมูลตัวอักษรหนึ่งหรือหลายๆ ตัว แบ่งออกเป็นชนิดย่อยดังนี้
    o    แบบความยาวคงที่: ข้อมูลตัวอักษรที่มีความยาวของสายอักขระที่แน่นอน เช่น CHAR(3) กำหนดความยาวไว้สามตัวอักษร หากนำมาใส่ข้อมูลที่มีความยาวเพียงสองตัวอักษร DBMS จะแทรกรหัสอักษรเคาะวรรคไว้หนึ่งตัวเพื่อทำให้มีจำนวนอักษรครบสามตัว
    o    แบบความยาวไม่คงที่: มีความยาวของสายอักขระที่ไม่แน่นอน เช่น VCHAR(10) กำหนดความยาวไว้สิบตัวอักษร หากนำมาใส่ข้อมูลที่มีความยาวเพียงห้าตัวอักษร DBMS จะไม่แทรกรหัสใดๆ ต่อท้ายเพื่อให้มีจำนวนครบสิบตัว
  • ตัวเลข: ข้อมูลตัวที่ใช้เพื่อข้อมูลเก็บตัวเลขแบ่งออกเป็นสามชนิดย่อยคือ
    o    จำนวนเต็ม: ใช้เก็บตัวเลขที่ไม่มีจุดทศนิยม เช่น SINT (TINYINT), INT และ LONGINT
    o    ทศนิยมหลักคงที่: ใช้เก็บตัวเลขที่มีจำนวนหลักที่แน่นอน ยกตัวอย่างเช่น DECIMAL(5.2) คือการกำหนดให้เก็บตัวเลขได้ 5 หลัก และมีเลขหลังทศนิยมได้ 2 ตำแหน่ง จึงสามารถเก็บข้อมูล12345.67 และ 12.34 ได้ แต่เก็บ 12.345 หรือ 123456.12 ไม่ได้
    o    โฟลตติงพอยน์: floating point ใช้เก็บตัวเลขทศนิยมที่มีตำแหน่งทศนิยมไม่แน่นอน เช่น 1234, 123.45, 0.1234 เหล่านี้เป็นค่าที่เก็บด้วยชนิดข้อมูลโฟลตติงพอยน์ได้
  • วันที่: เก็บวันเดือนปีในลักษณะต่างๆ และอาจรวมข้อมูลเวลาไว้ด้วยก็ได้

 

003

ภาพ 2-3 : ตัวอย่างชนิดข้อมูลแบบเวลาใน SQL2008


2.4.2. ชนิดข้อมูลซับซ้อน
ชนิดข้อมูลซับซ้อนเป็นโครงสร้างข้อมูล หรือข้อมูลที่อยู่รวมกันเป็นกลุ่ม (data collection) ยกตัวอย่างเช่น
•    ไบนารี: ข้อมูลแบบไบนารี (binary) คือข้อมูลในรูปเลขฐานสองที่เป็นก้อนขนาดใหญ่ เช่นรูปภาพ วิดีโอ เสียง ไม่สามารถบรรจุไว้ในแถวของตารางโดยตรงได้ เพราะปรกติแถวของตารางจะเก็บข้อมูลได้รวมกันไม่เกิน 2KB
•    พอยน์เตอร์: เป็นข้อมูลไบนารีที่ใช้สำหรับชี้ตำแหน่งข้อมูลในหน่วยความจำหรือในจานบันทึกข้อมูล
•    อาร์เรย์: (array) คือโครงสร้างข้อมูลที่มีการเรียงตัวซ้ำๆ กัน แบ่งออกเป็นอาร์เรย์แบบความยาวคงที่ และอาร์เรย์แบบความยาวเปลี่ยนแปลงได้ (dynamic array)
•    ชนิดข้อมูลที่ผู้ใช้นิยามขึ้นเอง: (User Defined Type ย่อ UDT) เป็นชนิดข้อมูลที่ผู้ใช้สร้างขึ้นโดยนำชนิดข้อมูลพื้นฐานมาจัดรูปแบบเป็นโครงสร้างที่แน่นอน เช่น structure

 

004

ภาพ 2-4 : ตัวอย่างชนิดข้อมูลแบบพอยน์เตอร์


2.4.3. ชนิดข้อมูลพิเศษ
ชนิดข้อมูลพิเศษคือชนิดข้อมูลที่เป็นออพเจ็กต์ และสามารถสืบคุณสมบัติของออพเจ็กต์ได้ เช่นแฟ้มข้อมูล XML และออพเจ็กต์ที่เป็นมัลติมีเดีย

 

2.5. นิยาม RDBMS
RDBMS (ย่อจาก Relational Database Management System) คือคำที่ใช้เรียกชุดโปรแกรมทั้งมวลที่ประกอบเป็นเอนจินฐานข้อมูลและโปรแกรมจัดการฐานข้อมูล บางครั้งนับรวมชุดพัฒนาโปรแกรม (Software Development Kit หรือ SDK) และส่วนเครื่องมือสำรับใช้งานที่มีส่วนติดต่อกับผู้ใช้เป็นกราฟิกด้วย โปรแกรม SQL2008 ก็เข้าข่ายนิยามนี้ สรุปว่า RDBMS ก็คือเอนจินฐานข้อมูลบวกซอฟต์แวร์ที่เกี่ยวข้องทั้งหลายบรรจุไว้เป็นชุดเดียวกัน

 

2.6. ความเป็นมาของ  RDBMS
RDBMS  ถูกประดิษฐ์คิดค้นโดยนักวิจัยของบริษัทไอบีเอ็มชื่อ ดร. อี เอฟ คอดด์ (Dr. E. F. Codd) ภายหลังทีมงานฐานข้อมูลของไอบีเอ็มได้นำแนวคิดนี้ไปสร้างเป็นสินค้า งานวิจัยของคอดด์เน้นการลดทอนความซ้ำซ้อนของการเก็บข้อมูลโดยใช้กระบวนการ "นอร์มาไลเซชัน"  (normalization) กระบวนการนี้ประกอบด้วยขั้นตอนต่างๆ หลายขั้นตอน แต่ละขั้นตอนเรียกว่า "นอร์มัล ฟอร์ม" (normal form)

แนวคิดพื้นฐานที่คอดด์พรรณนาไว้ในเอกสารวิชาการจำนวนมากกลายมาเป็นภาษาสืบค้นข้อมูลต่อโครงสร้าง (Structured Query Language) หรือภาษา SQL ภาษานี้ถูกนำไปต่อยอดโดยคณะบุคคลในหลายๆ โครงการ เกิดเป็นผลิตภัณฑ์หลายสายตระกูลดังที่เห็นในภาพ 2-5  (อ่านรายละเอียดเรื่องคอดด์และประวัติของฐานข้อมูลสัมพันธ์เพิ่มเติมได้ในภาคผนวก)

 

005

ภาพ 2-5 : แนวคิดพื้นฐานที่คอดด์พรรณนาไว้ในเอกสารวิชาการหลายฉบับถูกคณะบุคคลหลายกลุ่มนำไปพัฒนาต่อยอด ช่วงปี  1970 ทีมนักวิจัยของไอบีเอ็มที่เมือง ซาน โฮเซ (เมือง San Jose ในแคลิฟอร์เนีย ปัจจุบันคือศูนย์วิจัย อัลมาเดน) ผู้พัฒนาโครงการ System R นำแนวคิดของคอดด์ไปพัฒนาเป็นภาษา SQL และผลิตภัณฑ์ DB2 ซึ่งเป็นผลิตภัณฑ์ RDBMS ที่วิ่งในหลายโอเอสเช่น UNIX, Windows และ Linux รวมถึง z/OS ซึ่งเป็นโอเอสแบบหกสิบสี่บิตทำงานในคอมพิวเตอร์แบบเมนเฟรมของไอบีเอ็ม

 

ในช่วงปี 1997 ถึง 1998 นักวิทยาศาสตร์สองคนที่มหาวิทยาลัยแคลิฟอร์เนีย วิทยาเขตเบอร์คลีย์ ทำโครงการ Ingres ซึ่งเป็น RDBMS ที่ทำงานในระบบปฏิบัติการ UNIX บนคอมพิวเตอร์ของบริษัท DEC เนื่องจากผู้สร้าง Ingres ขายซอร์สโค้ดในราคาถูกภายใต้สัญญาการใช้งานแบบ BSD (Berkeley Software Distribution) จึงมีบริษัทเอกชนหลายรายนำซอร์สโค้ดไปสร้างเป็นสินค้า เช่น ออราเคิล ไซเบสและไมโครซอฟต์ (ไมโครซอฟต์ซื้อสิทธิจากไซเบสอีกทอดหนึ่ง)

นักวิทยาศาสตร์ที่เบอร์คลีย์ตั้งบริษัทชื่อ Ingres ขาย  RDBMS ในลักษณะโอเพ่นซอร์สต่อมาแตกออกเป็นอีกสองบริษัทคือ Informix (ถูกไอบีเอ็มซื้อกิจการไปในปี 2001)  และ Postgres ซึ่งเป็น  RDBMS แบบออพเจ็กต์สัมพันธ์ที่ฟรี (สัญญาการใช้งานแบบ BSD) ในทศวรรษ 1990 บริษัทออราเคิล (และ Postgres) นำแนวคิดของคอดด์มาต่อยอดเป็นแบบจำลองฐานข้อมูลแบบวัตถุ และแบบจำลองฐานข้อมูลแบบออพเจ็กต์สัมพันธ์

 


แบบจำลองฐานข้อมูล: ตอน 1

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

แบบจำลองฐานข้อมูล: ตอน 1

 

ท่านคงเคยเห็นแบบจำลองของเครื่องบิน รถถัง รถไฟ ในการก่อสร้างอาคาร สถาปนิกมักสร้างแบบจำลองของอาคารก่อนสร้างจริง เพื่อใช้เป็นเครื่องตรวจสอบการออกแบบ และเพื่อให้ผู้เกี่ยวข้องในโครงการได้เห็นภาพรวมของโครงการ แบบจำลองฐานข้อมูล (database model) ก็มีจุดประสงค์เดียวกัน คือเป็นเครื่องมือสำหรับใช้พรรณนาโครงสร้าง และคุณสมบัติต่างๆ ของฐานข้อมูล แบบจำลองฐานข้อมูลมีหลายแบบ ถูกปรับปรุงเปลี่ยนแปลงมาเป็นระยะเวลาไม่ต่ำกว่าห้าสิบปี

ในบทนี้ท่านจะได้เรียนเรื่องแบบจำลองฐานข้อมูลซึ่งประกอบด้วยหัวข้อต่างๆ ดังนี้

•    การประยุกต์ใช้งาน
•    สองสถาปัตยกรรม
•    วิวและออพเจ็กต์พิเศษอื่นๆ
•    นิยามชนิดข้อมูล
•    นิยาม RDBMS
•    ความเป็นมาของ  RDBMS
•    วิวัฒน์ของแบบจำลองฐานข้อมูล

 

2.1. การประยุกต์ใช้งาน
คำว่า "แอพลิเกชัน" (application) คือ "คำจาร์กอน" ในวงการคอมพิวเตอร์ หมายถึงซอฟต์แวร์ที่รันในคอมพิวเตอร์และทำงานบางอย่าง งานที่ว่าอาจเป็นการมีปฏิสัมพันธ์กับผู้ใช้แบบรูปภาพ หรือ GUI ที่ช่วยให้การสร้างรายงานง่ายเพียงแค่ลากเมาส์ไปมา แล้วกดปุ่มสองสามทีก็จะได้รายงานที่สมบูรณ์

แอพลิเกชันทำให้ฐานข้อมูล "โปร่งใส" คือผู้ใช้มองไม่เห็น หรือไม่อาจมีปฏิสัมพันธ์กับฐานข้อมูลโดยตรง คำว่าโปร่ง (transparency) ซึ่งเป็นคำจาร์กอนอีกคำในวงการคอมพิวเตอร์ หมายถึงผู้ใช้ได้รับข้อมูลจากฐานข้อมูลผ่านแอพลิเกชัน จึงไม่เห็นการทำงานหรือโครงสร้างของฐานข้อมูล นั่นคือผู้ใช้ถูกกันไว้ไม่ให้เข้าถึงฐานข้อมูลโดยตรง 

การออกแบบฐานข้อมูลจำเป็นต้องคำนึงถึงการประยุกต์ใช้งานเป็นที่ตั้ง การประยุกต์ใช้งานฐานข้อมูลมีหลายแบบ
การประยุกต์ใช้งานแต่ละแบบจะเป็นตัวกำหนดคุณสมบัติของแบบจำลองฐานข้อมูล  ยกตัวอย่างเช่น ในบทที่แล้วท่านได้เรียนไปแล้วว่าฐานข้อมูลแบ่งออกเป็นประเภทใหญ่ๆ สองประเภทคือ OLTP และดาต้าแวร์เฮาส์  แบบจำลองฐานข้อมูลของฐานข้อมูลสองประเภทนี้ย่อมแตกต่างกัน

 

2.2. สองสถาปัตยกรรม
การประมวลผลธุรกรรมออนไลน์ (OnLine Transaction Processing ย่อ OLTP) คือสถาปัตยกรรมที่มีผู้ใช้จำนวนมากเข้าถึงข้อมูลจำนวนน้อยๆ แต่ทำอย่างถี่ๆ แบบจำลองฐานข้อมูลที่เหมาะกับการประยุกต์ใช้งานลักษณะนี้คือ "แบบจำลองข้อมูลสำหรับธุรกรรม" (Transactional Database Model ย่อ TDM) ซึ่งเป็นแบบจำลองฐานข้อมูลที่ออกแบบมาสำหรับบริการผู้ใช้งานจำนวนมากที่เข้าถึงข้อมูลที่มีปริมาณน้อยแต่ใช้งานพร้อมกันและอย่างถี่ๆ

แบบจำลองฐานข้อมูลที่ตรงกันข้ามกับ OLTP คือ "โกดังข้อมูล" หรือดาต้าแวร์เฮาส์ (data warehouse) ผู้ใช้จะอัพเดตข้อมูลหรือดึงข้อมูลครั้งละมากๆ (เช่นการดึงข้อมูลเพื่อนำไปใช้ในการวิเคราะห์) มีจำนวนผู้ใช้พร้อมกันไม่มากนัก (เมื่อเทียบกับ OLTP เพราะผู้ใช้งานดาต้าแวร์เฮาส์คือนักวิเคราะห์ข้อมูลซึ่งมีจำนวนน้อยกว่าผู้ใช้แอพลิเกชัน)  เนื่องจากไม่ใช่การทำงานตามลำดับเหตุการณ์ที่เกิดขึ้นจริง (real time) ระบบจึงไม่จำเป็นต้องตอบสนองการทำงานเร็วมากนักก็ได้ ปรกติแบบจำลองข้อมูลลักษณะนี้จะถูกสร้างขึ้นโดยนำฐานข้อมูล OLTP มาแยกย่อยเป็นโครงสร้างที่ซ้ำกันหลายๆ ชุด

 

001

ภาพ 2-1: การใช้งาน Business Intelligence (BI) และดาต้าแวร์เฮาส์

 

2.3. วิวและออพเจ็กต์พิเศษอื่นๆ
ในฐานข้อมูลนอกจากจะมีตารางและดรรชนีแล้วยังมีออพเจ็กต์อื่นๆ อีกหลายอย่างที่นักออกแบบฐานข้อมูลจำเป็นต้องรู้จักดังต่อไปนี้

  • วิว: วิว (View) คือนิยามคิวรี ตัวมันเองไม่ใช่ตารางและไม่ได้เก็บข้อมูลใดๆ ไว้ภายใน วิวเป็นเพียงโครงสร้างทางตรรกะของตาราง เมื่อสั่งให้วิวทำงานเราจะได้ข้อมูลเป็นตารางเสมือน วิวมีประโยชน์เมื่อนำมาใช้ระหว่างขั้นตอนพัฒนา แต่ไม่ควรนำไปใช้ในขั้นตอนใช้งานจริง เพราะวิวอาจทำให้ประสิทธิภาพของฐานข้อมูลลดลง
  • วิววัตถุ: วิววัตถุ (Materialized views) ตางจากวิวธรรมดาตรงที่มันเป็นตารางข้อมูลชั่วคราวที่ถูกสร้างจากตารางจริงและมีข้อมูลเก็บไว้จริงๆ จุดประสงค์ในการสร้างวิววัตถุคือเพื่อลดภาระของตารางหลัก วิววัตถุมักถูกนำมาใช้เพื่อหาผลรวมของชุดข้อมูล (ดาต้าเซต dataset) ขนาดใหญ่ในงานคลังข้อมูล ในบาง RDBMS จะสนับสนุนการปรับข้อมูล (refresh) ระหว่างตารางจริงกับวิววัตถุโดยอัตโนมัติ ทำให้เราสามารถใช้งานวิววัตถุได้โดยไม่ต้องห่วงเรื่องความล้าสมัยของข้อมูล
  • คลัสเตอร์: คลัสเตอร์ (Cluster) เป็นออพเจ็กต์พิเศษที่ปัจจุบันไม่นิยมใช้แล้ว มันมีลักษณะและจุดประสงค์ในการใช้งานเหมือนวิววัตถุแต่ไม่มีการการปรับข้อมูลอัตโนมัติ
  • ตัวนับอัตโนมัติ: ตัวนับอัตโนมัติ (auto counter) คือคอลัมน์ที่เพิ่มค่าได้โดยอัตโนมัติ ทำให้เราสร้างคอลัมน์ซึ่งทำหน้าที่เป็นกุญแจแทนได้ง่ายขึ้น เพราะ RDBMS จะใส่ค่าในคอลัมน์นี้ให้โดยอัตโนมัติเป็นค่าที่เรียงลำดับ (เช่น 001, 002, 003 ฯลฯ)
  • ตัวประมวลผลแบบขนาน: โปรแกรม RDBMS บางตัวสนับสนุนการแยกตารางออกเป็นหลายส่วนเพื่อให้ตัวประมวลผลหลายตัวประมวลผลไปพร้อมๆ กันได้เพื่อเพิ่มประสิทธิภาพของฐานข้อมูล

002

ภาพ 2-2: ตัวประมวลผลแบบขนาน CELL/B.E. ที่ผลิตโดยบริษัทไอบีเอ็ม โซนีและโตชิบา


ฐานข้อมูลเบื้องต้น : ตอน 2

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

ฐานข้อมูลเบื้องต้น : ตอน 2

 

1.3. ระบบฐานข้อมูล
โดยพื้นฐานแล้วระบบฐานข้อมูล (database system) ก็คือการนำคอมพิวเตอร์มาใช้เพื่อเก็บข้อมูล ท่านสามารถสั่งให้มันทำงานที่เกี่ยวข้องกับการเก็บข้อมูลได้หลายอย่าง อาทิ
•    เพิ่มตารางเข้าสู่ฐานข้อมูล
•    แทรกข้อมูลใหม่สู่ตาราง
•    ดึงข้อมูลจากตาราง
•    ลบข้อมูลจากตาราง
•    เปลี่ยนแปลงข้อมูลในตาราง
•    ลบตารางจากฐานข้อมูล

ยกตัวอย่างเช่นในฐานข้อมูล AdventureWorks (ดูภาคผนวก จ) มีตารางชื่อ Person.Contact ทำหน้าที่เก็บข้อมูลบุคคลที่เกี่ยวข้องกับบริษัทเพื่อใช้ในการติดต่อ มีข้อมูลดังที่เห็นในภาพ 1-5

 

005

ภาพ 1-5: ตารางชื่อ Person.Contact

เราสามารถป้อนคำสั่งต่างๆ เพื่อจัดการกับข้อมูลได้ ยกตัวอย่างเช่นคำสั่งเพื่อเรียกดูข้อมูลห้าคนแรกเป็นดังนี้

006

ภาพ 1-6: คำสั่งเพื่อเรียกดูข้อมูลห้าคนแรก

 

คำว่า SELECT, TOP และ FROM เป็นคำสั่งหรือคำเฉพาะ (keyword)  คำว่า Person.Contact คือชื่อตารางที่เราต้องการเรียกดูข้อมูล เมื่อนำคำสั่ง คำเฉพาะและชื่อตารางมาเขียนเป็นประโยคสั่งหนึ่งหรือหลายประโยคต่อกันเช่นนี้ เรียกว่า คิวรี (query) เป็นภาษาชื่อ SQL แต่เดิมคำว่า SQL ย่อจาก Structured Query Language และอ่านออกเสียงว่า "ซีเควล" แต่ปัจจุบันถือว่า SQL ไม่ใช่คำย่อ แต่เป็นชื่อภาษาหนึ่งและอ่านออกเสียงว่า "เอส-คิว-เอล"

 

1.4. องค์ประกอบของฐานข้อมูล

ตัวจัดการฐานข้อมูลที่อ้างถึงในหนังสือเล่มนี้คือโปรแกรม Microsoft SQL Server 2008 (ต่อไปจะเรียกย่อว่า SQL2008 อ่านประวัติโดยย่อของ SQL2008 ในภาคผนวก ข) SQL2008 จะอ่านคิวรีและนำไปปฏิบัติ โปรดสังเกตว่าผู้เขียนๆ คำสั่งและคำเฉพาะเป็นอักษรตัวใหญ่ทั้งหมด ส่วนชื่อตารางเขียนแบบมีตัวนำตัวตาม การทำเช่นนี้ไม่ใช่ข้อกำหนดของ SQL2008 เราอาจเขียนตัวใหญ่ทั้งหมดหรือเล็กทั้งหมด หรือผสมกันอย่างไรก็ได้ การเขียนด้วยอักษรตัวใหญ่หรือเล็กมีจุดมุ่งหมายเพื่อให้อ่านเข้าใจง่ายและมีแนวทางปฏิบัติเป็นมาตรฐาน (10.16)

ระบบจัดการฐานข้อมูลประกอบด้วยส่วนหลักสี่ส่วนดังนี้

  • ข้อมูล: ข้อมูลในฐานข้อมูลหนึ่งๆ อาจะเก็บไว้ในคอมพิวเตอร์เล็กๆ เพียงเครื่องเดียว หรือกระจายอยู่ในคอมพิวเตอร์เตอร์แบบเซอฟเวอร์จำนวนมากที่รวมตัวกันเป็นกลุ่ม (เรียกกว่า คลัสเตอร์ Cluster) ฐานข้อมูลจะถูกเก็บไว้อย่างไรขึ้นอยู่กับขนาดของข้อมูลและจำนวนผู้ใช้ หากมีผู้ใช้เพียงคนเดียวก็สามารถเก็บไว้ในคอมพิวเตอร์เล็กๆ เพียงเครื่องเดียวได้ หากมีผู้ใช้ที่อาจเรียกใช้ข้อมูลพร้อมๆ กันเป็นจำนวนมากก็ต้องใช้ระบบที่ใหญ่ขึ้น การเรียนและทำแบบฝึกหัดในหนังสือเล่มนี้ท่านจะติดตั้งโปรแกรมและข้อมูลทุกอย่างไว้ในคอมพิวเตอร์เพียงเครื่องเดียว
  • ฮาร์ดแวร์: โปรแกรม SQL2008 ทำงานในคอมพิวเตอร์ที่ใช้ซีพียูแบบ 32 และ 64 บิตของอินเทล รวมถึงซีพียูอิทาเนียม ขนาดและปริมาณของข้อมูลคือตัวกำหนดความต้องการของฮาร์ดแวร์ สิ่งที่ต้องคำนึงถึงคือพลังการประมวลผลของตัวประมวลผล และความจุของอุปกรณ์เก็บข้อมูล ผู้เขียนจะไม่กล่าวถึงเรื่องฮาร์ดแวร์มากไปกว่านี้เพราะอยู่นอกขอบเขตของหนังสือเล่มนี้
  • ซอฟต์แวร์: โปรแกรมจัดการฐานข้อมูล (database management system หรือ DBMS) เป็นซอฟต์แวร์ที่ช่วยให้ท่านสามารถจัดการกับข้อมูลได้โดยไม่ต้องสนใจฮาร์ดแวร์หรือรายละเอียดในการเก็บข้อมูลทางกายภาพ ท่านจะไม่กระทำการใดๆ กับฐานข้อมูลโดยตรง แต่เขียนคิวรีสั่งให้ DMBS จัดการแทน โปรแกรม DBMS มีมากมายหลายตัวเช่น SQL2008, เออราเคิล, ไซเบส และ MySQL ในหนังสือเล่มนี้จะมุ่งสนใจเฉพาะ SQL2008 แต่ผู้เขียนอาจกล่าวถึง DMBS ตัวอื่นๆ บ้างเพื่อเปรียบเทียบ

 

007

ภาพ 1-7: ระบบฐานข้อมูล

 

  • ผู้ใช้: ผู้ใช้งานแบ่งออกเป็นสามระดับคือ
    o    ผู้ใช้ทั่วไป: เป็นผู้ใช้งานกลุ่มใหญ่ที่สุด ใช้งานฐานข้อมูลโดยเขียนคิวรีภาษา SQL หรือใช้เครื่องมือที่มีการติดต่อผู้ใช้เป็นกราฟิกเพื่อสร้างคิวรี คนกลุ่มนี้จำไม่จำเป็นต้องได้รับการฝึกฝนทางไอที (IT = Information Technology วิทยาการสารสนเทศ) และไม่จำเป็นต้องเขียนโปรแกรมเป็น
    o    ผู้พัฒนาโปรแกรมประยุกต์: ทำหน้าที่เขียนโปรแกรมด้วยภาษาต่างๆ เช่น C#, PHP และจาวาสำหรับการประยุกต์ใช้งานที่ต้องเกี่ยวข้องกับฐานข้อมูล อาจเป็นโปรแกรมสำหรับใช้งานในอินเตอร์เน็ต เช่นใช้ ADO.NET เป็นตัวเชื่อมต่อกับ SQL2008 เพื่อสร้างเว็บไซต์แบบ ASP.NET  คนกลุ่มนี้เป็นผู้ที่ได้รับการฝึกฝนทางไอทีมาโดยตรง
    o    ผู้ดูแลฐานข้อมูล: หรือที่มักเรียกย่อว่า "แอดมิน" (administrator บางที่เรียก DBA) คือผู้ทำหน้าที่ดูแลระบบฐานข้อมูลให้พร้อมใช้งานอยู่เสมอ

 

icon-small

 

ฐานข้อมูลเบื้องต้น : ตอน 1

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


ฐานข้อมูลเบื้องต้น : ตอน 1

 

ท่านต้องใช้ฐานข้อมูลอยู่ตลอดเวลาโดยไม่รู้ตัว ยกตัวอย่างเช่นเมื่อท่านค้นหาข้อมูลภาพยนตร์ที่กำลังตัดสินใจว่าจะไปเช่ามาดูดีหรือไม่จากเว็บไซต์ IMDB หรือเมื่อท่านค้นหาข้อมูลเกี่ยวกับจานผีบุกโลกจากเว็บไซต์ Google  เมื่อเล่นเกมออนไลน์ หรือเมื่อค้นหาที่ตั้งของสถานที่ๆ ท่านต้องการไปพักผ่อนสุดสัปดาห์ ฯลฯ กิจกรรมต่างๆ ที่กล่าวมานี้ล้วนแล้วแต่ต้องอาศัยฐานข้อมูลทั้งสิ้น ในบทนี้ท่านจะได้เรียนเนื้อหาเบื้องต้นเกี่ยวกับฐานข้อมูลซึ่งประกอบด้วยหัวข้อต่างๆ ดังนี้

•    ตาราง คอลัมน์และแถว
•    ฐานข้อมูลคืออะไร
•    ระบบฐานข้อมูล
•    องค์ประกอบของฐานข้อมูล
•    ความสัมพันธ์และเอนทิตี
•    นิยามฐานข้อมูล

 

1.1 ตาราง คอลัมน์และแถว
เคยมีนักศึกษาผู้หนึ่งกล่าวแก่ผู้เขียนว่า “ตำราฐานข้อมูลนั้นหนาหนักแลยืดยาวนัก จะสรุปใจความสำคัญให้เหลือเพียงประโยคเดียวได้หรือไม่?” ผู้เขียนตอบว่าได้ และเฉลยว่า “ฐานข้อมูลคือตาราง คอลัมน์และแถว” นี่คือใจความสำคัญทั้งหมดของฐานข้อมูล หากท่านเข้าใจประโยคนี้ก็นับว่าท่านเข้าใจเรื่องฐานข้อมูลแล้ว

ฐานข้อมูลหรือดาต้าเบส (database) คือส่วนบนสุดหรือใหญ่สุด ภายในดาต้าเบสจะประกอบด้วยตาราง (table) จำนวนมาก ในหนึ่งตารางมีองค์ประกอบสองส่วนคือคอลัมน์ (Column) และแถว (Row) ยกตัวอย่างเช่น ภาพ 1-1 คือฐานข้อมูลชื่อ MotionPicture ทำหน้าที่เก็บข้อมูลเกี่ยวแก่ภาพยนตร์ กรอบสี่เหลี่ยมแต่ละกรอบคือตาราง ฐานข้อมูลนี้เป็นฐานข้อมูลเล็กๆ ที่มีตารางเพียงห้าตาราง ในการใช้งานจริงท่านอาจพบฐานข้อมูลที่มีตารางหลายร้อยหรือหลายพันตาราง

 

001

ภาพ 1-1: ฐานข้อมูล MotionPicture

 

ตารางเป็นองค์ประกอบสำคัญสุดของฐานข้อมูล ตารางคือความสัมพันธ์ (Relation) เพราะข้อมูลภายในหนึ่งตารางจะมีความสัมพันธ์กัน ท่านย่อมไม่เก็บสิ่งที่ไม่เกี่ยวข้องกันไว้ภายในตารางเดียวกัน ยกตัวอย่างเช่นตารางชื่อ MovieStar ซึ่งใช้เก็บข้อมูลของดารา ย่อมมีแต่ข้อมูลที่เกี่ยวแก่ตัวดาราเท่านั้น ไม่มีข้อมูลอื่นๆ ที่ไม่เกี่ยวข้อง เช่น ข้อมูลของภาพยนตร์ หรือข้อมูลของโรงถ่ายภาพยนตร์ ฯลฯ

ตารางมีองค์ประกอบหลักเพียงสองอย่างคือคอลัมน์และแถว ผู้เขียนขออธิบายคำว่าแถวก่อน แถวคือสิ่งที่แบ่งข้อมูลในตารางออกเป็นส่วนๆ ตามความสัมพันธ์ของข้อมูลที่จะเก็บ ยกตัวอย่างเช่น ภาพ 1-2 เป็นตารางเก็บข้อมูลโรงแรมต่างๆ ในเขตพระนคร ข้อมูลของโรงแรมหนึ่งโรงแรมจะถูกเก็บไว้ภายในแถวหนึ่งแถวเท่านั้น ยกตัวอย่างเช่น ข้อมูลของโรงแรมโซฟีเตล จะถูกเก็บไว้ภายในแถวหมายเลข 10 เพียงแถวเดียว

ในหนังสือนี้คำว่า แถว ทูเพิล เรคคอร์ด และ row ถือเป็นคำเดียวกันหมด แต่ผู้เขียนจะใช้คำว่า “แถว” เป็นหลัก

 

002

ภาพ 1-2 ตารางเก็บข้อมูลโรงแรมต่างๆ ในเขตพระนคร

 

ต่อไปมาดูความหมายของคำว่าคอลัมน์บ้าง  คอลัมน์คือสิ่งที่ทำหน้าที่แบ่งแถวออกเป็นส่วนๆ ตามคุณสมบัติของข้อมูลที่จะเก็บ ยกตัวอย่างเช่น แถวข้อมูลทั้งหมดในภาพ 1-2 ถูกแบ่งออกตามแนวตั้ง คอลัมน์แรกชื่อ EntryID คอลัมน์ที่สองชื่อ Hotel Name ฯลฯ คอลัมน์แต่ละคอลัมน์อาจมีชนิดข้อมูลต่างกันหรือเหมือนกันก็ได้ ยกตัวอย่างเช่น คอลัมน์ EntryID มีชนิดข้อมูลแบบจำนวนเต็ม ขณะที่คอลัมน์ Location มีชนิดข้อมูลเป็นสตริงและคอลัมน์ Fee มีชนิดข้อมูลแบบจำนวนเงิน

ในหนังสือนี้คำว่า คอลัมน์ แอตทริบิวต์ และฟิลด์ มีความหมายเหมือนกันหมด แต่ผู้เขียนจะใช้คำว่า “คอลัมน์” เป็นหลัก คำเหล่านี้แท้จริงมีความหมายแตกต่างกันดังท่านจะได้เรียนในบทต่อๆ ไป

เนื้อหาที่เป็นใจความสำคัญของฐานข้อมูลมีเพียงเท่านี้ เนื้อหาที่เหลือของหนังสือเป็นเรื่องปลีกย่อยทั้งนั้น สิ่งที่ท่านจะได้เรียนต่อไปคือ ฐานข้อมูลมีแนวคิดมีความเป็นมาอย่างไร วิธีสร้างฐานข้อมูล วิธีสร้างตาราง วิธีนำข้อมูลไปใส่ (ภาคหนึ่ง) วิธีสืบค้นข้อมูลอย่างมีประสิทธิภาพ (ภาคสอง)  และวิธีประยุกต์ใช้งานฐานข้อมูลในลักษณะต่างๆ (ภาคสาม)


1.2. ฐานข้อมูลคืออะไร
ฐานข้อมูลคือสถานที่เก็บข้อมูลถาวรสำหรับใช้ในองค์กรหรือเพื่อใช้ร่วมกับโปรแกรมประยุกต์ คอมพิวเตอร์ย่อมไร้ประโยชน์หากไม่มีข้อมูล เมื่อเราใช้งานคอมพิวเตอร์เราต้องทำงานกับข้อมูลอยู่ตลอดเวลาโดยไม่รู้ตัว เช่นการคุยกับเพื่อนด้วยโปรแกรม MSN ข้อความที่เราและเพื่อนพิมพ์สนทนากันคือข้อมูล เมื่อเราดูภาพยนตร์ แฟ้มภาพยนตร์คือข้อมูล  ภาพถ่ายที่ย้ายจากกล้องถ่ายรูปดิจิตอลไปใส่ในคอมพิวเตอร์ก็เป็นข้อมูล หน้าเว็บทั้งหน้าประกอบด้วยข้อมูลล้วนๆ คำสั่ง โปรแกรม คิวงานและอื่นๆ ล้วนเป็นข้อมูลทั้งสิ้น แต่ข้อมูลเหล่านี้เป็นข้อมูลชั่วคราว จะหายไปเองเมื่อเราไม่ได้ใช้งานแล้ว ยกตัวอย่างเช่นข้อความที่เราและเพื่อนพิมพ์สนทนากันใน MSN จะถูกเก็บพักไว้ในแฟ้มประวัติชั่วคราว เมื่อถึงเวลาที่กำหนดจะถูกลบไปหรือถูกทับด้วยข้อมูลใหม่ หรือภาพยนตร์ที่เราเปิดดูในหน้าเว็บจะถูกโหลดมาใส่ไว้ในฮาร์ดดิสก์ชั่วคราว เมื่อดูเสร็จแล้วระบบก็จะลบทิ้งไป

แต่ฐานข้อมูลหรือดาต้าเบสไม่เป็นเช่นนั้น มันเป็นแหล่งเก็บข้อมูลถาวร ข้อมูลจะเข้าไปอยู่ในนั้นได้ก็ต่อเมื่อท่านสั่งให้นำไปเก็บไว้ และจะหายก็ต่อเมื่อท่านสั่งลบ ข้อมูลในฐานข้อมูลจะไม่เกิดขึ้นหรือหายไปโดยไม่เจตนา (ยกเว้นการหายไปเพราะฮาร์ดดิสก์ชำรุดที่ต้องนับว่าเป็นเภทภัยมากกว่าวาสนา)  ข้อมูลในฐานข้อมูลเป็นข้อมูลที่ถูกใช้โดยองค์กร คำว่าองค์กรในที่นี้อาจเป็นร้านค้าห้องแถวซึ่งมีพีซีอยู่ตัวเดียว หรือบริษัทขนาดยักษ์ระดับโลกที่มีคอมพิวเตอร์คละแบบจำนวนมาก หรือสิ่งที่อยู่ในระหว่างนั้น ยกตัวองค์กรที่จำเป็นต้องใช้ฐานข้อมูลคือ
•    โรงงานอุตสาหกรรม
•    ธนาคาร สถาบันการเงิน
•    โรงพยาบาล
•    มหาวิทยาลัย
•    หน่วยงานของรัฐ

ข้อมูลที่องค์กรเหล่านี้ต้องเก็บและจัดการคือ
•    ข้อมูลการผลิต
•    ข้อมูลบัญชี
•    ข้อมูลผู้ป่วย
•    ข้อมูลนักศึกษา
•    ข้อมูลแผนงาน

003

ภาพ 1-3: ความแต่ต่างระหว่างฐานข้อมูลแบบ OLTP

 

ฐานข้อมูลมีหลายแบบ แบ่งออกตามประเภทการใช้งาน ยกตัวอย่างเช่น ฐานข้อมูลที่ใช้ในการทำงานวันต่อวัน หรือใช้ในการผลิต เช่นเมื่อลูกค้านำเงินมาฝากที่ธนาคาร ข้อมูลต้องถูกบันทึกไว้ แล้วนำไปประมวลผล (ยกตัวอย่างการประมวลผลคือบวกจำนวนที่ฝากกับจำนวนเงินคงเหลือที่มีอยู่ในบัญชีแต่เดิม) หรือฐานข้อมูลซึ่งเก็บข้อมูลที่เกิดขึ้นในช่วงเวลาต่างๆ ของการผลิตสินค้า เป็นฐานข้อมูลเพื่อการประมวลผลทางธุรกรรม (online transaction processing ย่อ OLTP)

ฐานข้อมูลอีกชนิดหนึ่งใช้เก็บข้อมูลเพื่อช่วยในการตัดสินใจ ยกตัวอย่างเช่น ผู้จัดการแผนกสินค้าคงคลังใช้ฐานข้อมูลเพื่อช่วยในการตัดสินใจว่าต้องสั่งสินค้าเพิ่มหรือไม่ โดยตรวจดูว่าสินค้ามีจำนวนต่ำกว่าหรือถึงระดับที่กำหนดหรือไม่ ฐานข้อมูลที่ใช้เพื่อการวิเคราะห์นี้เรียกว่า "คลังข้อมูล" หรือดาต้าแวร์เฮาส์ (data warehouse) เก็บข้อมูลที่ประมวลจากฐานข้อมูล OLTP อีกต่อหนึ่ง การวิเคราะห์นี้บางครั้งเรียกว่าการวิเคราะห์แบบออนไลน์ (Online Analytical Processing ย่อ OLAP)

 

004
ภาพ 1-4: Data Warehouse

 


03 febbraio

ภาคผนวก ง อภิธานศัพท์ : ตอน 5

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


ภาคผนวก ง อภิธานศัพท์ : ตอน 5

 

Software Development Kit (SDK)    ชุดเครื่องมือสำหรับพัฒนาโปรแกรม   
Solid-State Disk    ฮาร์ดดิสก์ที่ทำจากสารกึ่งตัวนำ   
Specification    ข้อกำหนดความต้องการ    
Sproc    Stored Procedure   
SQEC    Sub-Queries for Existence Checking    
SQL Injection    คำสั่งร้ายที่ผู้ไม่ประสงค์ดีใส่เข้าสู่ระบบ   
SQL Server Agent     ทำหน้าที่เหมือนออโตรันในแผ่นซีดี    
SQL Server Language Resources Pakcage    ส่วนสนับสนุนภาษาต่างๆ   
SRA    Set Relational Algebra    
SSAS    Analysis services   
SSIS    Integration Services    
SSMS    โปรแกรม Microsoft SQL Server Management Studio    
SSQ    Scalar Sub-Query    
SSRS    Reporting Services    
SSRS    Reporting Services    
SSRSDB    SQL Server Report Database    
Storage Engine      เอ็นจินจัดการหน่วยบันทึก  คือโปรแกรมใน SQL2008  หน้าที่อ่านหรือบันทึกข้อมูลในฮาร์ดดิสก์   
Stored Procedure     คิวรีที่เก็บไว้ในฐานข้อมูลเพื่อให้เรียกใช้งานได้ตลอดเวลา    
Structured Query Language (SQL)    "เป็นชื่อภาษาหนึ่งและอ่านออกเสียงว่า ""เอส-คิว-เอล"""   
Sub-Queries for Existence Checking     คิวรีย่อยเพื่อการตรวจหาค่า    
Subroutine    โปรแกรมย่อย    
Surrogate Key    กุญแจแทน เหมือน Unique Key   
Syntax    ความสัมพันธ์ระหว่างถ้อยคำในประโยค   
sysadmin    System Administrator ผู้ดูแลระบบ   
System Administrator    ผู้ดูแลระบบ   
Table    ตาราง ดู Relational    
Table Scan     การค้นหาแบบกวาดดูทั้งตาราง  เป็นวิธีพื้นฐานที่สุดและช้าที่สุด    
Table Variable    ตัวแปรแบบตาราง    
Tablix    ตารางแบบ Table และแบบ Matrix   
Tabular Report    รายงานที่แสดงเป็นตารางมีคอลัมน์และแถวเหมือนข้อมูลที่ได้จากการคิวรี    
TD    Transitive Dependence    
Temporary Table     ตารางชั่วคราว   
Terabyte    ล้านล้านไบต์   
Test environment    สภาพแวดล้อมเพื่อศึกษาการทำงานและการทดสอบ    
Text file    แฟ้มที่เก็บข้อมูลตัวอักษรธรรมดา   
Thread    เธรด ภาวะการทำงานของโปรแกรมหนึ่ง session   
Three-Tier     สถาปัตยกรรมไคลแอนท์/เซอฟเวอร์แบบสามชั้น    
Tight coupling    ฐานข้อมูลเชื่อมต่อกับแอพลิเกชันอย่างแน่นหนา   
TP    Trivial Plan    
Transaction Table     ตารางธุรกรรม   
Transactional Database Model    แบบจำลองข้อมูลที่มีผู้ใช้จำนวนมากเข้าถึงข้อมูลจำนวนน้อยๆ แต่ทำอย่างถี่ๆ    
Transact-SQL     ภาษา SQL สำหรับใช้งานใน SQL2008   
Transitive Dependence     การพาดพิงทางอ้อม    
Transparency    ผู้ใช้ได้รับข้อมูลจากฐานข้อมูลผ่านแอพลิเกชัน จึงไม่เห็นการทำงานหรือโครงสร้างของฐานข้อมูล   
Tree Diagram     แผนภูมิต้นไม้    
Trigger    คือโค้ดที่จะทำงานเองโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง    
Trivial Plan     แผนปลีกย่อย เป็น CBP พื้นฐานสำหรับคิวรีง่ายๆ ทั่วไป   
TS    Table Scan    
TSID    T-SQL Integrated Debugger   
T-SQL    ภาษา SQL สำหรับใช้งานใน SQL2008   
T-SQL Integrated Debugger    ส่วนช่วยหาบักใน SSMS   
TT    Transaction Table    
TT    Temporary Table    
Tuple    แถวข้อมูลในตาราง   
UC    Union Compatibility    
UCT    Union Compatible Tables    
UDA    User Defined Aggregate    
UDT    User Defined Type ชนิดข้อมูลที่ผู้ใช้นิยามเอง   
UK    Unique Key   
UNICODE    รหัสแทนตัวอักษรชนิดหนึ่ง   
Union Compatible    ความเข้ากันได้ในทางยูเนียน    
Union Compatible Tables     ตารางสองชุดที่มีความเข้ากันได้ในทางยูเนียน    
Unique Key    กุญแจเอกลักษณ์ ทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตารางโดยค่าของกุญแจจะไม่มีการซ้ำกัน   
User Defined Aggregate     ฟังก์ชันแบบเอกริเกตที่ผู้ใช้นิยามขึ้นเอง    
User Defined Type     ชนิดข้อมูลที่ผู้ใช้นิยามขึ้นเอง    
User Defined Type (UDT)    ชนิดข้อมูลที่ผู้ใช้สร้างขึ้นโดยนำชนิดข้อมูลพื้นฐานมาจัดรูปแบบเป็นโครงสร้างที่แน่นอน เช่น structure   
Variable    ตัวแปร   
Variant    ตัวแปรแบบวาเรียนใน VB6  สามารถเปลี่ยนไทป์ไปมาได้   
VD    Virtual Directory   
Venn Diagram     แผนภูมิวงกลม ที่ได้รับการคิดค้นโดย ยอนห์ เวนน์    
Version    รุ่นของ SQL2008   
View    นิยามคิวรีที่นำไปใช้แทนตารางแต่ไม่ได้เก็บข้อมูลใดๆ ไว้ภายใน   
View    คิวรีภาษา T-SQL ทำหน้าที่เป็นตารางเสมือนฉายแสดงข้อมูลจากตารางเดียวหรือจากหลายๆ ตาราง    
View Designer     วิวดีไซน์เนอร์ เครื่องมือช่วยออกแบบสร้างวิว   
Virtual Directory    โฟลเดอร์เสมือน คือไม่ได้มีอยู่จริง   
Virtual Table    ตารางเสมือน   
VNA    Von Neumann Architecture    
Von Neumann Architecture     สถาปัตยกรรมแบบ ฟอน นอยมาน    
Web application    เว็บแอพลิเกชัน หรือโปรแกรมที่ทำงานผ่านเว็บ ยกตัวอย่างเช่นการขายสินค้าผ่านอินเตอร์เน็ต และการทำธุรกรรมแบบออนไลน์   
Web Server    เว็บเซอฟเวอร์ คอมพิวเตอร์ซึ่งทำหน้าที่เป็นผู้ให้เชื่อมต่อกับเครือข่าย   
Wild card    เครื่องหมาย % ทำหน้าที่แทนกลุ่มตัวอักษรใดๆ    
Windows Authentication     ระบบกำหนดสิทธิของวินโดวส์เพื่อลงชื่อเข้าใช้งาน    
เซมิโคลอน    เครื่องหมายระบุจุดสิ้นสุดของบรรทัดคำสั่ง   
เซสชัน     session   
เซอฟเวอร์    Server   
เอกซ์เทนท์     Extent   
แคช     Cache กลไกเพื่อการทดข้อมูลไว้ในแรมหรือฮาร์ดดิสก์   
แอกริเกต     Aggregate   
แอดมิน    System Administrator หรือ Database  Administrator   
แอตทริบิวต์    โครงสร้างคอลัมน์ของตาราง   
แอสเซมบลี    ไฟล์ที่ถูกคอมไพล์เป็นภาษา MSIL อัดรวมอยู่เป็นไฟล์เพียงไฟล์เดียว   
แอสเซมบลี มานิเฟสต์    Assembly Manifest   
โกดังข้อมูล    Data warehouse   
โมเลกุล    การเก็บค่าหลายๆ ค่าไว้ภายในคอลัมน์เดียว Molecule   
โรวเซต     ค่าเป็นแถวๆ หลายๆ แถวเหมือนข้อมูลในตาราง   
ไคลแอนเซอฟเวอร์    แอพลิเกชันที่แบ่งเป็นส่วนผู้ให้บริการและส่วนผู้ใช้บริการ    
ไคลแอนท์    Client   
ไมโครซอฟต์เอกเซส     Microsoft Access   
กฎทางธุรกิจ    นิยามของกระบวนการ คำจำกัดความและข้อกำหนดต่างๆ ที่จำเป็นต้องนำมาใช้เพื่อให้หน่วยงานสามารถทำงานได้บรรลุเป้าหมาย   
การโจมตีแบบ SQL Injection     การที่ผู้ไม่ประสงค์ดีใช้โปรแกรมฝั่งไคลแอนท์สอดแทรกสคริปต์คำสั่ง SQL โดยมีจุดมุ่งหมายเพื่อสร้างความเสียหายให้แก่ฐานข้อมูล   
การพาดพิงเป็นวงรอบ     Cyclic Dependency    
การพาดพิงทางอ้อม     Transitive Dependence    
การพาดพิงสมบูรณ์     Full Functional Dependence    
การพาดพิงหลายค่า     Multiple valued dependency    
คอมเมนท์     ข้อความที่ใส่ไว้ภายในโค้ด แต่ไม่ได้เป็นส่วนหนึ่งของโค้ดเพราะโปรแกรม SQL2008 จะไม่นำข้อความเหล่านั้นไปตีความปฏิบัติ    
คอมโพเนนท์     Component   
คำจาร์กอน    ถ้อยคำที่ใช้เฉพาะคนที่ประกอบอาชีพเหล่าหนึ่งๆ   
ซินแท็กซ์     Syntax   
ดรรชนี    สำเนาของข้อมูลบางส่วนในฐานข้อมูลมีไว้ค้นหาสิ่งที่ต้องการได้อย่างรวดเร็ว   
ดรรชนีเผื่อเลือก     Alternate Indexing    
ดาต้าเบสเซอฟเวอร์    Database Server   
ดาต้าเบสเอ็นจิน     โปรแกรมทำหน้าที่จัดการทุกอย่างที่เกี่ยวข้องกับฐานข้อมูล   
ตัวแปร     (Variable) คือหน่วยเก็บข้อมูลที่ท่านประกาศไว้ใช้ทดข้อมูลชั่วคราวขณะโปรแกรมทำงาน    
ตัวแปรแบบตาราง     Table Variable   
ตัวกำหนด    Determinant   
ตาราง     เซตที่มีโครงสร้างประกอบด้วยแอตทริบิวต์และทูเพิล   
ตารางแฮช    การนำข้อมูลมาจัดเรียงใหม่ให้มีโครงสร้างตามอัลกอริทึมของการแฮช   
ตารางธุรกรรม    ตารางเก็บข้อมูลที่มีพลวัต   
ตารางสืบ     Derived table    
ทูเพิล    แถวข้อมูลในตาราง   
นอร์มัลฟอร์มแบบฉาย     Projection Normal Form    
นอร์มัลฟอร์มแบบบอยซ์-คอดด์     การทำให้คอลัมน์ที่เป็นตัวกำหนดทั้งหมดในตารางคือกุญแจเสนอ   
นอร์มัลฟอร์มกุญแจโดเมน    การทำนอร์มัลไลเซชันระดับสูงสุด   
นอร์มัลฟอร์มระดับที่สอง     ทำให้คอลัมน์ที่ไม่ใช่กุญแจเป็น FFD ของคอลัมน์ที่เป็น PK และห้ามไม่ให้มี PD   
นอร์มัลฟอร์มระดับที่สาม     กำจัด TD กับคอลัมน์ที่เป็น PK    
นอร์มัลฟอร์มระดับที่สี่     การกำจัด MVD   
นอร์มัลฟอร์มระดับที่หนึ่ง     ตัดข้อมูลที่ซ้ำกันเป็นกลุ่ม ทำให้สามารถจำแนกข้อมูลทุกแถวในทุกตารางได้ด้วย PK   
นอร์มัลฟอร์มระดับที่ห้า     นอร์มัลฟอร์มแบบฉาย    
นอร์มัลฟอร์มระดับศูนย์    ภาวะที่ยังไม่ได้ทำนอร์มัลไลเซชัน   
ฟังก์ชันเชิงตัวประกอบ    factorial function   
ฟังก์ชันแบบฝังตัว    Build-in functions   
ฟังก์ชันดีเลย์     Delay Routine   
ฟังก์ชันสตริง     ฟังก์ชันเพื่อจัดการหรือประมวลผลข้อความตัวอักษร โดยข้อมูลที่ป้อนให้จะเป็นสายอักขระ (สตริง) หรือตัวอักษรตัวเดียวก็ได้ ส่วนผลลัพธ์ที่ฟังก์ชันคืนค่ามาอาจเป็นตัวเลขหรือตัวอักษรก็ได้    
ฟิลด์    ข้อมูลหนึ่งชิ้นที่สัมพันธ์กับตาราง สมาชิกเก็บข้อมูลของคลาส   
ภาษา MDX     ภาษาเพื่อคิวรีข้อมูลใน SSAS   
มิดเดิลแวร์      Middleware   
รีเคอร์ซีฟ    โค้ดที่อ้างถึงตัวเอง   
วากยสัมพันธ์    Syntax   
วินโดวส์เอกซ์พลอเรอร์     Windows Explorer   
สเกลาร์    ค่าเดี่ยว   
สเกลาร์     scalar ค่าเดี่ยว   
สโตอร์โพรซีเชอร์    Stored Procedure    
สพร็อกซ์    Sproc คำเรียกย่อของ Stored procedure   
ออเปอแรนด์    ตัวถูกดำเนินการ   
ออพเจ็กต์เอ็กซ์พลอเรอร์     Object Explorer    
ออราเคิล    RDBMS ของบริษัท Oracle Corporation   
อะตอม    "เป็นภาษากรีกแปลว่า ""แบ่งแยกไม่ได้"" Atom"   
อะนอมาลิ    Anomaly ความผิดปรกติที่ไม่พึงประสงค์    
อัลกอรึทึม    หลักการทำงานของโปรแกรม   
อินสแตนซ์     Instance
   

 


ภาคผนวก ง อภิธานศัพท์ : ตอน 3

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


ภาคผนวก ง อภิธานศัพท์ : ตอน 3

 

IDE    Integrated Development Environment    
IEnumerable    อินเตอร์เฟสที่ทำให้เกิดการวนซ้ำในกลุ่มออพเจ็กต์ได้   
IGrouping    สิ่งทำหน้าที่แสดงออพเจ็กต์คอลเลคชันทีมีกุญแจร่วมกัน   
Implicit Typing Variable Declaration    การระบุชนิดข้อมูลโดยนัย   
Index    ดรรชนี   
Index Organized Table     ตารางดรรชนี    
Index Seek     การค้นแบบด่วนด้วยดรรชนี   
Indexed Sequential Access Method     โครงสร้างข้อมูลที่ใช้การเข้าถึงแบบไล่จากโหนดแรกเรื่อยไปถึงโหนดสุดท้าย   
Information Technology (IT)    ไอที วิทยาการสารสนเทศ   
Inline Table-Valued Function    TVF แบบ Inline    
Instance    การทำงานของโปรแกรมหนึ่งชุด   
Integrated Development Environment     สภาพแวดล้อมแบบบูรณาการร่วมเพื่อพัฒนาซอฟต์แวร์   
Integration services     เซอร์วิสซึ่งทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ    
IOT    Index Organized Table    
IR    Referential Integrity    
ISAM    Indexed Sequential Access Method    
ISK    Index Seek    
Isomer    ไอโซเมอร์    
ITVD    Implicit Typing Variable Declaration   
ITVF    Inline Table-Valued Function   
Key Lookup     การค้นของคิวรีที่มีดรรชนีไม่ครบ   
Key Performance Indicators     ตัวชี้ประสิทธิภาพหลัก   
Keyword    คำสั่งหรือคำเฉพาะ   
KPI    Key Performance Indicators    
Lambda Expression     นิพจน์แลมดา การใช้ตัวกระทำ => ช่วยให้เขียนโค้ดได้กระชับอ่านง่ายขึ้นในหลายๆ บริบท (เช่นเมื่อทำดีลิเกต)   
Language Interacted Query     ภาษาคิวรีแบบบูรณาการ   
Lazy Writer    โปรแกรมเขียนข้อมูลที่ถูกแก้ไขจากแรมไปยังฮาร์ดดิสก์   
Lazywriter    โปรเซสของ SQL2008 ทำหน้าที่ตรวจสอบว่า EP ในแคชหมดอายุหรือยัง   
LE    Linear Expression    
LE    Lambda Expression    
Lexicographic    การให้ค่าน้ำหนักของตัวอักษรเรียงตามพจนานุกรม    
Linear Expression     นิพจน์เชิงเส้น    
Linear Notation     สัญลักษณ์เชิงเส้น    
LINQ    Language Integrated Query คิวรีแบบไทป์เซฟเมนเนจโค้ด   
LINQ to DataSet    ชนิดของ LINQ ที่ใช้เพื่อคิวรีดาต้าเซต   
LINQ to Entities    ชนิดของ LINQ ที่ใช้เพื่อคิวรีแบบจำลองข้อมูล (ไม่สนใจฐานข้อมูลในฉากหลัง)   
LINQ to Object    ชนิดของ LINQ ที่ใช้เพื่อคิวรีกลุ่มหรือชุดออพเจ็กต์ในหน่วยความจำ (Data Collection)   
LINQ to SQL    ชนิดของ LINQ ที่ใช้เพื่อคิวรีฐานข้อมูลเช่นตารางและวิว   
LINQ to XML    ชนิดของ LINQ ที่ใช้เพื่อคิวรีข้อมูลที่เป็นโครงสร้าง XML    
LN    Linear Notation    
LO    Logical Operator    
Lock    กลไกที่ใช้เพื่อป้องกันการขัดแย้งกันของข้อมูลเมื่อมีผู้ใช้มากกว่าหนึ่งรายเปลี่ยนแปลงข้อมูลเดียวกันพร้อมๆ กัน    
Logical Operator     ตัวดำเนินการทางตรรกะ  ใช้เพื่อแสดงการทำนายหรือคาดการณ์กระบวนการที่จะเกิดขึ้น   
Loose coupling    เชื่อมหลวม ระบบงานสองระบบที่เป็นอิสระต่อกัน แต่มีความสัมพันธ์ต่อกันอย่างหลวมๆ  เช่น ฐานข้อมูลเชื่อมต่อกับแอพลิเกชันอย่างหลวมๆ   
Managed Code     โปรแกรมที่สร้างจากภาษา CLR อย่าง C# โค้ดที่ถูกดูแลจัดการโดย .NET CLR   
Materialized views    ตารางข้อมูลชั่วคราวที่ถูกสร้างจากตารางจริงและมีข้อมูลเก็บไว้จริงๆ   
Matrix Report    รายงานที่มีลักษณะคล้าย Pivot table ในโปรแกรม Excel    
MC    Managed-Code    
Metadata    เมตาดาต้า ข้อมูลเกี่ยวกับข้อมูล คือข้อมูลที่ใช้พรรณนาข้อมูลอื่นๆ   
Microsoft Access    โปรแกรมฐานข้อมูลในเดสก์ท็อป   
Microsoft Office SharePoint     เทคโนโลยีของบริษัทไมโครซอฟต์ เพื่อให้พนักงานในองค์กรติดต่อสื่อสารและใช้เอกสารร่วมกันผ่านเครือข่ายและอินเตอร์เน็ตได้ง่าย    
Microsoft SQL Management Studio     SSMS   
Microsoft SQL Server Management Studio     ส่วนติดต่อกับผู้ใช้เพื่อให้ใช้งาน SQL2008 ได้ในลักษณะเป็นกราฟิก   
Microsoft Visual Studio     โปรแกรม ไมโครซอฟต์วิสชวลสตูดิโอ    
Middle tier    ชั้นตัวกลาง   
Middleware    คอมพิวเตอร์และซอฟต์แวร์ที่ทำหน้าที่เป็นตัวกลางระหว่างไคลแอนท์และเซอฟเวอร์   
MSIL    Microsoft Intermediate Language ภาษากลางในสถาปัตยกรรมดอตเน็ต   
MSOSP    Microsoft Office SharePoint    
MSVC#EE    Microsoft Visual C# 2008 Express Edition    
MSVS    Microsoft Visual Studio    
MSVS2008    Microsoft Visual Studio 2008    
MTA    Multi-tired Architecture    
Multi Thread    การประมวลผลแบบหลายสาย    
Multiple valued dependency     การพาดพิงหลายค่า    
Multi-set     ตารางที่มีทูเพิลซ้ำกัน   
Multi-tier    สถาปัตยกรรมแบบหลายชั้น  ไคลแอนท์รันแอพลิเกชันทำงานประสานกับมิดเดิลแวร์หลายตัว   
Multi-tired Architecture     สถาปัตยกรรมแบบหลายระดับ   
MVD    Multiple valued dependency    
MySQL    RDBMS ของบริษัท MySQL AB   
native machine code    โค้ดภาษาเครื่องอยู่ในรูปของไฟล์ .exe หรือ .dll     
Native Queries    คิวรีแบบไทป์เซฟ   
NCI    Non-Clustered Index    
NCICT    Non-Clustered Index on Clustered Table    
NCIH    Non-Clustered Indexes on Heap   
NDF    Non-Deterministic Function    
NDM    Network Database Model แบบจำลองฐานข้อมูลแบบเครือข่าย   
Network database model    แบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบเครือข่าย   
NFA    .NET Framework Assembly    
Non-Clustered Index     ดรรชนีไม่เป็นคลัสเตอร์    
Non-Clustered Index on Clustered Table     ดรรชนีไม่เป็นคลัสเตอร์ใน CT    
Non-Clustered Indexes on Heap    ดรรชนีไม่เป็นคลัสเตอร์ในฮีพ    
Non-Deterministic Function     ฟังก์ชันแบบคืนค่าไม่ตายตัว   
Non-Procedural     การคิดแบบไม่เน้นกระบวนการ    
Normal Form    ขั้นตอนต่างๆ ของการทำ Normalization   
Normalization    กระบวนการลดทอนความซ้ำซ้อนข้อข้อมูล หรือตัดส่วนที่ซ้ำกันโดยไม่จำเป็นในตารางออกไป   
Notification Services     บริการแจ้งเตือน    
NP    Non-Procedural    
NULL    ค่าที่ไม่มีค่า    
O/RM    Object / Relational Mapping    
Object / Relational Mapping     การจับคู่ระหว่างออพเจ็กต์กับความสัมพันธ์ (ตาราง)   
Object Explorer     องค์ประกอบของ SSMS ทำหน้าที่แสดงออพเจ็กต์ต่างๆ ในฐานข้อมูล    
Object Initializes     ตัวกำหนดค่าเริ่มต้นให้ออพเจ็กต์ สิ่งที่ช่วยให้เขียนโค้ดได้กระชับอ่านง่ายขึ้น เพราะสามารถกำหนดค่าเริ่มต้นให้พรอพเพอร์ตีได้ในบรรทัดเดียวกับการนิวออพเจ็กต์   
Object Oriented Database Model    แบบจำลองฐานข้อมูลวัตถุวิธี    
Object Oriented Programming     การโปรแกรมแบบวัตถุวิธี   
ODBC    ตัวเชื่อมต่อ SQL2008 ไมโครซอฟต์เอ็กเซล     
ODM    Object Database Model แบบจำลองฐานข้อมูลแบบวัตถุ   
OE    Object Explorer    
OI    Object Initializes    
OLAP    Online Analytical Processing   
OLE DB    ตัวเชื่อมต่อ SQL2008 กับไมโครซอฟต์เอ็กเซส    
OLTP    Online Transaction Processing   
On-demand Report    การสร้างรายงานสดทุกครั้งเมื่อผู้ใช้เรียกดู    
Online transaction processing (OLTP)    ฐานข้อมูลเพื่อการประมวลผลทางธุรกรรม   
OO    Ordering Operator    
OODM    Object Oriented Database Model แบบจำลองฐานข้อมูลวัตถุวิธี   
OOP    Object Oriented Programming การเขียนโปรแกรมวัตถุวิธี   
Operation System     ระบบปฏิบัติการ   
Operator    ตัวดำเนินการ   
OQL    Object Query Language   
Ordering Operator     ตัวดำเนินการเรียงข้อมูล    
ORDM    Object-Relational Database Model แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์   
Orperand    ตัวถูกดำเนินการ   
Page    หน่วยเก็บข้อมูลพื้นฐานในโปรแกรม SQL2008 ระดับรองจากเอกซ์เทนท์    
Page Split    การแบ่งเพจ    
Parallel programming    การประมวลผลแบบคู่ขนาน   
Parameter    พารามิเตอร์ ค่าที่เมธอดหรือฟังก์ชันรับมาจากผู้เรียก   
Parameterized view    วิวแบบมีพารามิเตอร์    
Parent table    ตารางที่มีตารางลูกหนึ่งหรือหลายๆ ตารางในระดับต่ำกว่า   
Parent Table     ตารางซึ่งมีข้อมูลที่ถูกอ้างถึงใน CT    

 


ภาคผนวก ง อภิธานศัพท์ : ตอน 2

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


ภาคผนวก ง อภิธานศัพท์ : ตอน 2

 

Data    ดาต้า ข้อมูล ชิ้นส่วนข้อเท็จจริงที่ดูจะไม่สัมพันธ์กัน   
Data bandwidth    แถบความกว้างของข้อมูล   
Data center    ศูนย์ข้อมูล   
Data Collection     ดาต้าคอลเลคชัน (ออพเจ็กต์ที่เก็บ) ข้อมูลเป็นชุดเป็นกลุ่มก้อน เช่นอาร์เรย์   
Data Control Language     คำสั่งเพื่อการควบคุม    
Data Definition Language     คำสั่งเพื่อนิยามข้อมูล    
Data Filtering     การกำหนดตัวกรองข้อมูล    
Data Manipulation Language     คำสั่งเพื่อจัดการข้อมูล    
Data mart    คล้ายโกดังข้อมูลแต่มีขนาดเล็กกว่ามาก   
Data mining     การทำเหมืองข้อมูล กระบวนการนำข้อมูลหลายล้านแถว (หรืออาจหลายพันล้าน) มาแยกแยะเพื่อหาข้อมูลที่ต้องการ    
Data model    ลักษณะการเก็บข้อมูลในโลกของฐานข้อมูลสัมพันธ์   
Data Region    ดาต้ารีเจียน   
Data Set     ดาต้าเซต ตัวเชื่อมต่อกับฐานข้อมูล SQL2008 ทำหน้าที่เก็บคิวรี   
Data Source     ดาต้าซอร์ส ส่วนกำหนดแหล่งข้อมูล ตัวเชื่อมต่อกับฐานข้อมูล SQL2008 ทำหน้าที่เก็บวิธีเชื่อมต่อ   
Data warehouse    คลังข้อมูล ฐานข้อมูลที่ใช้เพื่อการวิเคราะห์ ใช้เก็บข้อมูลที่ประมวลจากฐานข้อมูล OLTP อีกต่อหนึ่ง   
Database    ดาต้าเบส วัตถุที่เป็นโครงสร้าง ฐานข้อมูลในคอมพิวเตอร์ ประกอบด้วยส่วนหลักๆ สองส่วนคือข้อมูล และส่วนพรรณนาข้อมูล (meta data เมตาดาต้า)   
Database Administator (DBA)    ผู้ทำหน้าที่ดูแลระบบฐานข้อมูลให้พร้อมใช้งานอยู่เสมอ   
Database Engine     ดาต้าเบสเอ็นจิน    
Database management system (DBMS)    โปรแกรมจัดการฐานข้อมูล เป็นซอฟต์แวร์ที่ช่วยให้ท่านสามารถจัดการกับข้อมูลได้โดยไม่ต้องสนใจฮาร์ดแวร์หรือรายละเอียดในการเก็บข้อมูลทางกายภาพ   
Database model    เครื่องมือสำหรับใช้พรรณนาโครงสร้าง และคุณสมบัติต่างๆ ของฐานข้อมูล   
Database Server    เครื่องแม่ข่ายให้บริการฐานข้อมูล   
dataReader    ออพเจ็กต์ทำหน้าที่อ่านแถวข้อมูลผลลัพธ์ของคิวรี   
DBA    Database  Administrator (พนักงาน) ผู้ดูแลฐานข้อมูล   
DBMS    Database management system   
dbo    database owner ผู้สร้างฐานข้อมูล   
DC    Data Collection    
DCL    Data Control Language    
DDL    Data definition Language    
Decision Support System     ระบบเพื่อช่วยการตัดสินใจ    
Declarative Language     ภาษาที่เน้นการประกาศความมุ่งหมาย    
Delay Routine    ฟังก์ชันมีหน้าที่ให้โปรแกรมหยุดรอตามเวลาที่กำหนด    
Denornalize    ลดการแยกย่อยตารางเพื่อให้นอร์มัลไลซ์มีความเข้มข้นน้อยลง   
Derived Table     ตารางเทียมซึ่งเกิดจากแถวและคอลัมน์ที่เป็นผลลัพธ์ของคิวรี   
Determinant    ตัวกำหนด   
Deterministic Function     ฟังก์ชันแบบคืนค่าตายตัว   
DF    Deterministic Function    
Disks Silo    ดิสก์ไซโล   
Distributed Transaction     การกระจายงานออกเป็นหลายชุด   
Distributed Transaction Coordinator     เซอร์วิสทำหน้าที่ประสานงานของ Distributed Transaction   
DKNF    นอร์มัลฟอร์มกุญแจโดเมน   
DL    Declarative Language    
DLT    Dangling Tuple    
DML    Data Modification Language   
DMV    Dynamic Management View    
Document Windows     หน้าต่างเอกสารใน SSMS   
Domain Key Normal Form     นอร์มัลฟอร์มกุญแจโดเมน   
DR    Data Region ดาต้ารีเจียน    
Drill Down     รายงานที่ยืดหดได้    
Drill Through     รายงานแบบ เชื่อมโยง    
DS    Data Source    
DSQL    Dynamic SQL    
DSS    Decision Support System    
DT    Derived Table    
DTS    Data Set    
Dual-core    คอมพิวเตอร์ที่มีตัวประมวลผลแบบมีแกนในสองแกน   
DW    Document Windows    
Dynamic array    อาร์เรย์แบบความยาวเปลี่ยนแปลงได้   
Dynamic Management View     คือวิวที่ใช้เพื่อตรวจสอบว่า QE และ SE สร้าง EP อะไรไว้บ้าง   
Dynamic SQL     คิวรีที่มีพลวัต    
E/R Diagram    Entity/Relation Diagram แผนภูมิอีอาร์ ใช้แสดงเอนทิตีและความสัมพันธ์   
EC    Estimated Cost    
Edition    ฉบับ หรือรุ่นย่อยต่างๆ ของ SQL2008   
EEP    Estimated Execution Plan    
EM    Extension Method    
End-user    ผู้ใช้ที่ไม่มีความรู้ด้านเทคนิคเลย แต่มักมีความรู้เกี่ยวกับทางกฎธุรกิจเป็นอย่างดี   
Enterprise Environment    สภาพแวดล้อมระดับองค์กร    
Entity    เอนทิตี ออพเจ็กต์หนึ่งในฐานข้อมูล วัตถุ ตาราง   
Entity/Relation Diagram (ERD)    แผนภูมิอีอาร์ ใช้แสดงเอนทิตีและความสัมพันธ์   
Environment System Variable     ตัวแปรระบบที่ระบุสภาพแวดล้อม   
EP    Execution Plan    
EPC    Execution Plan Cache    
EPR    Execution Plan Reuse    
ERD    Entity/Relation Diagram   
ESP    Execute and Show Plan     
Estimated Cost     ค่าประเมินคือค่าใช้จ่ายในการทำงานของคิวรีที่เกิดจากการคาดการของ QO   
Estimated Execution Plan     แผนการทำงานโดยประเมินเป็นแผนการที่ QO ส่งให้ SE ทำงาน   
ESV    Environment System Variable    
ET    Expression Trees    
Execute and Show Plan      โหมดปฏิบัติและแสดงแผนการทำงาน   
Execution Plan     แผนการทำงานที่ SQL2008 วางไว้เพื่อกระทำต่อคิวรี   
Execution Plan Cache     แคชเก็บแผนงาน   
Execution Plan Reuse     การนำ EP กลับมาใช้งานใหม่   
Expression Trees     คุณสมบัติของภาษา C# ที่ช่วยให้กระจายหรือแจกแจงคำสั่งให้เป็นข้อมูลเพื่อการเปลี่ยนแปลงคำสั่งได้   
Extension Method     คุณสมบัติของภาษา C# ที่ช่วยให้นิยามเมธอดที่ทำตัวเหมือนเป็นสมาชิกของคลาสแบบ sealed class หรือคลาสที่อยู่ในแอสเซมบลีได้    
Extent    หน่วยเก็บข้อมูลพื้นฐานในโปรแกรม SQL2008    
factorial function    แฟกทอเรียลฟังก์ชัน  ฟังก์ชันเชิงตัวประกอบ   
FD    Functional Dependency การพาดพิง   
FEP    Front-End Process    
FFD    Full Functional Dependence    
Field    ข้อมูลหนึ่งชิ้นที่สัมพันธ์กับตาราง สมาชิกเก็บข้อมูลของคลาส   
File System    ดู Flat file   
FK    Foreign Key   
FKI    Foreign Key Indexing    
Flat file    วิธีเก็บข้อมูลเป็นแฟ้มที่ไม่มีโครงสร้างข้อมูลใดๆ เลย   
Floating point    ตัวเลขทศนิยมที่มีตำแหน่งทศนิยมไม่แน่นอน   
Flow Chart     แผนภูมิเพื่อแสดงอัลกอริทึม    
Foreign Key    กุญแจนอกทำให้เราแยกแยะได้ว่าข้อมูลแถวในในตารางลูกสัมพันธ์กันข้อมูลแถวใดในตารางแม่   
Foreign Key Indexing     ดรรชนีกุญแจนอก    
Front-End Process     โปรแกรมส่วนหน้าซึ่งมีหน้าที่ติดต่อกับผู้ใช้    
Full Functional Dependence     การพาดพิงสมบูรณ์    
Full-Text Search     เซอร์วิสเพื่อการค้นในข้อความ    
Fully qualified name    การระบุเส้นทางเต็มหรือชื่อเต็ม    
Functional Dependency     การพาดพิง   
Functional Programming    การเขียนโปรแกรมแบบเน้นฟังก์ชัน   
GA    Grouping Attribute   
Garbage Collector    โปรแกรมรวบรวมและกำจัดขยะ   
GC    Garbage Collector   
GH    กรุ๊พไฮราคี  Group Hierarchy    
Graphic User Interface (GUI)    การมีปฏิสัมพันธ์กับผู้ใช้แบบรูปภาพ   
Group Hierarchy    ลำดับชั้นของกลุ่ม   
Grouping Attribute    แอตทริบิวต์ที่ถูกจัดกลุ่ม   
Hard code    การใส่คิวรีลงในส่วนแอพลิเกชัน    
Hash Table     การนำข้อมูลมาจัดเรียงใหม่ให้มีโครงสร้างตามอัลกอริทึมของการแฮช   
HDM    Hierarchical Database Model แบบจำลองฐานข้อมูลแบบลำดับชั้น   
Heuristic Evaluation     หลักการหากวิธีดีสุดเพื่อเลือก CBP แบบที่ดีที่สุด  QO ทำได้   
Hierarchical database model    แบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบลำดับชั้น   
Hierarchy    ข้อมูลที่ลดหลั่นเป็นลำดับชั้น   
HV    Heuristic Evaluation    
Hybrid database    ฐานข้อมูลแบบผสมผสาน
   

 


ภาคผนวก ง อภิธานศัพท์ : ตอน 1

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


ภาคผนวก ง อภิธานศัพท์ : ตอน 1

 

0NF    นอร์มัลฟอร์มระดับศูนย์   
.NET Framework Assembly     ดอตเน็ตเฟรมเวิร์คแอสเซมบลี      
0th Normal Form     นอร์มัลฟอร์มระดับศูนย์   
1NF    นอร์มัลฟอร์มระดับที่หนึ่ง    
1st Normal Form     นอร์มัลฟอร์มระดับที่หนึ่ง    
2nd Normal Form     นอร์มัลฟอร์มระดับที่สอง    
2NF    นอร์มัลฟอร์มระดับที่สอง    
3NF    นอร์มัลฟอร์มระดับที่สาม    
3rd Normal Form     นอร์มัลฟอร์มระดับที่สาม    
4NF    นอร์มัลฟอร์มระดับที่สี่    
4th Normal Form     นอร์มัลฟอร์มระดับที่สี่    
5NF    นอร์มัลฟอร์มระดับที่ห้า    
5th Normal Form     นอร์มัลฟอร์มระดับที่ห้า    
AA    Aggregated Attribute คุณสมบัติการหาค่ารวม
AB     Aggregate Biding การเชื่อมโยงระหว่างการหาค่ารวม
Abstract    การลดทอนรายละเอียดให้เป็นนามธรรมเพื่อให้เกิดความไม่จำเพาะเจาะจง   
ACG    Adjacent Column Group กลุ่มคอลัมน์ข้างเคียง
Actual Execution Plan     ทำงานจริง ขั้นตอนการทำงานหรือตัวดำเนินการต่างๆ ที่ทำงานไปแล้ว   
Ad-hoc    การ (เขียนคิวรี) แบบด้นเพื่อใช้เฉพาะกิจ   
Adjacent Column Group     กลุ่มแบบคอลัมน์ข้างเคียง   
Administrator    ผู้ทำหน้าที่ดูแลระบบคอมพิวเตอร์ให้พร้อมใช้งานอยู่เสมอ   
ADO.NET     เนมสเปสที่เกี่ยวข้องกับฐานข้อมูล   
AdventureWorks    ฐานข้อมูลตัวอย่างที่ไมโครซอฟต์จัดมาให้    
AEP    Actual Execution Plan แผนดำเนินงานจริง   
Aggregate    การคำนวณที่เกี่ยวข้องกับข้อมูลหลายๆ แถว    
Aggregate Biding    การผูกแอกริเกต การตรวจสอบว่าคิวรีนั้นมีการทำแอกริเกตหรือไม่   
Aggregate Function    ฟังก์ชันที่ทำงานกับกลุ่มข้อมูลแต่คืนค่าเป็นผลรวม   
Aggregated Attribute     แอตทริบิวต์ที่ถูกหาผลรวม   
Aggregation Operator     ตัวดำเนินการจัดกลุ่ม    
Alias    ชื่อเล่น    
Alternate Indexing     ดรรชนีเพื่อเลือก
AN    Auto Numbering การกำหนดหมายเลขโดยอัตโนมัติ   
Analysis Service     บริการวิเคราะห์ข้อมูลแบบออนไลน์    
Analysis services    เซอร์วิสซึ่งทำหน้าที่ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace   
Anomaly    ความผิดปรกติที่ไม่พึงประสงค์    
Anomaly Insertion    การแทรกที่ผิดปรกติ   
Anonymous Types     คุณสมบัติของภาษา C# ที่ช่วยให้สร้างออพเจ็กต์จากไทป์ที่ไม่ได้เกิดจากนิยามคลาสได้ ใน LINQ ท่านมักใช้ AT ร่วมกับ OI   
ANSI SQL    ภาษา SQL มาตรฐาน   
AO    Aggregation Operator    
Archived data    ข้อมูลเก่าย้อนหลังไปนาน   
Array    โครงสร้างข้อมูลที่มีการเรียงตัวซ้ำๆ กัน   
Assembly Manifest    แฟ้มทำหน้าที่เก็บเมตาดาต้าที่พรรณนาถึงไทป์ต่างๆ เมธอด ลักษณะการสืบคุณสมบัติ และคุณสมบัติต่างๆ ภายในแอสเซมบลี   
AT    Anonymous Types    
Atomic Operand     ตัวถูกดำเนินการที่เป็นหน่วยๆ เดียว แบ่งแยกไม่ได้   
attribute    โครงสร้างคอลัมน์ของตาราง   
Attribute    คุณสมบัติ คอลัมน์   
Auto counter    คอลัมน์ที่เพิ่มค่าได้โดยอัตโนมัติ   
Auto Numbering     หมายเลขอัตโนมัติ    
Auxiliary Table    ตารางช่วย   
Bag    ตารางที่มีทูเพิลซ้ำกัน   
Balance Tree     โครงสร้างแบบต้นไม้ใบนารี    
Batch    การทำงานเป็นชุด   
Batch Separator     ตัวทำให้แบตช์สิ้นสุด    
BCNF    นอร์มัลฟอร์มแบบบอยซ์-คอดด์    
BF    Build-in Function     ฟังก์ชันแบบฝังตัว
BI    Business Intelligence    
BI    Business intelligence    
BIC    Built-in Collection    
BIDS    โปรแกรม Business Intelligence Development Studio    
Bill Of Materials     ข้อมูลรายการวัสดุ    
Bill of Materials     รายการวัสดุ   
Binary Tree    โครงสร้างแบบต้นไม้ใบนารี    
Blade Server    เซอฟเวอร์ที่ใช้สถาปัตยกรรมแบบเบลด    
BOL    SQL Server 2008 Books Online   
BOM    Bill of Materials    
Boyce-Codd Normal Form     นอร์มัลฟอร์มแบบบอยซ์-คอดด์    
BTree    โครงสร้างแบบต้นไม้ใบนารี    
Build-in functions    ฟังก์ชันแบบฝังตัว   
Built-in Collection     คอลเลคชันภายใน    
Business Intelligence     หมายถึงการนำข้อมูลจากดาต้าแวร์เฮาส์ (ระบบ OLAP) มาวิเคราะห์เพื่อดูพฤติกรรมในอดีต พิจารณากระบวนการในปัจจุบัน และทำนายแนวโน้มในอนาคต    
Business Rules    กฎทางธุรกิจ   
CA    Custom Assembly    
Cache    แคช    
Camel case    การตั้งชื่อโดยใช้ตัวนำตัวตาม  ถ้าเป็นคำผสมให้เขียนติดกัน ตัวอักษรใหญ่นำหน้าทุกคำ ยกเว้นคำแรก   
Candidate Key     กุญแจเสนอ คอลัมน์ที่อาจนำมาใช้ทำกุญแจหลักได้    
Cartesian product     การคูณที่ให้ผลลัพธ์แบบคาร์ทีเซียน   
Cartesian Product     ผลคูณคาร์ทีเซียน    
CAS    Code Access Security   
CBP    Cost-Based Plan    
CD    การพาดพิงเป็นวงรอบ    
Change request    รายการข้อเรียกร้อง    
Chart title    ข้อความส่วนหัวของแผนภูมิ    
Child Table    ตารางที่มีตารางแม่อยู่ในระดับหนึ่งกว่า ตารางที่อ้างถึงข้อมูลใน PT    
CI    Cluster Index    
CIL    Common Intermediate Language ดู  MSIL   
CK    "Composite Key, Candidate Key "   
Client    คอมพิวเตอร์ผู้ทำหน้าที่รับบริการ    
CLR    Common Language Runtime ภาคส่วนของดอตเน็ตที่ดำเนินการกับ CIL   
CLR Related Command     คำสั่งที่เกี่ยวข้องกับ CLR   
CLR Routine     ออพเจ็กต์ที่สร้งจากภาษา CLR เพื่อนำไปใช้งานใน SQL2008   
CLRR    CLR Routine    
Cluster    คลัสเตอร์ คอมพิวเตอร์เตอร์แบบเซอฟเวอร์จำนวนมากที่รวมตัวกันเป็นกลุ่ม   
Cluster (View)    สิ่งที่มีลักษณะและจุดประสงค์ในการใช้งานเหมือนวิววัตถุแต่ไม่มีการการปรับข้อมูลอัตโนมัติ   
Cluster Index     ดรรชนีแบบคลัสเตอร์   
Cluster Key     กุญแจคลัสเตอร์   
Clustered Table    ตารางคลัสเตอร์   
Code Access Security    วิธีรักษาความปลอดภัยของ CLRR   
Cohesion    หมายถึงโค้ดหน่วยหนึ่งควรทำสิ่งใดสิ่งหนึ่งเพียงสิ่งเดียว    
COI    Covering Index    
Combination    คอมบิเนชัน การผสมให้เกิดรูปแบบที่เป็นไปได้ทั้งหมด   
Comma-delimited file    "แฟ้มที่เก็บข้อมูลตัวอักษรธรรมดา ข้อมูลแต่ละคอลัมน์ถูกคั่นด้วยเครื่องหมายจุลภาค  (,) แต่ละบรรทัดถูกแยกจากกันด้วยรหัสขึ้นบรรทัดใหม่"   
Comment    คอมเมนท์    
Common Table Expression     นิพจน์ตารางร่วม   
Component    ชิ้นส่วนซอฟต์แวร์   
Composite Key    กุญแจร่วม   
Concurrent    โปรแกรมประยุกต์ที่ทำงานแบบคู่ขนาน   
Concurrent processing    การประมวลผลแบบคู่ขนาน   
Console Application     โปรแกรมที่มีส่วนติดต่อกับผู้ใช้เป็นกรอบพื้นดำเหมือนในดอส   
Constant    ตัวคงค่า    
Constraint    ข้อกำหนด เช่นข้อกำหนดของคอลัมน์ที่ใส่ไว้ตอนสร้างตาราง   
Constraint Programming    การเขียนโปรแกรมแบบเน้นข้อกำหนด   
Continuum Datum    ข้อมูลที่ต่อเนื่อง    
Correlated Sub-queries     คิวรีย่อยที่เกี่ยวโยงกัน    
Cost-Based Plan     แผนการทำงานอิงค่าใช้จ่าย คำว่าค่าใช้จ่ายในที่นี้หมายถึงค่าความสิ้นเปลืองทรัพยากรของระบบ เช่นซีพียู I/O รวมถึงเวลาที่ต้องใช้ในการปฏิบัติด้วย   
Covering Index     ดรรชนีครอบคลุม เป็นดรรชนีที่ถูกสร้างขึ้นเพื่อให้ครอบคลุมความต้องการ หรือครอบคลุมคอลัมน์ที่ต้องการใช้ในคิวรี   
CP    Cartesian Product    
CRC    CLR Related Command    
Crystal Report     โปรแกรมประยุกต์แบบ BI จากบริษัท Business Object    
CS    Correlated Sub-queries    
CT    Cluster Table   
CTE    Common Table Expression    
CTE    Common Table Expression    
Custom Assembly     MC ที่ทำงานใน MS-SQL   
Cyclic Dependency     การพาดพิงเป็นวงรอบ    
Dangling Tuple     ทูเพิลกำพร้า
    

 


บรรณานุกรม

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


บรรณานุกรม

 

  • Ben-Gan , Itzik, Inside Microsoft SQL Server 2005— T-SQL Programming, First Edition, Washington, Microsoft Press , 2006, ISBN-13: 978-0-7356-2197-8
  • Ben-Gan , Itzik, Inside Microsoft SQL Server 2005 T-SQL Querying, First Edition, Washington, Microsoft Press , 2006, ISBN-13: 978-0-7356-2313-2
  • Celko, Joe, Joe Celko's Data and Databases: Concepts in Practice, First Edition, CA, Morgan Kaufmann, 1999, ISBN: 1558604324
  • Celko, Joe, "THINKING IN SETS Auxiliary, Temporal, and Virtual Tables in SQL", First Edition, CA, Morgan Kaufmann, 2008, ISBN 978-0-12-374137-0
  • Celko, Joe, Joe Celko’s Trees and hierarchies in SQL for smarties, First Edition, CA, Morgan Kaufmann, 2004, ISBN 1-55860-920-2
  • Churcher, Clare, Beginning SQL Queries: From Novice to Professional, First Edition, CA, Apres, 2008, ISBN-13 (pbk): 978-1-59059-943-3
  • Codd, E. F., The Relational Model for Database Management, Second Edition, MA, Addison-Wesley, 1990, ISBN 0-201-14192-2
  • Coles, Michael, Pro T-SQL 2008 Programmer’s Guide, First Edition, CA, Apres, 2008, ISBN-13 (pbk): 978-1-4302-1001-6
  • DATE , C. J. , An Introduction to Database Systems, Eighth Edition, MA, Pearson, 2004, ISBN 0-321-18956-6
  • Dewson, Robin, Beginning SQL Server 2008 for Developers: From Novice to Professional, First Edition, CA, Apres, 2008, ISBN-13 (pbk): 978-1-59059-958-7
  • Garcia-Molina, Hector, Jeffrey D. Ullman, Jennifer Widom, Database Systems: The Complete Book, First Edition, New Jersey, Prentice Hall, 2008, ISBN-10: 0131873253
  • Hamilton, Bill , Programming SQL Server 2005, First Edition, CA, O'Reilly, 2006, ISBN-13: 978-0-59-600479-8
  • J. Donahoo, Michael, SQL: Practical Guide for Developers, First Edition, CA, Morgan Kaufmann, 2005, ISBN-13: 978-0-1222-0531-6
  • J. Hernandez, Michael, Database Design for Mere Mortals, Second Edition, MA, Addison-Wesley, 2003, ISBN 0-201-75284-0
  • J. OPPEL, ANDREW, Databases Demystified, First Edition, , McGraw-Hill/Osborne, 2004, ISBN-13: 978-0072253641
  • Kriegel, Alex, SQL Bible, First Edition, Indiana, Wiley, 2003, ISBN: 0-7645-2584-0
  • Landrum, Rodney, Pro SQL Server 2008 Reporting Services, First Edition, CA, Apres, 2008, ISBN-13 (pbk): 978-1-59059-992-1
  • Lans, Rick F. van der, Introduction to SQL: Mastering the Relational Database Language, Fourth Edition, MA, Pearson, 2006, ISBN-13: 978-0-321-30596-1
  • Mistry, Ross, Microsoft SQL Server 2005 Management and Administration, First Edition, Indiana, Sams, 2008, ISBN 0-672-32956-5
  • Molinaro, Anthony , SQL Cookbook, First Edition, CA, O'Reilly, 2005, ISBN: 0-596-00976-3
  • Nielsen, Paul, SQL Server 2005 Bible, First Edition, Indiana, Wiley, 2005, ISBN-13: 978-0-7645-4256-5
  • Powell, Gavin, Beginning Database Design, First Edition, Indiana, Wiley, 2006, ISBN-13: 978-0-7645-7490-0
  • R. Plew, Ronald, Sams Teach Yourself SQL in 24 Hours, Third Edition, Indiana, Sams, 2003, ISBN:0-672-32442-3
  • Silberschatz, Avi, Database System Concepts, Fifth Edition, , McGraw-Hill , 2005, ISBN 0-07-295886-3
  • Tang, ZhaoHui, Data Mining with SQL Server 2005, First Edition, Indiana, Wiley, 2005, ISBN-13: 978-0-471-46261-3
  • Vieira, Robert, Beginning SQL Server 2005 Programming, First Edition, Indiana, Wiley, 2006, ISBN-13: 978-0-7645-8433-6
  • Wilton, Paul, Beginning SQL, First Edition, Indiana, Wiley, 2005, ISBN: 0-7645-7732-8

 

เหล่งอ้างอิงในอินเตอร์เน็ต

 

  • บทความด้าน บิซิเนส อินเทลลิเจนซ์ จาก ลาภลอย วานิชอังกูร Loy Business Intelligence [BI] http://bi-thai.spaces.live.com
  • Intelligent Enterprise http://www.intelligententerprise.com
  • SQL Server Developer Center http://msdn.microsoft.com/en-us/sqlserve
  • SQL Server Performance http://www.sql-server-performance.com
  • SQL Team http://www.sqlteam.com
  • OdeToCode http://www.odetocode.com
  • MSSQL Tips http://www.mssqltips.com

 


สารบัญของหนังสือ: ตอน 5

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


สารบัญของหนังสือ: ตอน 5

 

บทที่ 30: ฟังก์ชันในภาษา T-SQl
30.1. ฟังก์ชันสตริง
30.1.1. ฟังก์ชัน ASCII
30.1.2. ฟังก์ชัน CHAR
30.1.3. ฟังก์ชัน CHARINDEX
30.1.4. ฟังก์ชัน DIFFERENCE
30.1.5. ฟังก์ชัน LEFT
30.1.6. ฟังก์ชัน LEN
30.1.7. ฟังก์ชัน LOWER
30.1.8. ฟังก์ชัน LTRIM
30.1.9. ฟังก์ชัน NCHAR
30.1.10. ฟังก์ชัน PATINDEX
30.1.11. ฟังก์ชัน QUOTENAME
30.1.12. ฟังก์ชัน REPLACE
30.1.13. ฟังก์ชัน REPLICATE
30.1.14. ฟังก์ชัน REVERSE
30.1.15. ฟังก์ชัน RIGHT
30.1.16. ฟังก์ชัน RTRIM
30.1.17. ฟังก์ชัน SOUNDEX
30.1.18. ฟังก์ชัน SPACE
30.2. ฟังก์ชันจัดอันดับ
30.2.1. ฟังก์ชัน RANK
30.2.2. ฟังก์ชัน DENSE_RANK
30.2.3. ฟังก์ชัน NTILE
30.2.4. ฟังก์ชัน ROW_NUMBER
30.3. ฟังก์ชันในกลุ่มโรว์เซต
30.3.1. ฟังก์ชัน CONTAINSTABLE
30.3.2. ฟังก์ชัน FREETEXTTABLE
30.3.3. ฟังก์ชัน OPENDATASOURCE
30.3.4. ฟังก์ชัน OPENQUERY
30.3.5. ฟังก์ชัน OPENROWSET
30.3.6. ฟังก์ชัน OPENXML
30.4. ฟังก์ชันในกลุ่มเอกกริเกต (Aggregate)
30.4.1. ฟังก์ชัน AVG
30.4.2. ฟังก์ชัน CHECKSUM_AGG
30.4.3. ฟังก์ชัน COUNT
30.4.4. ฟังก์ชัน COUNT_BIG
30.4.5. ฟังก์ชัน GROUPING
30.4.6. ฟังก์ชัน MAX
30.4.7. ฟังก์ชัน MIN
30.4.8. ฟังก์ชัน SUM
30.4.9. ฟังก์ชัน STDEV
30.4.10. ฟังก์ชัน STDEVP
30.4.11. ฟังก์ชัน VAR
30.4.12. ฟังก์ชัน VARP
30.5. สรุปท้ายบท
30.6. คำถามท้ายบท
30.7. แบบฝึกหัดท้ายบท

บทที่ 31: ADO.NET และ LINQ
31.1. สถาปัตยกรรม ADO.NET
31.1.1. คลาส SqlClient ใน ADO
31.1.2. วิธีเชื่อมต่อ SQL2008 ด้วย ADO.NET
31.1.3. เขียนและทดสอบคิวรีใน SSMS
31.1.4. โค้ดภาษา C#
31.1.5. วิธีปรับปรุงโค้ดภาษา C#
31.1.6. สรุปเรื่อง ADO.NET
31.2. สถาปัตยกรรม LINQ
31.2.1. วิธีสร้างคลาสเพื่อหุ้มห่อการทำงานของ LINQ และ SQL
31.2.2. วิธีสร้างตัวเชื่อมต่อกับ SQL2008
31.2.3. วิธีทำ  O/RM
31.2.4. วิธีเขียนโปรแกรมภาษา C# ที่ใช้ LINQ
31.2.5. วิเคราะห์โครงสร้าง LINQ
31.2.6. อนุประโยคในภาษา LINQ
31.2.7. วิธีใช้คำสั่ง where
31.2.8. วิธีใช้คำสั่ง group by
31.2.9. LINQ เพิ่มเติม
31.2.10. สรุปเรื่อง LINQ
31.3. สรุปท้ายบท
31.4. คำถามท้ายบท
31.5. แบบฝึกหัดท้ายบท

ภาคผนวก ก เฉลยคำถามและแบบฝึกหัดท้ายเล่ม
ภาคผนวก ข ประวัติโดยย่อของ MS-SQL Server
ภาคผนวก ค ดร. คอดด์
ภาคผนวก ง อภิธานศัพท์
ภาคผนวก จ ฐานข้อมูลตัวอย่าง
ภาคผนวก ฉ เครื่องมือและการติดตั้ง
ภาคผนวก ช คำถามและแบบฝึกหัดท้ายเล่ม
ภาคผนวก ซ เฉลยคำถามและแบบฝึกหัดท้ายเล่ม
ภาคผนวก ณ บรรณานุกรม

ดูสารบัญส่วนที่เหลือ 1 2 3 4 5

 



สารบัญของหนังสือ: ตอน 4

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


สารบัญของหนังสือ: ตอน 4

 

ภาค 3 โปรแกรมมิ่ง

บทที่ 21: Dynamic SQL
21.1. คำสั่ง EXECUTE
21.2. วิธีสร้าง ORDER BY แบบมีพลวัต
21.3. Dynamic SQL กับคำสั่ง WHERE
21.4. วิธีใช้พารามิเตอร์กับ Dynamic SQL
21.5. วิธีโจมตีแบบ SQL Injection
21.6. สรุปท้ายบท
21.7. คำถามท้ายบท
21.8. แบบฝึกหัดท้ายบท


บทที่ 22: Stored Procedure เบื้องต้น
22.1. ลองเล่นสพร็อกซ์
22.2. วิธีสร้างคิวรีอย่างง่ายที่สุด
22.3. การนำคิวรีไปสร้างสพร็อกซ์
22.4. วิธีเรียกใช้สพร็อกซ์จากคิวรี
22.5. วิธีเรียกใช้สพร็อกซ์จากโปรแกรมภาษา C#
22.6. วิธีใส่พารามิเตอร์ให้สพร็อก
22.7. วิธีส่งพารามิเตอร์ให้ C#
22.8. วิธีเรียกใช้สพร็อกซ์แบบมีพารามิเตอร์จากคิวรี
22.9. สรุปท้ายบท
22.10. คำถามท้ายบท
22.11. แบบฝึกหัดท้ายบท


บทที่ 23: Stored Procedure ระดับสูง
23.1. ประโยชน์ของสพร็อกซ์
23.2. ไวยากรณ์ของสพร็อกซ์
23.3. ตัวอย่างสพร็อกซ์สั้นๆ
23.4. เทคนิคการแก้ไขสพร็อกซ์
23.5. วิธีลบสพร็อกซ์
23.6. ข้อกำหนดของพารามิเตอร์
23.7. การใช้งานอินพุตพารามิเตอร์
23.8. การใช้งานเอาท์พุตพารามิเตอร์
23.9. วิธีทำเอาท์พุตมากกว่าหนึ่งค่า
23.10. ตัวอย่างสพร็อกซ์มาก SELECT
23.11. วิธีใช้พารามิเตอร์เรียงข้อมูล
23.12. วิธีใช้คำสั่ง RETURN
23.13. จัดการข้อผิดพลาดด้วย @@ERROR
23.14. สพร็อกซ์หาก BOM
23.15. สรุปท้ายบท
23.16. คำถามท้ายบท
23.17. แบบฝึกหัดท้ายบท


บทที่ 24: User-Defined Function
24.1. ประโยชน์ของ UDF
24.2. ข้อจำกัดของ UDF
24.3. ความแตกต่างระหว่าง UDF กับ Sproc
24.4. วิธีสร้าง UDF ที่ให้ค่าเป็นสเกลาร์
24.4.1. สาทิตวิธีสร้าง SF แบบง่ายสุด
24.4.2. วิธีตรวจดู UDFโดยใช้โปรแกรม SSMS
24.4.3. วิธีทดสอบการทำงานของ UDF
24.4.4. SF แบบรีเคอร์ซีฟ
24.4.5. ฟังก์ชันแฟกทอเรียล
24.4.6. ทดสอบฟังก์ชัน Factorial
24.4.7. Factorial แบบ CTE
24.4.8. ตรวจสอบ UDF ด้วย sys.objects
24.5. วิธีสร้าง UDF ที่ให้ค่าเป็นตาราง (TVF)
24.5.1. วิธีนิยาม TVF
24.5.2. วิธีใช้ CROSS APPLY
24.5.3. TVF ตรวจสอบ Contact
24.6. วิธีสร้าง TVF แบบ Inline
24.7. สรุปท้ายบท
24.8. คำถามท้ายบท
24.9. แบบฝึกหัดท้ายบท


บทที่ 25: รายงานเบื้องต้น
25.1. องค์ประกอบของรายงานแบบง่าย
25.1.1. รายงานแยกประเภทสินค้า
25.1.2. คิวรีที่ใช้ในรายงาน
25.2. วิธีสร้างโปรเจ็กต์รายงาน
25.3. วิธีสร้างไฟล์เก็บรายงาน
25.4. ดาต้าซอร์สและดาต้าเซต
25.5. วิธีสร้างตัวเชื่อมฐานข้อมูล
25.6. วิธีสร้างดาต้าเซตและคิวรี
25.7. ดาต้ารีเจียน
25.7.1. วิธีใส่ดาต้ารีเจียน
25.7.2. วิธีปรับตำแหน่ง DR และหน้ารายงาน
25.7.3. วิธีใส่คอลัมน์ใน DR
25.8. วิธีดูตัวอย่างรายงานแบบรวดเร็ว (Preview)
25.9. สรุปขั้นตอนเบื้องต้น
25.10. วิธีปรับแต่งรายงาน
25.10.1. วิธีจัดหน้าและความกว้างของคอลัมน์
25.10.2. วิธีกำหนดรูปแบบตัวเลข
25.10.3. วิธีใส่สีพื้นให้แถบไตเติ้ล
25.10.4. วิธีแบ่งข้อมูลออกเป็นกลุ่ม
25.10.5. วิธีใส่หัวรายงาน
25.11. สรุปท้ายบท
25.12. คำถามท้ายบท
25.13. แบบฝึกหัดท้ายบท


บทที่ 26: Business intelligence ด้วย SSRS
26.1. เซอฟเวอร์ฟาร์ม
26.2. ความเป็นมาของการทำรายงาน
26.3. Business Intelligence
26.4. รายงานแบบ OLAP
26.5. คุณสมบัติของ SSRS
26.6. ข้อดีของการทำรายงานด้วย SSRS
26.7. สิ่งใหม่ใน SSRS2008
26.8. Business Intelligence Development Studio
26.9. SQL Server Management Studio
26.10. สถาปัตยกรรม SSRS
26.10.1. ฐานข้อมูลของ SSRS
26.10.2. ตัวให้บริการรายงาน
26.10.3. โปรแกรมส่วนไคลแอนด์
26.11. Report Manager
26.12. ภาษา RDL
26.12.1. วิธีเรียกดูโค้ด RDL
26.12.2. โปรแกรม Hello, World!
26.13. ซอฟต์แวร์เพื่อการใช้งาน SSRS
26.14. ฮาร์ดแวร์เพื่อการใช้งาน SSRS
26.15. ขั้นตอนการสร้างรายงานด้วย SSRS
26.16. วิธีทำ Deployment
26.16.1. วิธีกำหนดคุณสมบัติของโปรเจ็กต์
26.16.2. วิธี Build และดีพลอย
26.17. การใช้งาน Report Manager
26.17.1. วิธีเปิด Report Manager
26.17.2. วิธีลบรายงาน
26.17.3. วิธีกำหนด Credential
26.17.4. วิธีสร้าง Snapshot ให้รายงาน
26.17.5. วิธีกำหนดให้แสดงรายงานจาก Snapshot
26.17.6. วิธีกำหนดให้แสดงรายงานจากแคช
26.17.7. ควรใช้แคชหรือ Snapshot
26.18. สรุปท้ายบท
26.19. คำถามท้ายบท
26.20. แบบฝึกหัดท้ายบท

บทที่ 27: สร้างรายงานระดับสูง
27.1. เรื่องของกลุ่มในรายงาน
27.1.1. วิธีสร้างกลุ่มใหม่
27.1.2. วิธีสร้างกลุ่มซ้อนกลุ่ม
27.1.3. วิธีเรียงข้อมูลในกลุ่ม
27.1.4. วิธีเรียงข้อมูลแบบผู้ใช้กำหนดได้
27.1.5. วิธีกำหนดให้ข้อมูลยืดหดได้ตามกลุ่มลูก
27.1.6. วิธีกำหนด Drill Down ให้กลุ่มหลัก
27.1.7. วิธีใส่ยอดรวมให้ข้อมูลแต่ละกลุ่ม (Total)
27.2. วิธีใส่พารามิเตอร์ด้วย Query Designer
27.2.1. วิธีเปิด QD
27.2.2. องค์ประกอบของ Query Designer
27.2.3. วิธีใส่พารามิเตอร์เพื่อคัดกรองข้อมูลตามราคาสินค้า
27.2.4. วิธีเปลี่ยนข้อความกำกับพารามิเตอร์
27.2.5. วิธีกำหนดค่าโดยปริยายของพารามิเตอร์
27.2.6. สร้างค่าพารามิเตอร์จากคิวรี
27.3. วิธีใช้ Stored Procedure กับรายงาน
27.4. วิธีกำหนดตัวกรองข้อมูล
27.4.1. วิธีใส่ตัวกรองข้อมูลในคิวรี
27.4.2. วิธีใส่ตัวกรองข้อมูลใน DR
27.5. วิธีสร้างระบบเจาะลึกให้รายงาน
27.5.1. วิธีสร้างแผนที่ของเอกสาร
27.5.2. วิธีทำรายงานแบบเชื่อมโยง
27.6. วิธีใช้นิพจน์ในรายงาน
27.6.1. วิธีใช้คอลเลคชันภายใน (BIC)
27.6.2. วิธีใช้นิพจน์เพื่อเปลี่ยนสีสินค้า
27.6.3. วิธีใช้นิพจน์เพื่อแสดงวันที่
27.7. วิธีทำรายงานแบบ เมทริกซ์
27.7.1. คิวรีสำหรับใช้สร้าง เมทริกซ์
27.7.2. กำหนด DS และ DST
27.7.3. วิธีใส่ข้อมูลตามแนวนอน
27.7.4. วิธีใส่ข้อมูลตามแนวตั้ง
27.7.5. วิธีใส่กลุ่มย่อยทางแถว
27.7.6. วิธีใส่กลุ่มย่อยทางคอลัมน์
27.7.7. วิธีเพิ่มกลุ่มแบบคอลัมน์ข้างเคียง
27.7.8. วิธีใส่ยอดรวมแนวนอน
27.7.9. วิธีใส่ยอดรวมแนวตั้ง
27.7.10. วิธีใส่ร้อยละของผลรวม
27.7.11. วิธีผสมเซล
27.7.12. วิธียืด-หดเมทริกซ์
27.7.13. วิธีทำ  DD แนวตั้งในเมทริกซ์
27.7.14. วิธีทำ DD แนวนอนในเมทริกซ์
27.8. แผนภูมิใน SSRS
27.8.1. การเตรียมคิวรีเพื่อสร้างชาร์ท
27.9. วิธีสร้างแผนภูมิแบบแท่ง
27.9.1. วิธีกำหนดค่าให้แผนภูมิแบบแท่ง
27.9.2. วิธีทำให้แสดงรายชื่อพนักงานครบ
27.9.3. วิธีเปลี่ยนตำแหน่งข้อความอธิบายสี (Legend)
27.9.4. วิธีเปลี่ยนข้อความส่วนหัว
27.9.5. วิธีจัดรูปแบบตัวเลขข้อความประจำแกน X
27.9.6. วิธีคัดกรองข้อมูลในแผนภูมิ
27.9.7. วิธีเรียงข้อมูลตามชื่อพนักงาน
27.10. แผนภูมิแบบวงกลม
27.10.1. วิธีสร้างแผนภูมิวงกลม
27.10.2. วิธีสั่งให้แสดงร้อยละในแผนภูมิวงกลม
27.10.3. วิธีจับรวมชิ้นที่มีขนาดเล็กไว้ด้วยกัน
27.11. วิธีสร้างหน้าปัด
27.12. วิธีใช้ดาต้าซอร์สร่วมกัน
27.13. วิธีเขียนโปรแกรมใน SSRS
27.14. วิธีสร้างและใช้งาน Custom Code
27.15. วิธีสร้างและใช้งาน Custom Assembly (CA)
27.15.1. วิธีนิยามคลาสใน C#
27.15.2. วิธีนิยามเมธอด CA
27.15.3. วิธีสร้างโปรแกรมทดสอบ CA
27.15.4. นำ CA ไปใส่ใน Deployment Folder
27.15.5. วิธีลงทะเบียน CA ในรายงาน
27.15.6. วิธีอ้างถึง CA ในรายงาน
27.16. สรุปท้ายบท
27.17. คำถามท้ายบท
27.18. แบบฝึกหัดท้ายบท


บทที่ 28: .Net Framework CLR กับงานฐานข้อมูล
28.1. ดอตเน็ตเฟรมเวิร์ค
28.2. เรื่องของแอสเซมบลี
28.3. เรื่องของเมนเนจโค้ด
28.4. เรื่องของ CLR
28.5. การทำงานของ CLR
28.6. การใช้ CLR ร่วมกับ SQL2008
28.7. วิธีเปิดใช้งาน CLR
28.8. เนมสเปสที่เกี่ยวข้อง
28.9. รูปแบบของ CLRR
28.10. สร้างและคอมไพล์ Hello world
28.11. ลงทะเบียน Hello world
28.12. สร้างสพร็อกซ์จาก CLR ใน SQL2008
28.13. ทดสอบการทำงานของ CLRR
28.14. การลบ CLRR
28.15. สร้าง CLR โดยไม่ใช้ IDE
28.16. ลงทะเบียนตัวแปรระบบ
28.17. การป้อนพิมพ์ซอร์สโค้ด
28.18. วิธีคอมไพล์ด้วยคอมมานไลน์
28.19. สรุปท้ายบท
28.20. คำถามท้ายบท
28.21. แบบฝึกหัดท้ายบท


บทที่ 29: คำสั่ง CLR
29.1. คำสั่งเกี่ยวกับการลงทะเบียน CLRR
29.2. คำสั่งเกี่ยวกับ UDA
29.3. คำสั่งเกี่ยวกับ UDT
29.4. คำสั่งเกี่ยวกับสพร็อกซ์
29.5. คำสั่งเกี่ยวกับ UDF
29.6. คำสั่งเกี่ยวกับทริกเกอร์
29.7. เมตาดาต้าของ CLRR
29.8. ไวยากรณ์ของคำสั่ง CREATE ASSEMBLY
29.9. ไวยากรณ์ของคำสั่ง ALTER ASSEMBLY
29.10. ไวยากรณ์ของคำสั่ง DROP ASSEMBLY
29.11. ไวยากรณ์ของคำสั่ง CREATE FUNCTION
29.12. ไวยากรณ์ของคำสั่ง ALTER FUNCTION
29.13. สรุปท้ายบท
29.14. คำถามท้ายบท
29.15. แบบฝึกหัดท้ายบท

ดูสารบัญส่วนที่เหลือ 1 2 3 4 5

 



สารบัญของหนังสือ: ตอน 3

 

 
Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


สารบัญของหนังสือ: ตอน 3

 

บทที่ 13: แคลคูลัสสัมพันธ์
13.1. นิยามแคลคูลัสสัมพันธ์
13.2. วิธีเขียนนิพจน์เบื้องต้น
13.3. เลือกแคลคูลัสหรือพีชคณิต?
13.4. กายวิภาคของแคลคูลัสสัมพันธ์
13.4.1. วากยสัมพันธ์
13.5. แคลคูลัสและคิวรีอย่างง่ายกับตารางเดียว
13.6. การดึงซับเซตของแถว
13.6.1. ตัวอย่างการดึงแถวด้วยพีชคณิตสัมพันธ์
13.6.2. ตัวอย่างการดึงแถวด้วยแคลคูลัสสัมพันธ์
13.6.3. ตัวอย่างการดึงแถวด้วย T-SQL
13.7. การดึงซับเซตของคอลัมน์
13.7.1. ตัวอย่างการดึงคอลัมน์ด้วยพีชคณิตสัมพันธ์
13.7.2. ตัวอย่างการดึงคอลัมน์ด้วยแคลคูลัสสัมพันธ์
13.7.3. ตัวอย่างการดึงคอลัมน์ด้วย SQL
13.8. ชื่อเล่น
13.9. วิธีเลือกดึงคอลัมน์และแถว
13.10. แคลคูลัสกับการจอย
13.10.1. ตัวอย่างการจอยแบบพีชคณิตสัมพันธ์
13.10.2. ตัวอย่างการจอยแบบแคลคูลัส
13.10.3. ต่อยอดการจอย
13.10.4. ต่อยอดการจอยแนวพีชคณิต
13.10.5. ลำดับการทำงานในพีชคณิต
13.10.6. ต่อยอดการจอยแนวแคลคูลัส
13.11. ความแตกต่างระหว่างพีชคณิตกับแคลคูลัส


บทที่ 14: พีชคณิตสัมพันธ์
14.1. เตรียมการก่อนเรียนพีชคณิตสัมพันธ์
14.2. พีชคณิตสัมพันธ์ เบื้องต้น
14.3. หลักการเปลี่ยนชื่อ
14.4. นิยามพีชคณิต
14.5. วากยสัมพันธ์
14.5.1. วากยสัมพันธ์ของตัวดำเนินการ
14.5.2. วากยสัมพันธ์ของตัวกระทำฉายแสดง
14.5.3. วากยสัมพันธ์ของ nonproject
14.5.4. วากยสัมพันธ์ของยูเนียน
14.5.5. วากยสัมพันธ์ของอินเตอร์เซค
14.5.6. วากยสัมพันธ์ของการลบ
14.5.7. วากยสัมพันธ์ของการคูณ
14.5.8. วากยสัมพันธ์ของ where
14.5.9. วากยสัมพันธ์ของจอย
14.5.10. วากยสัมพันธ์ของการหาร
14.5.11. วากยสัมพันธ์ของ per
14.5.12. วากยสัมพันธ์ของ with
14.5.13. วากยสัมพันธ์ของ name intro
14.6. นิยามตัวดำเนินการพีชคณิต
14.6.1. ยูเนียน
14.6.2. อินเตอร์เซค
14.6.3. ดิฟเฟอร์เรนซ์
14.6.4. การคูณ
14.6.5. ตัวจำกัด
14.6.6. โปรเจคชัน
14.6.7. การจอย (Join)
14.6.8. การหาร
14.6.9. ตัวอย่าง RAE เพื่อแสดงตัวดำเนินการพีชคณิต
14.7. พีชคณิตสัมพันธ์ภาคเซต
14.7.1. ฐานข้อมูลตัวอย่าง
14.7.2. ตัวดำเนินการทางเซต
14.7.3. โปรเจคชัน
14.7.4. ซีเลคชัน
14.7.5. ผลคูณคาร์ทีเซียน
14.7.6. การจอยสามัญ
14.7.7. การจอยแบบมีเงื่อนไข
14.7.8. แผนภูมิต้นไม้ RAE
14.7.9. การย้อน BNCF
14.7.10. การเปลี่ยนชื่อ
14.7.11. คิดได้หลายแบบ
14.7.12. นิพจน์เชิงเส้น
14.7.13. ตัวอย่างการเขียนนิพจน์เชิงเส้น
14.8. พีชคณิตสัมพันธ์ภาคแบ็ก
14.8.1. การทำงานกับแบ็ก
14.8.2. ความแตกต่างของเซตกับแบ็ก
14.8.3. กฎพีชคณิตของแบ็ก
14.8.4. การทำยูเนียน อินเตอร์เซคชัน และดิฟเฟอร์เรนซ์กับแบ็ก
14.8.5. โปรเจคชันกับแบ็ก
14.8.6. ซีเลคชันกับแบ็ก
14.8.7. ผลคูณของแบ็ก
14.8.8. การจอยแบ็ก
14.9. ตัวดำเนินการทางพีชคณิตสัมพันธ์เพิ่มเติม
14.9.1. ตัวดำเนินการตัดข้อมูลซ้ำ
14.9.2. ตัวดำเนินการหาผลรวม
14.9.3. ตัวดำเนินการจัดกลุ่ม
14.9.4. ตัวดำเนินการเรียงข้อมูล
14.9.5. โปรเจคชันลิสต์
14.9.6. Outer join
14.10. การใช้พีชคณิตสัมพันธ์เพื่อแสดงข้อจำกัด
14.11. บูรณภาพอ้างอิง
14.12. ประโยชน์ของพีชคณิตสัมพันธ์
14.13. สรุปท้ายบท
14.14. คำถามท้ายบท
14.15. แบบฝึกหัดท้ายบท


บทที่ 15: คิวรีหลายชั้นภาคทฤษฏี
15.1. คำสั่ง IN
15.1.1. วิธีใช้ IN ในคิวรีหลายชั้น
15.2. การใช้ NOT และ <>
15.3. เทคนิคการใช้คำสั่ง EXISTS
15.4. ตัวอย่างการทำงานของคิวรีซ้อนคิวรี
15.5. ไวยากรณ์ของคิวรีหลายชั้น
15.6. คิวรีหลายชั้นชนิดต่างๆ
15.6.1. คิวรีย่อยที่คืนค่าเดี่ยว
15.6.2. คิวรีย่อยที่ให้ค่าเป็นชุด
15.6.3. คิวรีย่อยเพื่อตรวจหาค่า
15.7. สรุปท้ายบท
15.8. คำถามท้ายบท
15.9. แบบฝึกหัดท้ายบท


บทที่ 16: คิวรีหลายชั้นภาคปฏิบัติ
16.1. ตัวอย่างคิวรีหลายชั้นหาสินค้าขายเร็ว
16.2. ตัวอย่างคิวรีหลายชั้นหาร้านลดราคา
16.3. ตัวอย่างคิวรีหลายชั้นหาแถวข้อมูลกำพร้า
16.4. ตัวอย่างการใช้ Correlated
16.5. เทคนิคการใช้ Correlated กับ SELECT
16.6. วิธีจัดการกับ NULL ใน CS
16.7. การใช้ Derived table
16.8. ตัวอย่าง EXISTS และการสั่งสินค้า
16.9. จอย VS คิวรีหลายชั้น
16.10. สรุปท้ายบท
16.11. คำถามท้ายบท
16.12. แบบฝึกหัดท้ายบท

บทที่ 17: กลวิธีคิวรีระดับสูง
17.1. เคอร์เซอร์
17.1.1. นิยามเคอร์เซอร์
17.1.2. ชนิดของเคอร์เซอร์
17.1.3. วิธีใช้เคอร์เซอร์
17.1.4. วิธีกำกับให้เคอร์เซอร์ท่องไปในแถวข้อมูล
17.1.5. เคอร์เซอร์กับ Stored Procedure
17.1.6. สรุปเรื่องเคอร์เซอร์
17.2. นิพจน์ตารางร่วม
17.2.1. วากยสัมพันธ์ของ CTE
17.2.2. ตัวอย่างคิวรีที่ใช้ CTE แบบง่ายสุด
17.2.3. ข้อควรปฏิบัติในการใช้งาน CTE
17.2.4. วิธีจอย CTE กับตาราง
17.2.5. วิธีใช้ CTE ร่วมกับเคอร์เซอร์
17.2.6. สรุปเรื่อง CTE
17.3. คิวรีที่เรียกตัวเอง
17.3.1. การทำงานแบบรีเคอร์ซีฟ
17.3.2. วากยสัมพันธ์ของ CTE แบบรีเคอร์ซีฟ
17.3.3. ลำดับการทำงานของรีเคอร์ซีฟ
17.3.4. รีเคอร์ซีฟในภาษา T-SQL
17.3.5. ตัวอย่างรีเคอร์ซีฟกับฐานข้อมูล NorthWind
17.3.6. รีเคอร์ซีฟแบบไฮราคี
17.4. สรุปท้ายบท
17.5. คำถามท้ายบท
17.6. แบบฝึกหัดท้ายบท


บทที่ 18: วิธีเพิ่มประสิทธิภาพคิวรี
18.1. ความสำคัญของการวิเคราะห์คิวรี
18.1.1. เครื่องมือช่วยวิเคราะห์คิวรี
18.1.2. แผนการทำงาน
18.2. การประมวลผลคิวรี
18.2.1. การแปลคิวรี
18.2.2. คิวรีออพติไมเซอร์
18.2.3. ฮีสโตแกรม
18.2.4. ค่าประมิน
18.2.5. การทำงานของ SE
18.2.6. ความแตกต่างระหว่าง EEP และ AP
18.3. การนำ EP กลับมาใช้งานใหม่
18.3.1. อายุของแคช
18.3.2. เครื่องมือจัดการแคช
18.3.3. คำสั่งเพื่อลบทุกอย่างออกจาก EPC
18.3.4. คิวรีตรวจสอบ EPC
18.4. การแสดงแผนงาน
18.4.1. วิธีกำหนดสิทธิ EP
18.4.2. วิธีแสดง EEP
18.4.3. วิธีแสดง AEP
18.4.4. ไอคอนและลูกศร
18.4.5. ค่าร้อยละของความสิ้นเปลือง
18.4.6. ทูลทิปของไอคอน SELECT
18.4.7. ทูลทิปของเส้นลูกศร
18.4.8. ทูลทิปเทเบิ้ลสแกน
18.4.9. ไอคอนในแผนการทำงาน
18.5. วิธีปรับปรุงประสิทธิภาพคิวรี
18.5.1. วิเคราะห์ EP
18.5.2. ตัดการจอยที่ไม่จำเป็น
18.5.3. สร้าง Covering Index
18.5.4. สร้างดรรชนีให้วิว
18.6. ดาต้าคอลเลคชัน
18.6.1. วิธีกำหนดค่าเริ่มต้นของ MDW
18.6.2. วิธีกำหนดค่าเริ่มต้นของ DC
18.6.3. วิธีตรวจสอบความพร้อมของ DC
18.6.4. รายงานประเภทต่างๆ ของ DC
18.6.5. วิธีออกรายงาน DUS
18.6.6. วิธีออกรายงาน QSH
18.6.7. สรุปเรื่องดาต้าคอลเลคชัน
18.7. คำแนะนำเพื่อคิวรีประสิทธิภาพสูง
18.8. สรุปท้ายบท
18.9. คำถามท้ายบท
18.10. แบบฝึกหัดท้ายบท


บทที่ 19: คิวบ์และวินโดว์
19.1. คิวบ์ (Cube)
19.1.1. คิวรีแสดงข้อมูลการขาย
19.1.2. วิธีใช้ GROUP BY
19.1.3. วิธีใช้ GROUP BY ROLLUP
19.1.4. วิธีใช้ GROUP BY ROLLUP แบบเรียงย้อน
19.1.5. วิธีใช้ CUBE
19.1.6. สรุปเรื่อง CUBE
19.2. สร้างเมทริกซ์ด้วย PIVOT
19.2.1. PIVOT กับยอดสั่งซื้อ
19.2.2. PIVOT เพื่อหาส่วนลด
19.2.3. วิธีใช้ UNPIVOT
19.2.4. สรุปเรื่อง PIVOT และ UNPIVOT
19.3. วินโดว์ฟังก์ชัน
19.3.1. ใช้วินโดว์ฟังก์ชันในสพร็อกซ์
19.3.2. วิธีใช้ฟังก์ชัน RANK
19.3.3. วิธีใช้ฟังก์ชัน RANK ร่วมกับ PARTITION BY
19.3.4. วิธีใช้ DENSE_RANK
19.3.5. สรุปเรื่องวินโดว์ฟังก์ชัน
19.4. สรุปท้ายบท
19.5. คำถามท้ายบท
19.6. แบบฝึกหัดท้ายบท


บทที่ 20: วิวและทริกเกอร์
20.1. วิว
20.1.1. การใช้วิวเพื่อความปลอดภัย
20.1.2. คิวรีเพื่อสร้างวิว
20.1.3. วากยสัมพันธ์ของวิว
20.1.4. วิธีรสร้างวิว
20.1.5. วิธีตรวจสอบการทำงานของวิว
20.1.6. สรุปเรื่องวิว
20.2. ทริกเกอร์
20.2.1. ชนิดของทริกเกอร์
20.2.2. วากยสัมพันธ์ของทริกเกอร์
20.2.3. วิธีสร้างทริกเกอร์
20.2.4. วิธีตรวจสอบการทำงานของทริกเกอร์
20.2.5. วิธีทำให้ทริกเกอร์ส่งอีเมล
20.2.6. สรุปเรื่องทริกเกอร์
20.3. สรุปท้ายบท
20.4. คำถามท้ายบท
20.5. แบบฝึกหัดท้ายบท

ดูสารบัญส่วนที่เหลือ 1 2 3 4 5