Elenca per:
Data
Categoria
06 febbraio
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
ภาพ 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
ภาพ 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
ภาพ 5-10 : FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT
ภาพ 5-11 เป็นคิวรีเพื่อสร้างตาราง Publication ซึ่งแสดงให้เห็นวิธีสร้างตารางที่มีกุญแจครบทั้งสามแบบ คือมีทั้ง PK, FK และ UK
ภาพ 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 คือคำวิจารณ์ของเพลงนั้น
ภาพ 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 ในตารางแม่
ภาพ 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
ภาพ 5-13 : ตัวอย่างข้อมูลสำหรับทำแบบฝึกหัดท้ายบท
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 เพิ่มเติม
ภาพ 5-1 : แผนภูมิอีอาร์หรือ ERD เป็นแผนภูมิง่ายๆ ไม่มีอะไรซับซ้อน เป็นเครื่องมือสำหรับนักออกแบบฐานข้อมูลเพื่อใช้แสดงภาพความสัมพันธ์ในเอนทิตี และระหว่างเอนทิตี
5.1.1. ตีนกา คำว่าตีนกาในหัวข้อนี้ไม่ใช่รอยเหี่ยวย่นข้างดวงตา แต่เป็นสัญลักษณ์ใน ERD ที่ใช้เพื่อแสดงความสัมพันธ์แบบหนึ่งต่อหลาย (one-to-many) หรือหลายต่อหลาย (many-to-many) โดยในด้านที่เป็น "หลาย" จะใช้สัญลักษณ์รูป "ตีนกา" ซึ่งเป็นรูปเส้นสามแฉก เหมือนอย่างรอยที่เกิดหากท่านจับตีนกามาจุ่มหมึก (ถ้ามันยอม) แล้วซับลงบนกระดาษ (ผู้เขียนไม่แน่ใจเหมือนกันว่าตีนของอีกาอันที่จริงแล้วมีนิ้วอยู่กี่นิ้ว แต่สัญลักษณ์ใน ERD จะเป็นเส้นสามเส้น)
ภาพ 5-2 : ตีนกาคือสัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์ใน ERD ในด้านที่เป็น "หลาย" ยกตัวอย่างเช่นในภาพนี้ แสดงความสัมพันธ์แบบ "หนึ่งต่อหลาย" ด้านที่เป็น "หนึ่ง" คือตาราง Author ด้านที่เป็น "หลาย" คือตาราง Publication นั่นคือนักเขียน (Author) หนึ่งคนอาจมีหนังสือ (Publication) ได้หลายเล่ม
5.1.2. ความสัมพันธ์แบบหนึ่งต่อหนึ่ง ความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นแบบที่ไม่ค่อยพบบ่อยนัก นอกจากจะจงใจออกแบบให้เป็นเช่นนั้น ท่านจะพบความสัมพันธ์แบบหนึ่งต่อหนึ่งได้ในการแปลงนอร์มัลฟอร์มระดับที่สี่เพื่อขจัดค่า NULL ออกจากตารางแม่ (เพื่อประหยัดเนื้อที่ในฮาร์ดดิสก์ ดูรายละเอียดในบทต่อไป) เนื่องจากปัจจุบันฮาร์ดดิสก์มีความจุสูงมากและมีราคาถูก และใน SQL2008 มีชนิดข้อมูลที่เปลี่ยนความกว้างได้ ความสัมพันธ์แบบหนึ่งต่อหนึ่งจึงไม่เป็นที่นิยมเพราะมีประสิทธิภาพต่ำ
สัญลักษณ์แทนความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นขีดเพียงขีดเดียว
ภาพ 5-3 : ความสัมพันธ์แบบหนึ่งต่อหนึ่งแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยอยู่ในทั้งสองตาราง สัญลักษณ์จึงใช้ขีดๆ เดียว
5.1.3. ความสัมพันธ์แบบหนึ่งต่อหลาย ความสัมพันธ์แบบหนึ่งต่อหลายเป็นรูปแบบที่พบได้บ่อยที่สุดในฐานข้อมูลสัมพันธ์ นั่นคือข้อมูลหนึ่งแถวในตาราง ก เชื่อมโยงกับข้อมูลหลายแถวในตาราง ข ยกตัวอย่างเหมือนที่เรียนไปแล้วในหัวข้อตีนกา ตาราง Author เก็บข้อมูลนักเขียนหนึ่งแถวคือนักเขียนหนึ่งคน นักเขียนคนเดียวอาจเขียนหนังสือไว้หลายเล่ม ดังนั้นในตาราง Publication ซึ่งเก็บข้อมูลหนังสือหนึ่งเล่มต่อหนึ่งแถวจึงอาจเชื่อมโยงกับตาราง Authorในแบบหนึ่งต่อหลาย
ภาพ 5-4 : ความสัมพันธ์แบบหนึ่งต่อหลายแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยในตาราง ก และหลายหน่วยในตาราง ข ตรงตาราง ก จึงใช้รูปขีดๆ เดียว ส่วนตาราง ข ซึ่งมีข้อมูลหลายหน่วยจะใช้สัญลักษณ์รูปตีนกา
5.1.4. ความสัมพันธ์แบบหลายต่อหลาย ความสัมพันธ์แบบหลายต่อหลายหมายถึงทุกๆ แถวในตาราง ก อาจเชื่อมโยงกับหลายๆ แถวในตาราง ข ตัวอย่างคลาสสิกของความสัมพันธ์แบบนี้คือ ตารางเก็บรายชื่อนักเรียนกับตารางเก็บรายชื่อวิชา ปรกตินักเรียนทุกคนจะลงทะเบียนเรียนมากกว่าหนึ่งวิชา (คือไม่มีนักเรียนคนใดลงทะเบียนเรียนเพียงวิชาเดียว) และในทางกลับกัน ทุกๆ วิชาจะมีนักเรียนเข้าเรียนมากกว่าหนึ่งคน (ไม่มีวิชาใดที่มีนักเรียนลงทะเบียนเรียนเพียงคนเดียว) ผลลัพธ์คือความสัมพันธ์แบบหลายต่อหลายระหว่างนักเรียนกับวิชาต่างๆ
การออกแบบฐานข้อมูลให้มีตารางซึ่งมีความสัมพันธ์แบบหลายต่อหลายไม่ได้ทำให้เกิดผลเสียอะไร แต่ถ้าโปรแกรมประยุกต์หรือผู้ใช้ต้องการค้นหานักเรียนแต่ละคนในแต่ละรายวิชา เราจะต้องสร้างตารางขึ้นอีกอันเพื่อการนี้ ยกตัวอย่างเช่นตารางแรกคือ A ตารางที่สองคือ B ตารางที่สามที่ต้องสร้างคือ AB อันเป็นตารางที่รวมข้อมูลจาก A และ B โปรดทราบว่าตาราง AB ไม่ใช่สิ่งจำเป็น เราจะสร้างก็ต่อเมื่อโปรแกรมประยุกต์หรือผู้ใช้ต้องการเท่านั้น
ภาพ 5-5 : ความสัมพันธ์แบบหลายต่อหลายสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตาราง ในภาพนี้ตาราง Publisher เก็บข้อมูลสำนักพิมพ์ ตาราง Publication เก็บข้อมูลหนังสือ สองตารางนี้มีความสัมพันธ์แบบหลายต่อหลาย จึงสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตารางคือ Editio n
5.1.5. ความสัมพันธ์แบบศูนย์ หนึ่ง และหลายๆ ความสัมพันธ์ระหว่างตารางต่างๆ อาจเป็นแบบศูนย์ หนึ่ง และหลายๆ ศูนย์หมายถึงไม่มีบรรทัดข้อมูลในตารางเป้าหมายเลย ศูนย์และหนึ่งหมายถึงอาจมีหรือไม่มีข้อมูลก็ได้ หนึ่งโดยไม่มีศูนย์ (คือมีแค่หนึ่งเท่านั้น) หมายถึงจำเป็นต้องมีข้อมูลหนึ่งบรรทัด
ยกตัวอย่างเช่นความสัมพันธ์ระหว่างตาราง Rank และตาราง Edition โดยตาราง Rank เก็บข้อมูลการจัดอันดับของหนังสือ (ว่าได้รับความนิยมเพียงใด) และตาราง Edition เก็บข้อมูลการจัดพิมพ์ในแต่ละครั้ง เนื่องจากในตาราง Edition จะมีข้อมูลหนังสือเรื่องหนึ่งอยู่หนึ่งแถวมันจึงมีความสัมพันธ์แบบ "หนึ่ง" ส่วนตาราง Rank อาจไม่มีข้อมูลหนังสือเล่มนั้นอยู่เลย หรืออาจข้อมูลหนังสือเล่มนั้นอยู่หนึ่งแถว มันจึงมีความสัมพันธ์แบบ "ศูนย์และหนึ่ง"
ภาพ 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
ภาพ 5-7 : แผนภูมิ ER นี้แสดงความสัมพันธ์ที่จำแนกได้และไม่ได้
05 febbraio
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
ภาพ 4-3: หน้าจอให้ป้อนพิมพ์ข้อมูลสมาชิกของแอพลิเกชันฐานข้อมูลเดิมที่ใช้งานอยู่
จงออกแบบตารางเพื่อเก็บข้อมูลจากหน้าจอนี้ โดยแบ่งออกเป็นสองตารางคือ ตาราง Member เก็บข้อมูลสมาชิก และตาราง Type เก็บชนิดสมาชิกและจำนวนเงินค่าสมาชิก สองตารางนี้เชื่อมโยงกันด้วยคีย์ที่เหมาะสม
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) ไม่ดี
ภาพ 4-1 : เว็บไซต์อย่าง ebay.com มีผู้เข้าทำธุรกรรมจากทั่วโลกวันละหลายๆ ล้านรายการ
4.2. ฐานข้อมูลที่มีประสิทธิภาพ การออกแบบฐานข้อมูลให้บรรลุเป้าหมายทั้งหมดตามหัวข้อที่ผ่านมาอาจเป็นงานที่น่าปวดหัว แต่ก็คุ้มค่าเพราะหากทำได้จะเกิดข้อดีต่างๆ หลายอย่างดังนี้ • ทำงานได้ดี: ฐานข้อมูลทำงานตอบสนองความต้องการได้ทุกข้อ กินทรัพยากรน้อย ผู้ใช้ทุกคนสามารถใช้งานได้อย่างไม่ติดขัด • คิวรีง่าย: เขียนคิวรีแล้วไม่เกิดปัญหาต่างๆ เช่น บูรณภาพของข้อมูล ความสัมพันธ์ระหว่างตารางผิด ตารางออกแบบไม่ได้ ฯลฯ • สร้างแอพลิเกชันง่าย: การออกแบบฐานข้อมูลให้สร้างแอพลิเกชันได้ง่ายเป็นสิ่งดี โดยเฉพาะอย่างยิ่งในงาน OLTP เพราะผู้ใช้ต้องใช้งานฐานข้อมูลทางอ้อมผ่านแอพลิเกชันโปรแกรม แต่ฐานข้อมูลในงานคลังข้อมูลอาจไม่จำเป็น เพราะผู้ใช้มักคิวรีฐานข้อมูลเองโดยตรงไม่ได้ทำงานผ่านแอพลิเกชัน• มีความยืดหยุ่น: การออกแบบฐานข้อมูลให้มีความยืดหยุ่นจะช่วยบรรเทาผลกระทบหากมีการเปลี่ยนแปลงโครงสร้างฐานข้อมูล
4.3. หลักการออกแบบฐานข้อมูล
หลักการออกแบบฐานข้อมูลมีขั้นตอนต่างๆ ดังต่อไปนี้
• วิเคราะห์ความต้องการ: เป็นขั้นตอนรวบรวมข้อมูลว่าฐานข้อมูลต้องมีคุณสมบัติอย่างไรบ้าง ผู้ใช้งานต้องการเก็บข้อมูลอะไร และคาดหวังว่าจะได้ผลลัพธ์อย่างไรบ้าง สิ่งที่ต้องทำคือจดบันทึกความต้องการต่างๆ ไว้ ขณะที่พูดคุยกับผู้ใช้ในระดับต่างๆ• การออกแบบทางแนวคิด: เป็นขั้นตอนออกแบบในกระดาษหรือใช้เครื่องมือที่เป็นซอฟต์แวร์ช่วยออกแบบเพื่อร่างแผนภูมิต่างๆ เช่นแผนภูมิ ERD เพื่อออกแบบโครงสร้างของตาราง คอลัมน์ และความเชื่อมโยงระหว่างตาราง การทำนอร์มัลไลซ์ก็ควรจะอยู่ในขั้นตอนนี้ด้วย
ภาพ 4-2 : ตัวอย่างแผนภูมิ ERD ของฐานข้อมูลร้านขายหนังสือในอินเตอร์เน็ตแห่งหนึ่ง
• การออกแบบทางตรรกะ: เขียนคิวรี DDL (Data definition Language) เพื่อสร้างตารางต่างๆ ในฐานข้อมูล เครื่องมือสร้างแผนภูมิ ERD บางตัวอาจให้ DDL ได้โดยอัตโนมัติแต่เป็นเพียงคิวรีทั่วๆ ไป หากจะนำมาใช้ควรตรวจสอบให้ดีก่อน• การออกแบบทางกายภาพ: ปรับแก้คิวรีเพื่อสนับสนุนลักษณะทางกายภาพบางอย่าง เช่นพิจารณาว่าจำเป็นจะต้องต้องการเก็บออพเจ็กต์ที่เป็นไบนารีขนาดใหญ่ไว้เป็นไฟล์แยกต่างหากจากตารางมาตรฐานหรือไม่• การปรับแต่ง: ประกอบด้วยกระบวนการหลายอย่าง เช่นเพิ่มหรือลดระดับความเข้มข้นของการนอร์มัลไลซ์ การทำดรรชนี การจัดทำทริกเกอร์ การเพิ่มระบบรักษาความปลอดภัย หรืออะไรก็ตามที่ยังไม่ได้ทำในขึ้นตอนก่อนหน้านี้
ขั้นตอนเหล่านี้เป็นเพียงแนวทางโดยทั่วไป ท่านอาจสลับขั้นตอน ทำซ้ำ หรือนำขั้นตอนบางขั้นตอนหรือทั้งหมดมารวมกัน แล้วแบ่งแยกใหม่อย่างไรก็ได้ตามใจชอบ แต่สิ่งสำคัญที่ผู้เขียนขอแนะนำคือให้ออกแบบในกระดาษ (หรือใช้ซอฟต์แวร์) เขียนแผนภูมิ ERD ก่อนเขียนคิวรี DDL เสมอ เพื่อให้เห็นโครงสร้างในภาพรวมก่อนลงมือสร้างฐานข้อมูลจริงๆ
Home Page | รายการบทความ | ลิงค์ที่เกี่ยวข้อง | laploy.com | เกี่ยวกับผู้เขียน
การประยุกต์ใช้งานฐานข้อมูล : ตอน 2
3.5. การประมวลผลแบบขนาน ปัจจุบันนี้ถ้าเราไปพันทิพย์เพื่อซื้อคอมพิวเตอร์ธรรมดาๆ เราจะได้คอมพิวเตอร์ที่มีตัวประมวลผลแบบมีแกนในสองแกน (dual-core) เครื่องเล่นเกมอย่างเพลย์สเตชันสาม (PlayStaton 3) มีตัวประมวลผลขนาด 64 บิตแบบแปดแกน ในไม่ช้าตัวประมวลผลที่มีแกนหลักจำนวน 16 หรือ 32 แกนก็จะกลายเป็นเรื่องธรรมดา การมีตัวประมวลผลหลายแกนทำให้เราสามารถใช้งานโปรแกรมประยุกต์ที่ทำงานแบบคู่ขนาน (concurrent) ได้
หลักการทำงานของฐานข้อมูลสัมพันธ์เอื้ออำนวยต่อการทำงานงานแบบคู่ขนาน เพราะแบบจำลองข้อมูลสัมพันธ์ตั้งอยู่บนพื้นฐานของเซต กฎของเซต (จำกัด) กล่าวว่า "ผลรวมของการทำยูเนียนกับส่วนต่างๆ ทั้งหมดย่อมเท่ากับเซตเดิม" แสดงเป็นสัญลักษณ์ได้ดังนี้
นิยามการแบ่งส่วนของเซต A
ยูเนียนส่วนต่างๆ ทั้งหมดของเซต A
นั่นหมายความว่าการกระทำต่างๆ กับแถวของตารางเราสามารถทำได้อย่างคู่ขนาน คือสามารถทำได้กับทุกแถวไปพร้อมๆ กันโดยไม่จำเป็นต้องไล่ตั้งแต่แถวแรกไปถึงแถวสุดท้าย แสดงเป็นสัญลักษณ์ได้ดังนี้
ไม่มีอะไรจะทำงานได้เร็วไปกว่าการทำงานแบบคู่ขนาน ในอนาคตอันใกล้นี้เมื่อระบบปฏิบัติการและโปรแกรม RDBMS ยุคใหม่สนับสนุนการทำงานแบบคู่ขนาน การคิวรีข้อมูลปริมาณมากๆ จะทำได้รวดเร็วขึ้นกว่าปัจจุบันนี้หลายเท่าตัว
ภาพ 3-4: เครื่องเล่นเกมเพลย์สเตชันสามเป็นคอมพิวเตอร์ที่ใช้ตัวประมวลผลแบบคู่ขนาน
3.6. แรมราคาถูกลง หน่วยความจำหลักหรือแรม (Random Access Memory ย่อ RAM) นับวันยิ่งมีความจุมากขึ้นและมีราคาต่ำลง คอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมมีแรมเพียง 2KB (สองพันไบต์) เท่านั้น แต่ในปัจจุบันเป็นเรื่องปรกติที่เราจะมีคอมพิวเตอร์ที่มีแรมจำนวน 2 หรือ 4GB (GB = พันล้านไบต์) นั่นแปลว่าคอมพิวเตอร์ที่ผู้เขียนใช้ในปัจจุบันนี้มีแรมมากกว่าคอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมถึงหนึ่งล้านเท่า และมากกว่าเครื่องเมนเฟรมในอดีตหลายแสนเท่า
ภาพ 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) หรือฮาร์ดดิสก์ที่ทำจากสารกึ่งตัวนำ ไม่มีแผ่นจานแม่เหล็ก ไม่มีชิ้นส่วนที่เคลื่อนไหว จึงทำงานเงียบ กินกำลังไฟฟ้าน้อย และที่สำคัญคือทำงานเร็วกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก มีทั้งแบบที่ทำจากแรม (ปิดไฟแล้วข้อมูลหาย) และแบบที่ทำจากแฟลช (ปิดไฟแล้วข้อมูลไม่หาย) แต่มีข้อเสียคือเทียบราคาต่อความจุยังแพงกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก แต่เชื่อว่าในอีกไม่ช้าจะมีราคาใกล้เคียงกันและจะมาแทนที่ฮาร์ดดิสก์ไปในที่สุด
ภาพ 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 ทำให้การจัดตั้งเครื่องแม่ข่ายให้บริการฐานข้อมูลทำได้งายขึ้น และมีราคาลดลง
ภาพ 3-7: โฆษณาขายฮาร์ดดิสก์ของบริษัท นอร์ทสตาร์ คอมพิวเตอร์ ในปี 1980 ความจุ 18MB รุ่นฮอร์ไรซอนราคาตัวละสามแสนบาท
3.9. เมื่อข้อมูลเปลี่ยนไป ความก้าวหน้าทางเทคโนโลยีที่กล่าวถึงในหัวข้อต่างๆ ข้างบนทำให้ชวนคิดไปว่าการเก็บข้อมูลไม่ใช่ปัญหาอีกต่อไป นั่นคือเราไม่จำเป็นต้องออกแบบฐานข้อมูลโดยทำการลดทอนอย่างละเอียดรอบคอบเหมือนยุคก่อน เนื่องจากการเก็บข้อมูลซ้ำซ้อนหรือปล่อยให้คอลัมน์ส่วนใหญ่ว่างหรือเป็น NULL ไม่นับว่าเป็นเรื่องสำคัญ เพราะอุปกรณ์เก็บข้อมูลมีราคาถูกและมีความจุเหลือเฟือ และยังไม่จำเป็นต้องระวังเรื่องการใช้ทรัพยากรอื่นๆ เช่นกำลังการประมวลผลของซีพียู เพราะคอมพิวเตอร์สมัยใหม่มีตัวประมวลผลที่มีประสิทธิภาพสูงหลายตัว หรือมีซีพียูตัวเดียวแต่มีแกนในหลายแกน
ความคิดในย่อหน้าบนไม่เป็นความจริงเสมอไป เพราะขณะที่อุปกรณ์เก็บข้อมูลมีความจุเพิ่มขึ้น ขนาดของข้อมูลที่เราต้องการเก็บก็เพิ่มขึ้นเช่นกัน การใช้คอมพิวเตอร์ก่อนหน้านี้เน้นเก็บข้อความตัวอักษรและรูปภาพซึ่งกินเนื้อที่ไม่มาก แต่ปัจจุบันนี้เราเก็บข้อมูลเสียง (ไฟล์ MP3) หรือวิดีโอ (ไฟล์ .AVI, MP4, WMA และอื่นๆ) และมีการประยุกต์ใช้งานใหม่ๆ ที่เพิ่มขนาดของข้อมูลอีกมาก เช่นโปรแกรมจดจำใบหน้าเพื่อการอ่านความรู้สึกและอารมณ์จากสีหน้า โปรแกรมจดจำลายนิ้วมือ โปรแกรมจดจำเส้นลายในดวงตาเพื่อแยกแยะความแตกต่างของบุคคล ข้อมูลแผนที่ๆ ทำงานร่วมกับดาวเทียม GPRS ข้อมูลเทียบ DNA ฯลฯ การประยุกต์ใช้งานใหม่เหล่านี้ล้วนต้องใช้พื้นที่เก็บข้อมูลขนาดใหญ่
ภาพ 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 ของทั้งสองเซต
Home Page | รายการบทความ | ลิงค์ที่เกี่ยวข้อง | laploy.com | เกี่ยวกับผู้เขียน
การประยุกต์ใช้งานฐานข้อมูล : ตอน 1
ฐานข้อมูลต้องทำงานร่วมกับแอพลิเกชันได้ดี แอพลิเกชันคือโปรแกรมประยุกต์ใช้งานซึ่งมีหน้าที่แสดงส่วนปฏิสัมพันธ์กับผู้ใช้เพื่อให้ใช้งานได้ง่าย ผู้ใช้ไม่จำเป็นต้องรับรู้ถึงโครงสร้างหรือแม้แต่ความมีอยู่ของฐานข้อมูล ประเด็นคือต้องทำให้ผู้ไม่รู้เรื่องคอมพิวเตอร์เลย เช่นพนักงานธนาคาร พนักงานขาย พนักงานขายประกัน พนักงานระดับบริหาร และเจ้าหน้าที่ระดับต่างๆ ที่ไม่ใช่นักเทคนิคสามารถใช้งานฐานข้อมูลได้ง่ายที่สุด
หัวข้อที่ผ่านมาท่านได้เรียนลักษณะของแบบจำลองฐานข้อมูลชนิดต่างๆ ไปแล้ว ในบทนี้ท่านจะได้เรียนข้อควรคำนึงต่างๆ ในการประยุกต์ใช้งานฐานข้อมูล ซึ่งมีหัวข้อดังนี้
• ฐานข้อมูลในงานธุรกรรม (OLTP) • ฐานข้อมูลในงานช่วยตัดสินใจ (OLAP) • ฐานข้อมูลแบบผสมผสาน • มุมมองใหม่ต่อฐานข้อมูล • การประมวลผลแบบขนาน • แรมราคาถูกลง • โซลิดสเตทดิสก์ • ฮาร์ดดิสก์สมัยใหม่ • เมื่อข้อมูลเปลี่ยนไป • แต่ความคิดยังไม่เปลี่ยน
3.1. ฐานข้อมูลในงานธุรกรรม (OLTP) ฐานข้อมูลในงานธุรกรรมเป็นงานที่เข้าถึงข้อมูลหรือเปลี่ยนแปลงข้อมูลในปริมาณน้อย (คือครั้งละหนึ่งหรือสองแถว) งานส่วนมากคือการเรียกข้อมูลมาดู เพิ่มข้อมูล เปลี่ยนแปลงข้อมูล ลบข้อมูล โดยเป็นการทำครั้งละหนึ่งแถว เช่นข้อมูลของลูกค้าหนึ่งราย หรือสินค้าหนึ่งรายการ ยกตัวอย่างการใช้งานฐานข้อมูลในงานธุรกรรมมีดังนี้
• ฐานข้อมูลแบบไคลแอนเซอฟเวอร์: การใช้งานในสภาพแวดล้อมแบบไคลแอนเซอฟเวอร์เป็นแบบที่นิยมกันมากก่อนยุคอินเตอร์เน็ตเฟื่องฟู มักเป็นการใช้งานภายในองค์กร จำนวนผู้ใช้ขึ้นอยู่กับขนาดขององค์กร อาจมีผู้ใช้เพียงคนเดียวถึงหลายพันคน การทำธุรกรรมจะเกี่ยวข้องกับข้อมูลครั้งและเพียงแถวเดียว หรือเรคคอร์ดเดียว หรือไม่ก็ดึงข้อมูลเป็นชุดเพื่อการทำรายงาน ฐานข้อมูลแบบไคลแอนเซอฟเวอร์ไม่จำเป็นต้องรองรับปริมาณการไหลของข้อมูลสูงมากนัก เพราะจำนวนผู้ใช้จะถูกจำกัดไว้ในปริมาณที่เหมาะสม ยกตัวอย่างเช่นหน่วยงานที่มีผู้ใช้หนึ่งพันคนโอกาสที่ผู้ใช้จะดึงข้อมูลจากฐานข้อมูลในขณะเดียวกันมีน้อยมาก
• ฐานข้อมูลแบบ OLTP: เป็นฐานข้อมูลที่ใช้ร่วมกับอินเตอร์เน็ตแอพลิเกชัน ปริมาณผู้ใช้ที่เรียกใช้ฐานข้อมูลพร้อมๆ กันจะสูงกว่าฐานข้อมูลแบบไคลแอนเซอฟเวอร์มาก ฐานข้อมูลแบบ OLTP จึงจำเป็นต้องรองรับปริมาณการไหลของข้อมูลสูงกว่า งานลักษณะนี้จะมีผู้ใช้นับล้านคนใช้งานวันละยี่สิบสี่ชั่วโมงปีละสามร้อยหกสิบห้าวัน ทำให้อาจมีผู้ใช้นับพันดึงข้อมูลจากฐานข้อมูลพร้อมๆ กันได้ตลอดเวลา
ภาพ 3-1 : สถาปัตยกรรมแบบไคลแอนเซอฟเวอร์
3.2. ฐานข้อมูลเพื่อช่วยตัดสินใจ (OLAP) ฐานข้อมูลในงานช่วยตัดสินใจมีหน้าที่เหมือนชื่อของมัน คือช่วยให้ผู้จัดการหรือเจ้าหน้าที่ในระดับบริหารมีข้อมูลสำหรับใช้ตัดสินใจดำเนินการในเรื่องต่างๆ ยกตัวอย่างการใช้งานฐานข้อมูลในงานช่วยตัดสินใจมีดังนี้
• ฐานข้อมูลแบบโกดังข้อมูล: โกดังข้อมูล (data warehouse) มีแบบจำลองเหมือนกับฐานข้อมูลในงานธุรกรรม จะแปลกกันที่งานโกดังข้อมูลมักเก็บข้อมูลประวัติย้อนหลังไปหลายปีเพื่อใช้ในการทำนายแนวโน้ม ขณะที่งานธุรกรรมจะเก็บเฉพาะข้อมูลปัจจุบัน ดังนั้นฐานข้อมูลแบบโกดังข้อมูลจะมีขนาดใหญ่กว่าฐานข้อมูลในงานธุรกรรมหลายเท่า (บางครั้งใหญ่กว่าเป็นล้านเท่า) ข้อมูลที่อยู่ในโกดังข้อมูลมักเป็นข้อมูลที่รวบรวมมาจากฐานข้อมูลแบบ OLTP (คือย้ายข้อมูลมาจาก OLTP แล้วจึงลบข้อมูลใน OLTP ไปเสีย) โกดังข้อมูลต้องการแบบจำลองข้อมูลที่ถูกออกแบบมาเพื่อการนี้โดยเฉพาะ • ฐานข้อมูลแบบคลังข้อมูล: คลังข้อมูล (data mart) คล้ายโกดังข้อมูลแต่มีขนาดเล็กกว่ามาก มีหน้าที่ใช้พักข้อมูลชั่วคราวเพื่อการประมวลผลก่อนนำไปสร้างโกดังข้อมูล คลังข้อมูลจะมีแบบจำลองเหมือนกันกับโกดังข้อมูล • ฐานข้อมูลรายงาน: ฐานข้อมูลรายงานมีลักษณะเช่นเดียวกับโกดังข้อมูลแต่มีขนาดเล็กกว่า ฐานข้อมูลรายงานจะมีเฉพาะข้อมูลที่จำเป็นต้องใช้ในการทำรายงาน ขณะที่โกดังข้อมูลมีข้อมูลเก่าย้อนหลังไปนาน (archived data) สาเหตุที่ต้องมีฐานข้อมูลรายงานไม่ทำรายงานจากโกดังข้อมูลโดยตรงเพราะโกดังข้อมูลมีขนาดใหญ่เทอะทะไม่ยืดหยุ่น จึงใช้ทำรายงานได้ไม่สะดวก
ภาพ : 3-2 : ตัวอย่างระบบงานโกดังข้อมูลหรือดาต้าแวร์เฮาส์ใช้งานผ่านเว็บ
3.3. ฐานข้อมูลแบบผสมผสาน ฐานข้อมูลแบบผสมผสาน (Hybrid Database ย่อ HD) คือการผสมความต้องการระหว่างฐานข้อมูลในงานธุรกรรมและฐานข้อมูลในงานช่วยตัดสินใจเอาไว้ด้วยกัน จุดมุ่งหมายของ HD คือต้องการลดค่าใช้จ่าย เพราะ HD จะมีเพียงฐานข้อมูลเดียว ใช้เซอฟเวอร์เพียงตัวเดียว จึงประหยัดค่าฮาร์ดแวร์ ซอฟต์แวร์ และรายจ่ายอื่นๆ ในการบำรุงรักษา HD จึงเหมาะสำหรับงานที่มีปริมาณการไหลของข้อมูลต่ำและมีจำนวนผู้ใช้ไม่มากนัก
3.4. มุมมองใหม่ต่อฐานข้อมูล ความก้าวหน้าทางฮาร์ดแวร์ที่เกิดขึ้นอยู่ตลอดเวลาทำให้คอมพิวเตอร์ที่เราใช้ทำฐานข้อมูลในปัจจุบันนี้แตกต่างจากสมัยที่ผู้เขียนสร้างฐานข้อมูลด้วยโปรแกรมดีเบสทู (dBase II) กฎของมัวร์บอกเราว่าตัวประมวลผลจะมีความเร็วเพิ่มเป็นสองเท่าในทุกๆ สิบแปดเดือน แต่ความก้าวหน้าทางฮาร์ดแวร์ไม่ได้จำกัดอยู่เฉพาะกับตัวประมวลผลเท่านั้น อุปกรณ์รอบข้างต่างๆ เช่นหน่วยบักทึกข้อมูลก็มีความจุมากกว่าเดิม และมีราคาถูกลงอย่างรวดเร็ว
เมื่อไม่กี่ปีมานี้เคยมีปัญหาใหญ่เรื่องแถบความกว้างในการไหลของข้อมูล (data bandwidth) ที่ใช้เพื่อรับ-ส่งข้อมูลระหว่างหน่วยความจำแรมกับฮาร์ดดิสก์มีขนาดเล็กและมีความเร็วต่ำ เปรียบเหมือนมีบ่อน้ำขนาดยักษ์แต่ท่อส่งน้ำมีขนาดเล็กจิ๋ว แต่ตอนนี้ปัญหาหมดไปแล้วเพราะฮาร์ดดิสก์รุ่นใหม่มีความเร็วสูงมาก
ภาพ 3-3 : โปรแกรมดีเบสทูเป็นโปรแกรมจัดการฐานข้อมูลเคยได้รับความนิยมอย่างสูง แต่มันไม่ใช่ RDBMS และไม่สนับสนุนภาษา SQL
04 febbraio
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#
ภาพ 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
Home Page | รายการบทความ | ลิงค์ที่เกี่ยวข้อง | laploy.com | เกี่ยวกับผู้เขียน
แบบจำลองฐานข้อมูล: ตอน 3
2.7. วิวัฒน์ของแบบจำลองฐานข้อมูล การพัฒนาแบบจำลองข้อมูลเริ่มขึ้นตั้งแต่เริ่มมีการสร้างคอมพิวเตอร์ในปี ค.ศ. 1940 ช่วงแรกเป็นแบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบเครือข่าย (network database model) แบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบลำดับชั้น (hierarchical database model) ซึ่งทั้งสองแบบเป็นแบบจำลองที่ไม่สู้มีประสิทธิภาพนัก ต่อมาในช่วงปี 1960 จึงมีการคิดแบบจำลองข้อมูลสัมพันธ์ (relational database model) ที่ใช้งานได้จริงจัง และถือว่าเป็นแบบที่มีประสิทธิภาพสูงสุด และนิยมใช้กันมาจนถึงทุกวันนี้
ภาพ 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 เพราะการมีคอมมาคั่นอาจถือว่าเป็นโครงสร้างอย่างหนึ่งได้เหมือนกัน
ภาพ 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) เพราะตารางแม่หนึ่งตารางอาจมีตารางลูกได้หลายตาราง และในขณะเดียวกันตารางลูกใดๆ อาจมีตารางลูกลงไปอีกชั้นหนึ่ง ทำให้มันมีฐานะเป็นตารางแม่ด้วยเช่นกัน ในทำนองเดียวกัน ตารางแม่ใดๆ อาจมีตารางแม่อยู่เหนือตัวมันอีก ทำให้มันมีฐานะเป็นตารางลูกด้วยเช่นกัน
ภาพ 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)
ภาพ 2-9 : แผนภูมิแสดงแบบจำลองฐานข้อมูลแบบเครือข่าย จะเห็นว่าตารางผู้จัดการเป็นทั้งส่วนหนึ่งของตารางแผนกและตารางบริษัท หรือพูดอีกอย่างหนึ่งคือไม่เฉพาะตารางแผนกเท่านั้นที่มีตารางผู้จัดการ แต่ตารางบริษัทเองก็มีผู้จัดการด้วยเช่นกัน และตารางพนักงานสามารถแยกออกเป็นประเภทต่างๆ ของพนักงานได้
2.7.4. แบบจำลองฐานข้อมูลสัมพันธ์ แบบจำลองฐานข้อมูลสัมพันธ์ (Relational Database Model ย่อ RDM) เป็นแบบจำลองข้อมูลที่ถูกพัฒนาด้วยแนวคิดใหม่ซึ่งแตกต่างจากแบบจำลองฐานข้อมูล HDM และ NDM ไปมาก RDM เริ่มปรากฏในปี 1970 และถูกใช้เรื่อยมาจนถึงทุกวันนี้ ข้อดีของ RDM คือมีบูรณภาพของข้อมูลดีมาก ข้อเสียคือโปรแกรม DBMS ซับซ้อนกว่าแบบจำลองสามแบบแรก
เมื่อพูดว่าความสัมพันธ์ (relational) คนทั่วไปมักนึกถึงการเชื่อมโยงระหว่างตารางต่างๆ ด้วยคีย์ต่างๆ (เช่นไพรมารีคีย์และฟอร์เรนคีย์) แต่อันที่จริงแล้วคำว่า "ความสัมพันธ์" ในวิชา RDM หมายถึงความเชื่อมโยงของแอตทริบิวต์และทูเพิลภายในตาราง ไม่ใช่การเชื่อมโยงระหว่างตาราง
RDM มีประสิทธิภาพสูงกว่า HDM และ NDM เช่นหากต้องการค้นหาข้อมูลของพนักงานหนึ่งคน เราไม่ต้องไล่จากตารางบนสุด (ตารางบริษัท) แล้วท่องไปตามตารางต่างๆ จนกระทั่งถึงตารางพนักงาน แต่เราสามารถเข้าถึงตารางพนักงานได้โดยตรง ข้อดีอีกอย่างหนึ่งของ RDM คือเราสามารถเชื่อมโยงตารางต่างๆ เข้าด้วยกันได้โดยไม่จำเป็นต้องคำนึงถึงลำดับชั้น คือตารางหนึ่งๆ จะเชื่อมโยงกับตารางอื่นๆ อย่างไรก็ได้โดยอิสระ
ภาพ 2-10 : สมมุตว่าเรามีตารางอยู่สองตาราง ตารางแรก Project (กรอบบน) ทำหน้าที่เก็บข้อมูลโครงการต่างๆ อีกตารางหนึ่งคือ Task (กรอบล่าง) ทำหน้าที่เก็บรายละเอียดงานต่างๆ ในหนึ่งโครงงาน สองตารางนี้เชื่อมกันได้ด้วยคอลัมน์ Project_ID ซึ่งเป็นรหัสงาน ตัวเลขนี้ทำหน้าที่เป็นไพรมารีคีย์ในตาราง Project ซึ่งจะไม่มีค่าซ้ำกัน แต่ในตาราง Task คอลัมน์ Project_ID ทำหน้าที่เป็นฟอร์เรนคีย์ (คือเป็นคีย์สำหรับอ้างถึงข้อมูลในตารางอื่น) อาจมีค่าซ้ำกันได้ ยกตัวอย่างเช่นในตาราง Project บรรทัดแรก Project_ID เท่ากับ 1 คือโครงการ Software sales data mart มีงานย่อยสามงาน คือบรรทัดที่หนึ่งถึงสามในตาราง Task จะเห็นว่าคอลัมน์ Project_ID ในตาราง Task มีเลข 1 ซ้ำกันอยู่สามแถว
ภาพ 2-11 : แผนภูมิแสดงแบบจำลองฐานข้อมูลสัมพันธ์ตามตัวอย่างตารางในภาพ 2-10
2.7.5. แบบจำลองฐานข้อมูลแบบวัตถุ แบบจำลองฐานข้อมูลแบบวัตถุ (Object Database Model ย่อ ODM) เป็นแนวคิดใหม่ที่ปรากฏขึ้นในปี 1980 และยังได้รับการพัฒนาต่อเนื่องมาจนถึงทุกวันนี้ แบบจำลอง ODM อาศัยแนวคิดว่าข้อมูลเป็นออพเจ็กต์เหมือนออพเจ็กต์ในวิชา OOP (การเขียนโปรแกรมวัตถุวิธี) แบบจำลอง ODM มีข้อดีคือการทำงานได้มีประสิทธิภาพสูงกว่า RDM อย่างชัดเจนในบางสถานการณ์ แต่มีข้อเสียคือเรียนรู้ได้ยากและผนวกกับภาษา OOP มาตรฐานอย่าง C# ไม่ได้
แบบจำลอง ODM มีโครงสร้างสามมิติ (ขณะที่ RDM เป็นโครงสร้างสองมิติ คือประกอบด้วยแอตทริบิวต์และทูเพิล) ทำให้การดึงข้อมูลจากตำแหน่งใดๆ เป็นไปได้รวดเร็วมาก แต่มีข้อเสียคือหากดึงข้อมูลปริมาณมากจะทำได้ช้ากว่า RDM แบบจำลอง ODM มีคุณสมบัติบางอย่างที่เหนือกว่า RDM อาทิ ไม่ต้องมีชนิดข้อมูลและไม่ต้องมีตารางแสดงความสัมพันธ์ ข้อดีอีกอย่างหนึ่งของ ODM คือเหมาะใช้พัฒนาแอพลิเกชันที่ซับซ้อนมากๆ เพราะวัตถุหรือออพเจ็กต์สามารถสืบคุณสมบัติกันได้ ทำให้สามารถพัฒนาออพเจ็กต์ที่ซับซ้อนอย่างยิ่งได้จากออพเจ็กต์ที่ไม่ซับซ้อนหลายๆ ตัวหรือหลายๆ ระดับชั้น
ภาพ 2-12 : นี่คือฐานข้อมูลเดียวกันกับในหัวข้อแบบจำลองฐานข้อมูลสัมพันธ์ แต่ภาพนี้แสดงในแบบจำลองฐานข้อมูลแบบวัตถุ โปรดสังเกตว่าคลาสพนักงาน (Employee Class) อยู่ในคอลเลคชันเดียวกันกับคลาสผู้จัดการ (Manager Class) โดยมีคลาสงาน (Task Class) และคลาสอื่นๆ สืบคุณสมบัติไปจากมัน (เช่นคลาสพนักงานเต็มเวลา Full Time Employee Class)
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 และ LONGINTo ทศนิยมหลักคงที่: ใช้เก็บตัวเลขที่มีจำนวนหลักที่แน่นอน ยกตัวอย่างเช่น DECIMAL(5.2) คือการกำหนดให้เก็บตัวเลขได้ 5 หลัก และมีเลขหลังทศนิยมได้ 2 ตำแหน่ง จึงสามารถเก็บข้อมูล12345.67 และ 12.34 ได้ แต่เก็บ 12.345 หรือ 123456.12 ไม่ได้o โฟลตติงพอยน์: floating point ใช้เก็บตัวเลขทศนิยมที่มีตำแหน่งทศนิยมไม่แน่นอน เช่น 1234, 123.45, 0.1234 เหล่านี้เป็นค่าที่เก็บด้วยชนิดข้อมูลโฟลตติงพอยน์ได้
วันที่: เก็บวันเดือนปีในลักษณะต่างๆ และอาจรวมข้อมูลเวลาไว้ด้วยก็ได้
ภาพ 2-3 : ตัวอย่างชนิดข้อมูลแบบเวลาใน SQL2008
2.4.2. ชนิดข้อมูลซับซ้อน ชนิดข้อมูลซับซ้อนเป็นโครงสร้างข้อมูล หรือข้อมูลที่อยู่รวมกันเป็นกลุ่ม (data collection) ยกตัวอย่างเช่น • ไบนารี: ข้อมูลแบบไบนารี (binary) คือข้อมูลในรูปเลขฐานสองที่เป็นก้อนขนาดใหญ่ เช่นรูปภาพ วิดีโอ เสียง ไม่สามารถบรรจุไว้ในแถวของตารางโดยตรงได้ เพราะปรกติแถวของตารางจะเก็บข้อมูลได้รวมกันไม่เกิน 2KB • พอยน์เตอร์: เป็นข้อมูลไบนารีที่ใช้สำหรับชี้ตำแหน่งข้อมูลในหน่วยความจำหรือในจานบันทึกข้อมูล • อาร์เรย์: (array) คือโครงสร้างข้อมูลที่มีการเรียงตัวซ้ำๆ กัน แบ่งออกเป็นอาร์เรย์แบบความยาวคงที่ และอาร์เรย์แบบความยาวเปลี่ยนแปลงได้ (dynamic array) • ชนิดข้อมูลที่ผู้ใช้นิยามขึ้นเอง: (User Defined Type ย่อ UDT) เป็นชนิดข้อมูลที่ผู้ใช้สร้างขึ้นโดยนำชนิดข้อมูลพื้นฐานมาจัดรูปแบบเป็นโครงสร้างที่แน่นอน เช่น structure
ภาพ 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 (อ่านรายละเอียดเรื่องคอดด์และประวัติของฐานข้อมูลสัมพันธ์เพิ่มเติมได้ในภาคผนวก)
ภาพ 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) นำแนวคิดของคอดด์มาต่อยอดเป็นแบบจำลองฐานข้อมูลแบบวัตถุ และแบบจำลองฐานข้อมูลแบบออพเจ็กต์สัมพันธ์
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 มาแยกย่อยเป็นโครงสร้างที่ซ้ำกันหลายๆ ชุด
ภาพ 2-1: การใช้งาน Business Intelligence (BI) และดาต้าแวร์เฮาส์
2.3. วิวและออพเจ็กต์พิเศษอื่นๆ ในฐานข้อมูลนอกจากจะมีตารางและดรรชนีแล้วยังมีออพเจ็กต์อื่นๆ อีกหลายอย่างที่นักออกแบบฐานข้อมูลจำเป็นต้องรู้จักดังต่อไปนี้
วิว: วิว (View) คือนิยามคิวรี ตัวมันเองไม่ใช่ตารางและไม่ได้เก็บข้อมูลใดๆ ไว้ภายใน วิวเป็นเพียงโครงสร้างทางตรรกะของตาราง เมื่อสั่งให้วิวทำงานเราจะได้ข้อมูลเป็นตารางเสมือน วิวมีประโยชน์เมื่อนำมาใช้ระหว่างขั้นตอนพัฒนา แต่ไม่ควรนำไปใช้ในขั้นตอนใช้งานจริง เพราะวิวอาจทำให้ประสิทธิภาพของฐานข้อมูลลดลง
วิววัตถุ: วิววัตถุ (Materialized views) ตางจากวิวธรรมดาตรงที่มันเป็นตารางข้อมูลชั่วคราวที่ถูกสร้างจากตารางจริงและมีข้อมูลเก็บไว้จริงๆ จุดประสงค์ในการสร้างวิววัตถุคือเพื่อลดภาระของตารางหลัก วิววัตถุมักถูกนำมาใช้เพื่อหาผลรวมของชุดข้อมูล (ดาต้าเซต dataset) ขนาดใหญ่ในงานคลังข้อมูล ในบาง RDBMS จะสนับสนุนการปรับข้อมูล (refresh) ระหว่างตารางจริงกับวิววัตถุโดยอัตโนมัติ ทำให้เราสามารถใช้งานวิววัตถุได้โดยไม่ต้องห่วงเรื่องความล้าสมัยของข้อมูล
คลัสเตอร์: คลัสเตอร์ (Cluster) เป็นออพเจ็กต์พิเศษที่ปัจจุบันไม่นิยมใช้แล้ว มันมีลักษณะและจุดประสงค์ในการใช้งานเหมือนวิววัตถุแต่ไม่มีการการปรับข้อมูลอัตโนมัติ
ตัวนับอัตโนมัติ: ตัวนับอัตโนมัติ (auto counter) คือคอลัมน์ที่เพิ่มค่าได้โดยอัตโนมัติ ทำให้เราสร้างคอลัมน์ซึ่งทำหน้าที่เป็นกุญแจแทนได้ง่ายขึ้น เพราะ RDBMS จะใส่ค่าในคอลัมน์นี้ให้โดยอัตโนมัติเป็นค่าที่เรียงลำดับ (เช่น 001, 002, 003 ฯลฯ)
ตัวประมวลผลแบบขนาน: โปรแกรม RDBMS บางตัวสนับสนุนการแยกตารางออกเป็นหลายส่วนเพื่อให้ตัวประมวลผลหลายตัวประมวลผลไปพร้อมๆ กันได้เพื่อเพิ่มประสิทธิภาพของฐานข้อมูล
ภาพ 2-2: ตัวประมวลผลแบบขนาน CELL/B.E. ที่ผลิตโดยบริษัทไอบีเอ็ม โซนีและโตชิบา
Home Page | รายการบทความ | ลิงค์ที่เกี่ยวข้อง | laploy.com | เกี่ยวกับผู้เขียน
ฐานข้อมูลเบื้องต้น : ตอน 2
1.3. ระบบฐานข้อมูล โดยพื้นฐานแล้วระบบฐานข้อมูล (database system) ก็คือการนำคอมพิวเตอร์มาใช้เพื่อเก็บข้อมูล ท่านสามารถสั่งให้มันทำงานที่เกี่ยวข้องกับการเก็บข้อมูลได้หลายอย่าง อาทิ • เพิ่มตารางเข้าสู่ฐานข้อมูล • แทรกข้อมูลใหม่สู่ตาราง • ดึงข้อมูลจากตาราง • ลบข้อมูลจากตาราง • เปลี่ยนแปลงข้อมูลในตาราง • ลบตารางจากฐานข้อมูล
ยกตัวอย่างเช่นในฐานข้อมูล AdventureWorks (ดูภาคผนวก จ) มีตารางชื่อ Person.Contact ทำหน้าที่เก็บข้อมูลบุคคลที่เกี่ยวข้องกับบริษัทเพื่อใช้ในการติดต่อ มีข้อมูลดังที่เห็นในภาพ 1-5
ภาพ 1-5: ตารางชื่อ Person.Contact
เราสามารถป้อนคำสั่งต่างๆ เพื่อจัดการกับข้อมูลได้ ยกตัวอย่างเช่นคำสั่งเพื่อเรียกดูข้อมูลห้าคนแรกเป็นดังนี้
ภาพ 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 ตัวอื่นๆ บ้างเพื่อเปรียบเทียบ
ภาพ 1-7: ระบบฐานข้อมูล
ผู้ใช้: ผู้ใช้งานแบ่งออกเป็นสามระดับคือo ผู้ใช้ทั่วไป: เป็นผู้ใช้งานกลุ่มใหญ่ที่สุด ใช้งานฐานข้อมูลโดยเขียนคิวรีภาษา SQL หรือใช้เครื่องมือที่มีการติดต่อผู้ใช้เป็นกราฟิกเพื่อสร้างคิวรี คนกลุ่มนี้จำไม่จำเป็นต้องได้รับการฝึกฝนทางไอที (IT = Information Technology วิทยาการสารสนเทศ) และไม่จำเป็นต้องเขียนโปรแกรมเป็นo ผู้พัฒนาโปรแกรมประยุกต์: ทำหน้าที่เขียนโปรแกรมด้วยภาษาต่างๆ เช่น C#, PHP และจาวาสำหรับการประยุกต์ใช้งานที่ต้องเกี่ยวข้องกับฐานข้อมูล อาจเป็นโปรแกรมสำหรับใช้งานในอินเตอร์เน็ต เช่นใช้ ADO.NET เป็นตัวเชื่อมต่อกับ SQL2008 เพื่อสร้างเว็บไซต์แบบ ASP.NET คนกลุ่มนี้เป็นผู้ที่ได้รับการฝึกฝนทางไอทีมาโดยตรงo ผู้ดูแลฐานข้อมูล: หรือที่มักเรียกย่อว่า "แอดมิน" (administrator บางที่เรียก DBA) คือผู้ทำหน้าที่ดูแลระบบฐานข้อมูลให้พร้อมใช้งานอยู่เสมอ
Home Page | รายการบทความ | ลิงค์ที่เกี่ยวข้อง | laploy.com | เกี่ยวกับผู้เขียน
ฐานข้อมูลเบื้องต้น : ตอน 1
ท่านต้องใช้ฐานข้อมูลอยู่ตลอดเวลาโดยไม่รู้ตัว ยกตัวอย่างเช่นเมื่อท่านค้นหาข้อมูลภาพยนตร์ที่กำลังตัดสินใจว่าจะไปเช่ามาดูดีหรือไม่จากเว็บไซต์ IMDB หรือเมื่อท่านค้นหาข้อมูลเกี่ยวกับจานผีบุกโลกจากเว็บไซต์ Google เมื่อเล่นเกมออนไลน์ หรือเมื่อค้นหาที่ตั้งของสถานที่ๆ ท่านต้องการไปพักผ่อนสุดสัปดาห์ ฯลฯ กิจกรรมต่างๆ ที่กล่าวมานี้ล้วนแล้วแต่ต้องอาศัยฐานข้อมูลทั้งสิ้น ในบทนี้ท่านจะได้เรียนเนื้อหาเบื้องต้นเกี่ยวกับฐานข้อมูลซึ่งประกอบด้วยหัวข้อต่างๆ ดังนี้
• ตาราง คอลัมน์และแถว • ฐานข้อมูลคืออะไร • ระบบฐานข้อมูล • องค์ประกอบของฐานข้อมูล • ความสัมพันธ์และเอนทิตี • นิยามฐานข้อมูล
1.1 ตาราง คอลัมน์และแถว เคยมีนักศึกษาผู้หนึ่งกล่าวแก่ผู้เขียนว่า “ตำราฐานข้อมูลนั้นหนาหนักแลยืดยาวนัก จะสรุปใจความสำคัญให้เหลือเพียงประโยคเดียวได้หรือไม่?” ผู้เขียนตอบว่าได้ และเฉลยว่า “ฐานข้อมูลคือตาราง คอลัมน์และแถว” นี่คือใจความสำคัญทั้งหมดของฐานข้อมูล หากท่านเข้าใจประโยคนี้ก็นับว่าท่านเข้าใจเรื่องฐานข้อมูลแล้ว
ฐานข้อมูลหรือดาต้าเบส (database) คือส่วนบนสุดหรือใหญ่สุด ภายในดาต้าเบสจะประกอบด้วยตาราง (table) จำนวนมาก ในหนึ่งตารางมีองค์ประกอบสองส่วนคือคอลัมน์ (Column) และแถว (Row) ยกตัวอย่างเช่น ภาพ 1-1 คือฐานข้อมูลชื่อ MotionPicture ทำหน้าที่เก็บข้อมูลเกี่ยวแก่ภาพยนตร์ กรอบสี่เหลี่ยมแต่ละกรอบคือตาราง ฐานข้อมูลนี้เป็นฐานข้อมูลเล็กๆ ที่มีตารางเพียงห้าตาราง ในการใช้งานจริงท่านอาจพบฐานข้อมูลที่มีตารางหลายร้อยหรือหลายพันตาราง
ภาพ 1-1: ฐานข้อมูล MotionPicture
ตารางเป็นองค์ประกอบสำคัญสุดของฐานข้อมูล ตารางคือความสัมพันธ์ (Relation) เพราะข้อมูลภายในหนึ่งตารางจะมีความสัมพันธ์กัน ท่านย่อมไม่เก็บสิ่งที่ไม่เกี่ยวข้องกันไว้ภายในตารางเดียวกัน ยกตัวอย่างเช่นตารางชื่อ MovieStar ซึ่งใช้เก็บข้อมูลของดารา ย่อมมีแต่ข้อมูลที่เกี่ยวแก่ตัวดาราเท่านั้น ไม่มีข้อมูลอื่นๆ ที่ไม่เกี่ยวข้อง เช่น ข้อมูลของภาพยนตร์ หรือข้อมูลของโรงถ่ายภาพยนตร์ ฯลฯ
ตารางมีองค์ประกอบหลักเพียงสองอย่างคือคอลัมน์และแถว ผู้เขียนขออธิบายคำว่าแถวก่อน แถวคือสิ่งที่แบ่งข้อมูลในตารางออกเป็นส่วนๆ ตามความสัมพันธ์ของข้อมูลที่จะเก็บ ยกตัวอย่างเช่น ภาพ 1-2 เป็นตารางเก็บข้อมูลโรงแรมต่างๆ ในเขตพระนคร ข้อมูลของโรงแรมหนึ่งโรงแรมจะถูกเก็บไว้ภายในแถวหนึ่งแถวเท่านั้น ยกตัวอย่างเช่น ข้อมูลของโรงแรมโซฟีเตล จะถูกเก็บไว้ภายในแถวหมายเลข 10 เพียงแถวเดียว
ในหนังสือนี้คำว่า แถว ทูเพิล เรคคอร์ด และ row ถือเป็นคำเดียวกันหมด แต่ผู้เขียนจะใช้คำว่า “แถว” เป็นหลัก
ภาพ 1-2 ตารางเก็บข้อมูลโรงแรมต่างๆ ในเขตพระนคร
ต่อไปมาดูความหมายของคำว่าคอลัมน์บ้าง คอลัมน์คือสิ่งที่ทำหน้าที่แบ่งแถวออกเป็นส่วนๆ ตามคุณสมบัติของข้อมูลที่จะเก็บ ยกตัวอย่างเช่น แถวข้อมูลทั้งหมดในภาพ 1-2 ถูกแบ่งออกตามแนวตั้ง คอลัมน์แรกชื่อ EntryID คอลัมน์ที่สองชื่อ Hotel Name ฯลฯ คอลัมน์แต่ละคอลัมน์อาจมีชนิดข้อมูลต่างกันหรือเหมือนกันก็ได้ ยกตัวอย่างเช่น คอลัมน์ EntryID มีชนิดข้อมูลแบบจำนวนเต็ม ขณะที่คอลัมน์ Location มีชนิดข้อมูลเป็นสตริงและคอลัมน์ Fee มีชนิดข้อมูลแบบจำนวนเงิน
ในหนังสือนี้คำว่า คอลัมน์ แอตทริบิวต์ และฟิลด์ มีความหมายเหมือนกันหมด แต่ผู้เขียนจะใช้คำว่า “คอลัมน์” เป็นหลัก คำเหล่านี้แท้จริงมีความหมายแตกต่างกันดังท่านจะได้เรียนในบทต่อๆ ไป
เนื้อหาที่เป็นใจความสำคัญของฐานข้อมูลมีเพียงเท่านี้ เนื้อหาที่เหลือของหนังสือเป็นเรื่องปลีกย่อยทั้งนั้น สิ่งที่ท่านจะได้เรียนต่อไปคือ ฐานข้อมูลมีแนวคิดมีความเป็นมาอย่างไร วิธีสร้างฐานข้อมูล วิธีสร้างตาราง วิธีนำข้อมูลไปใส่ (ภาคหนึ่ง) วิธีสืบค้นข้อมูลอย่างมีประสิทธิภาพ (ภาคสอง) และวิธีประยุกต์ใช้งานฐานข้อมูลในลักษณะต่างๆ (ภาคสาม)
1.2. ฐานข้อมูลคืออะไร ฐานข้อมูลคือสถานที่เก็บข้อมูลถาวรสำหรับใช้ในองค์กรหรือเพื่อใช้ร่วมกับโปรแกรมประยุกต์ คอมพิวเตอร์ย่อมไร้ประโยชน์หากไม่มีข้อมูล เมื่อเราใช้งานคอมพิวเตอร์เราต้องทำงานกับข้อมูลอยู่ตลอดเวลาโดยไม่รู้ตัว เช่นการคุยกับเพื่อนด้วยโปรแกรม MSN ข้อความที่เราและเพื่อนพิมพ์สนทนากันคือข้อมูล เมื่อเราดูภาพยนตร์ แฟ้มภาพยนตร์คือข้อมูล ภาพถ่ายที่ย้ายจากกล้องถ่ายรูปดิจิตอลไปใส่ในคอมพิวเตอร์ก็เป็นข้อมูล หน้าเว็บทั้งหน้าประกอบด้วยข้อมูลล้วนๆ คำสั่ง โปรแกรม คิวงานและอื่นๆ ล้วนเป็นข้อมูลทั้งสิ้น แต่ข้อมูลเหล่านี้เป็นข้อมูลชั่วคราว จะหายไปเองเมื่อเราไม่ได้ใช้งานแล้ว ยกตัวอย่างเช่นข้อความที่เราและเพื่อนพิมพ์สนทนากันใน MSN จะถูกเก็บพักไว้ในแฟ้มประวัติชั่วคราว เมื่อถึงเวลาที่กำหนดจะถูกลบไปหรือถูกทับด้วยข้อมูลใหม่ หรือภาพยนตร์ที่เราเปิดดูในหน้าเว็บจะถูกโหลดมาใส่ไว้ในฮาร์ดดิสก์ชั่วคราว เมื่อดูเสร็จแล้วระบบก็จะลบทิ้งไป
แต่ฐานข้อมูลหรือดาต้าเบสไม่เป็นเช่นนั้น มันเป็นแหล่งเก็บข้อมูลถาวร ข้อมูลจะเข้าไปอยู่ในนั้นได้ก็ต่อเมื่อท่านสั่งให้นำไปเก็บไว้ และจะหายก็ต่อเมื่อท่านสั่งลบ ข้อมูลในฐานข้อมูลจะไม่เกิดขึ้นหรือหายไปโดยไม่เจตนา (ยกเว้นการหายไปเพราะฮาร์ดดิสก์ชำรุดที่ต้องนับว่าเป็นเภทภัยมากกว่าวาสนา) ข้อมูลในฐานข้อมูลเป็นข้อมูลที่ถูกใช้โดยองค์กร คำว่าองค์กรในที่นี้อาจเป็นร้านค้าห้องแถวซึ่งมีพีซีอยู่ตัวเดียว หรือบริษัทขนาดยักษ์ระดับโลกที่มีคอมพิวเตอร์คละแบบจำนวนมาก หรือสิ่งที่อยู่ในระหว่างนั้น ยกตัวองค์กรที่จำเป็นต้องใช้ฐานข้อมูลคือ • โรงงานอุตสาหกรรม • ธนาคาร สถาบันการเงิน • โรงพยาบาล • มหาวิทยาลัย • หน่วยงานของรัฐ
ข้อมูลที่องค์กรเหล่านี้ต้องเก็บและจัดการคือ • ข้อมูลการผลิต • ข้อมูลบัญชี • ข้อมูลผู้ป่วย • ข้อมูลนักศึกษา • ข้อมูลแผนงาน
ภาพ 1-3: ความแต่ต่างระหว่างฐานข้อมูลแบบ OLTP
ฐานข้อมูลมีหลายแบบ แบ่งออกตามประเภทการใช้งาน ยกตัวอย่างเช่น ฐานข้อมูลที่ใช้ในการทำงานวันต่อวัน หรือใช้ในการผลิต เช่นเมื่อลูกค้านำเงินมาฝากที่ธนาคาร ข้อมูลต้องถูกบันทึกไว้ แล้วนำไปประมวลผล (ยกตัวอย่างการประมวลผลคือบวกจำนวนที่ฝากกับจำนวนเงินคงเหลือที่มีอยู่ในบัญชีแต่เดิม) หรือฐานข้อมูลซึ่งเก็บข้อมูลที่เกิดขึ้นในช่วงเวลาต่างๆ ของการผลิตสินค้า เป็นฐานข้อมูลเพื่อการประมวลผลทางธุรกรรม (online transaction processing ย่อ OLTP)
ฐานข้อมูลอีกชนิดหนึ่งใช้เก็บข้อมูลเพื่อช่วยในการตัดสินใจ ยกตัวอย่างเช่น ผู้จัดการแผนกสินค้าคงคลังใช้ฐานข้อมูลเพื่อช่วยในการตัดสินใจว่าต้องสั่งสินค้าเพิ่มหรือไม่ โดยตรวจดูว่าสินค้ามีจำนวนต่ำกว่าหรือถึงระดับที่กำหนดหรือไม่ ฐานข้อมูลที่ใช้เพื่อการวิเคราะห์นี้เรียกว่า "คลังข้อมูล" หรือดาต้าแวร์เฮาส์ (data warehouse) เก็บข้อมูลที่ประมวลจากฐานข้อมูล OLTP อีกต่อหนึ่ง การวิเคราะห์นี้บางครั้งเรียกว่าการวิเคราะห์แบบออนไลน์ (Online Analytical Processing ย่อ OLAP)
ภาพ 1-4: Data Warehouse
03 febbraio
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
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
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 ฐานข้อมูลแบบผสมผสาน
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
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
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
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