ฐานข้อมูล หมายถึง วิธีในการจัดการข้อมูลที่มีอยู่ในระบบ เพื่อใช้งานได้ง่าย รวมถึงการเปลี่ยนแปลงข้อมูลได้ง่าย เช่นการเพิ่มหรือลดข้อมูล เป็นต้น
ฐานข้อมูล หมายถึง แหล่งที่ใช้สำหรับเก็บรวบรวมข้อมูลซึ่งอยู่ในรูปแฟ้มข้อมูลมารวมไว้ที่เดียวกัน รวมทั้งต้องมีส่วนของพจนานุกรมข้อมูล (data dictionary) เก็บคำอธิบายเกี่ยวกับโครงสร้างของฐานข้อมูล และเนื่องจากข้อมูลที่จัดเก็บนั้นต้องมีความสัมพันธ์ซึ่งกันและกันทำให้สามารถสืบค้น (retrieval) แก้ไข (modified) ปรับปรุงเปลี่ยนแปลงโครงสร้าง ข้อมูล (update) และจัดเรียง (sort) ได้สะดวกขึ้นโดยในการกระทำการดังที่กล่าวมาแล้ว ต้องอาศัยซอฟต์แวร์ประยุกต์สำหรับจัดการฐานข้อมูลระบบฐานข้อมูล หมายถึง ระบบการรวบรวมแฟ้มข้อมูลหลายๆ แฟ้มข้อมูลเข้าด้วยกัน โดยขจัดความซ้ำซ้อนของข้อมูลออก แล้วเก็บข้อมูลไว้ที่ศูนย์กลาง เพื่อการใช้งานร่วมกันในองค์กร ภายในระบบต้องมีส่วนที่เป็นโปรแกรมประยุกต์ที่สร้างขึ้นเพื่อเชื่อมโยงและใช้งานข้อมูลในฐานข้อมูล (database) และจะต้องมีการดูแลรักษาความปลอดภัยของข้อมูลเหล่านั้น มีการกำหนดสิทธิของผู้ใช้งานแต่ละคนให้แตกต่างกัน ตามแต่ความต้องการในการใช้งาน
จากความหมายที่กล่าวมาข้างต้น ระบบฐานข้อมูลจะประกอบด้วยแฟ้มข้อมูลจำนวนหลายๆ แฟ้มดังตัวอย่างในรูป แฟ้มข้อมูลเหล่านี้ต้องมีการจัดระบบแฟ้มไว้อย่างดี กล่าวคือ ข้อมูลในแฟ้มข้อมูลเดียวกันต้องไม่มีการซ้ำซ้อนกัน แต่ระหว่างแฟ้มข้อมูลอาจมีการซ้ำซ้อนกันได้บ้าง และต้องเปิดโอกาสให้ผู้ใช้สามารถเข้าถึงข้อมูล และค้นหาได้ง่าย นอกจากนี้ยังสามารถ เพิ่มเติม หรือลบออกได้โดยไม่ทำให้ข้อมูลอื่นเสียหาย
ความสำคัญของระบบฐานข้อมูล
การจัดข้อมูลให้เป็นระบบฐานข้อมูลทำให้ข้อมูลมีส่วนดีกว่าการเก็บข้อมูลในรูปของแฟ้มข้อมูล เพราะการจัดเก็บข้อมูลในระบบฐานข้อมูล จะมีส่วนที่สำคัญกว่าการจัดเก็บข้อมูลในรูปของแฟ้มข้อมูลดังนี้
1 ลดการเก็บข้อมูลที่ซ้ำซ้อน
2.รักษาความถูกต้องของข้อมูล
3.การป้องกันและรักษาความปลอดภัยให้กับข้อมูลทำได้อย่างสะดวก
4.สามารถใช้ข้อมูลร่วมกันได้
5.มีความเป็นอิสระของข้อมูล
6.สามารถขยายงานได้ง่าย
7.ทำให้ข้อมูลบูรณะกลับสู่สภาพปกติได้เร็วและมีมาตรฐาน
ระบบฐานข้อมูลส่วนใหญ่เป็นระบบที่มีการนำระบบคอมพิวเตอร์เข้ามาช่วยใน การจัดเก็บ โดยมีโปรแกรม Software ช่วยในการจัดการข้อมูลเหล่านี้ เพื่อให้ได้ข้อมูลตามที่ผู้ใช้ต้องการ องค์ประกอบของฐานข้อมูลแบ่งออกเป็น 5 ประเภท คือ 1. ฮาร์ดแวร์ (Hardware) ในระบบฐานข้อมูลที่มีประสิทธิภาพควรมีฮาร์ดแวร์ต่าง ๆ ที่พร้อมจะอำนวยความสะดวกในการบริหารข้อมูลได้อย่างมีประสิทธิภาพไม่ว่าจะเป็นความเร็วของหน่วยประมวลผลกลาง ขนาดของหน่วยความจำหลัก อุปกรณ์นำเข้าและออกข้อมูล รายงานหน่วยความจำสำรองที่จะรองรับการประมวลผลข้อมูลในระบบได้อย่างมีประสิทธิภาพ 2. ซอฟต์แวร์ (Software) ในการประมวลผลข้อมูลอาจจะใช้ซอฟต์แวร์หรือโปรแกรมที่แตกต่างกัน ทั้งนี้ขึ้นอยู่กับคอมพิวเตอร์ที่นำมาใช้ว่าเป็นแบบใด โปรแกรมจะทำหน้าที่ดูแลการสร้าง การเรียกใช้ข้อมูลการจัดทำรายงาน การปรับเปลี่ยน แก้ไข โครงสร้างการควบคุม หรืออาจกล่าวได้อีกอย่างว่าระบบจัดการฐานข้อมูล (Database Management System : DBMS) คือ โปรแกรมประยุกต์ต่างๆ ที่มีอยู่ในฐานข้อมูล ตัวอย่างเช่น DBASE IV, EXCEL , ACCESS , INFORMIX , ORACLE เป็นต้น 3. ข้อมูล (Data) ฐานข้อมูลเป็นการจัดเก็บรวบรวมข้อมูลให้เป็นศูนย์กลางข้อมูลอย่างมีระบบ ซึ่งข้อมูลเหล่านี้สามารถเรียกใช้ร่วมกันได้ ผู้ใช้ข้อมูลในระบบฐานข้อมูลจะมองภาพข้อมูลในลักษณะที่แตกต่างกัน เช่น ผู้ใช้บางคนมองภาพของข้อมูลที่ถูกจัดเก็บได้ในสื่อข้อมูล ผู้ใช้ บางคนมองภาพข้อมูลจากการใช้งาน เป็นต้น ภาพประกอบที่ 20 สิ่งแวดล้อมของระบบฐานข้อมูล (วิเศษศักดิ์ โคตรอาษา. 2542 : 129) 4. บุคลากร (People) ในระบบฐานข้อมูลจะมีบุคลากรที่เกี่ยวข้อง ดังนี้ 4.1 ผู้ใช้ทั่วไป (User) หมายถึง บุคลากรที่ใช้ข้อมูลจากระบบฐานข้อมูล เพื่อให้งานสำเร็จลุล่วงได้ 4.2 พนักปฏิบัติการ (Operator) หมายถึง ผู้ปฏิบัติการด้านการประมวลผลการป้อนข้อมูลเข้าเครื่องคอมพิวเตอร์ 4.3 นักเขียนโปรแกรม (Programmer) หมายถึง ผู้ที่มีหน้าที่เขียนโปรแกรมประยุกต์ใช้งานต่างๆ เพื่อให้จัดเก็บข้อมูล การเรียกใช้ข้อมูลเป็นไปตามต้องการของผู้ใช้ 4.4 นักวิเคราะห์และออกแบบระบบ (System Analyst) หมายถึง บุคลากรที่ทำหน้าที่วิเคราะห์ระบบฐานข้อมูล และออกแบบระบบงานที่จะนำมาใช้ 4.5 ผู้บริหารฐานข้อมูล (Database Administrator) หมายถึง บุคลากรที่ทำหน้าที่บริการและควบคุมการบริหารงานของระบบฐานข้อมูล ทั้งหมดเป็นผู้ตัดสินใจว่าจะรวบรวมข้อมูลอะไรเข้าในระบบ จัดเก็บโดยวิธีใด เทคนิคการเรียกใช้ข้อมูล กำหนดระบบวิธีการรักษาความปลอดภัยของข้อมูล การสร้างระบบข้อมูลสำรอง การกู้และประสานงานกับผู้ใช้ว่ามีความต้องการใช้ข้อมูลอย่างไร รวมถึงการวิเคราะห์และการออกแบบระบบ เพื่อให้นักเขียนโปรแกรมนำไปเขียนโปรแกรมที่ใช้ในการบริหารงานระบบฐานข้อมูลได้อย่างมีประสิทธิภาพ 5. ขั้นตอนปฏิบัติงาน (procedure) ในระบบฐานข้อมูลที่ดีจะต้องมีการจัดทำเอกสารที่ระบุขั้นตอนการทำงานของหน้าที่ต่างๆ ระบบฐานข้อมูลทั้งในสภาวะปกติ และในสภาวะที่ระบบเกิดขัดข้องมีปัญหา ซึ่งเป็นขั้นตอนการปฏิบัติงานสำหรับบุคลากรในทุกระดับขององค์กร ระบบฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) คือ ฐานข้อมูลที่ได้รับการใช้มากที่สุด โดยขึ้นกับพื้นฐานทางทฤษฎีที่เข้มแข็ง ด้านพีชคณิตเชิงสัมพันธ์ ไม่มีความจำเป็นในการทำความเข้าใจทางทฤษฎีความสัมพันธ์ในการใช้ฐานข้อมูลเชิงสัมพันธ์ แต่จำเป็นต้องเข้าใจแนวคิดฐานข้อมูลพื้นฐานบางประการสัมพันธ์ ฐานข้อมูลแบบนี้แสดง การจัดเก็บข้อมูลในรูปแบบของตาราง ที่มีลักษณะเป็นสองมิติ คือ แถว (Row) และคอลัมน์ (Column) ซึ่งในการเชื่อมโยงกันระหว่างข้อมูลในตาราง 2 ตาราง หรือมากกว่า จะเชื่อมโยงโดยใช้แอททริบิวต์ที่มีอยู่ในตารางที่ต้องการเชื่อมโยงข้อมูลกัน โดยที่แอททริบิวต์จะแสดงคุณสมบัติของรีเลชั่นต่าง ๆ ซึ่งรีเลชั่นต่าง ๆ ได้ผ่านกระบวนการทำรีเลชั่นให้เป็นบรรทัดฐาน (Normalized) ในระหว่าง การออกแบบเพื่อละความซ้ำซ้อน เพื่อให้การจัดการฐานข้อมูลเป็นไปอย่างมีประสิทธิภาพ |
คำศัพท์ต่างๆ เกี่ยวกับระบบฐานข้อมูล
ข้อมูลในระบบฐานข้อมูลจะมีความสัมพันธ์กันดังนั้นในการออกแบบฐานข้อมูลเราจะต้องเข้าใจความสัมพันธ์ของข้อมูลให้ชัดเจนเพื่อให้ฐานข้อมูลในมีประสิทธิภาพ ก่อนอื่นเราจะต้องเข้าใจศัพท์ต่างๆ เกี่ยวกับระบบฐานข้อมูลดังนี้
- — เอนทิตี้ (Entity) เป็นคำที่อ้างถึงบุคคล สถานที่ และสิ่งของต่างๆ เช่น สินค้า ใบสั่งซื้อ และลูกค้า เป็นต้น
- — แอตทริบิวส์ (Attribute) เป็นข้อมูลที่แสดงลักษณะของเอนทิตี้ เช่น แอตทริบิ้วของเอนทิตี้ลูกค้า จะมี ชื่อ ที่อยู่ และรหัสไปรษณีย์ ส่วนแอตทริบิวต์ใบสั่งซื้อสินค้า จะมีรหัสใบสั่งซื้อ ชื่อ สินค้า จำนวนสินค้าที่สั่ง เป็นต้น
- · ความสัมพันธ์ (Relationship) หมายถึงความสัมพันธ์ระหว่างเอนทิตี้ต่างๆ ในระบบ
ส่วนประกอบของฐานข้อมูลเชิงสัมพันธ์
ระบบฐานข้อมูลในทางคอมพิวเตอร์ เนื่องจากคอมพิวเตอร์จะเก็บข้อมูลในรูปแบบบิต (เลข 0 กับ 1 เท่านั้น) ซึ่ง 1 ไบต์ หรือ 1 อักขระ จะเท่ากับ 8 บิต ถ้าเราจะเข้าใจความหมายของการเก็บข้อมูลคอมพิวเตอร์เราจะต้องรู้ศัพท์ต่าง ๆ ดังนี้
◦ ฟิลด์(Field) หน่วยข้อมูลที่ประกอบมาจากอักขระต่างๆ หลายอักขระ
◦ เรคอร์ด (Record) จะเป็นการนำฟิลด์หลายๆฟิลด์มารวมกัน
◦ ตาราง (Table) จะเป็นการนำหลายๆเรคอร์ดมารวมกันชนิดของความสัมพันธ์ (Relationship)
จากที่เราได้เรียนรู้แล้วว่า ระบบฐานข้อมูลเชิงสัมพันธ์ ก็คือ การรวบรวมตารางที่มีความสัมพันธ์กันเข้าไว้ด้วยกัน ซึ่งความสัมพันธ์เองก็มีหลายชนิด ดังนี้
1.ความสัมพันธ์หนึ่งต่อหนึ่ง (One – to- One Relationships) คือความสัมพันธ์ของเรคอร์ดในหนึ่งตารางจะมีความสัมพันธ์กับอีกหนึ่งเรคอร์ดในอีกหนึ่งตารางเท่านั้นไม่สามารถเกินหนึ่งได้ (1:1)
2. ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (One-to-many Relationships) เป็นการแสดงความสัมพันธ์ของข้อมูลในเอนทิตี้หนึ่ง ที่มีความสัมพันธ์กับข้อมูลหลาย ๆ ข้อมูลในอีกเอนทิตี้หนึ่ง ในลักษณะ (1:m)
3. ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (Many-to-many Relationships) เป็นการแสดงความสัมพันธ์ของข้อมูลสองเอนทิตี้ในลักษณะกลุ่มต่อกลุ่ม (m:n)
ชนิดของคีย์ในฐานข้อมูลเชิงสัมพันธ์
- — คีย์หลัก (Primary Key) จะเป็นฟิลด์ที่ไม่ซ้ำกันในแต่ละเรคอร์ดในตารางนั้น เราสามารถใช้ฟิลด์ที่เป็น Primary Key นี้เป็นตัวแทนของตาราง
- — คีย์คู่แข่ง (candidate Key) เป็นฟิลด์หนึ่งหรือหลายฟิลด์ที่มีคุณสมบัติที่เป็น Primary Key แต่ไม่คีย์หลัก เช่น ชื่อและนามสกุล สามารถรวมกันเป็นคีย์คู่แข่งได้
- — Composite Key เป็นฟิลด์ที่ใช้รวมกับฟิลด์อื่นๆ ที่เป็น Composite key เหมือนกันมาใช้เป็น Primary Key ของตาราง
- — Foreign Key เป็นฟิลด์ในตารางหนึ่ง ที่มีความสัมพันธ์กับ primary Key ในอีกตารางหนึ่ง
ประโยชน์ของฐานข้อมูลเชิงสัมพันธ์
1. ช่วยลดความซ้ำซ้อนของการจัดเก็บข้อมูล
2. ช่วยให้สามารถเรียกใช้ข้อมูลได้ตรงกัน(ข้อมูลอับเดทได้ทันเวลา) เนื่องจากข้อมูลถูกแก้ไขจากที่เดียวกัน
3. ช่วยป้องกันการผิดพลาดจากการป้อนข้อมูลและแก้ไขข้อมูล(ป้อนข้อมูลที่ตารางหลัก)
4. ช่วยประหยัดเนื้อที่การจัดเก็บข้อมูลในคอมพิวเตอร์ และอื่น ๆ (ไม่เก็บข้อมูลซ้ำซ้อน เก็บข้อมูลเท่าที่จำเป็น)
การออกแบบระบบฐานข้อมูล
การออกแบบระบบฐานข้อมูลเป็นขั้นตอนแรกในการสร้างแอพพลิเคชั่นฐานข้อมูล
จุดประสงค์ในการออกแบบฐานข้อมูล
• ลดความซ้ำซ้อนข้อมูลในฐานข้อมูล
• ตอบสนองความจำเป็นในการเรียกใช้ข้อมูลโดยใช้เวลาสั้นที่สุด
• ช่วยให้ตรวจสอบความถูกต้องรวมทั้งจัดมาตรฐานของข้อมูลได้สะดวก
• สามารถกำหนดลักษณะของผู้ใช้แต่ละประเภทได้
• ทำให้มีความเป็นอิสระระหว่างข้อมูลกับโปรแกรม
ขั้นตอนในการออกแบบฐานข้อมูล
- กำหนดเอนทิตี้ทุกตัวในระบบฐานข้อมูลนั้น ๆ
- กำหนดคีย์หลัก
- กำหนดความสัมพันธ์ระหว่างเอนทิตี้
- ทำการเปลี่ยนเอนทิตี้ให้อยู่ในรูปตาราง
โปรแกรมฐานข้อมูลที่นิยมใช้
โปรแกรมฐานข้อมูล เป็นโปรแกรมหรือซอฟแวร์ที่ช่วยจัดการข้อมูลหรือรายการต่าง ๆ ที่อยู่ในฐานข้อมูล ไม่ว่าจะเป็นการจัดเก็บ การเรียกใช้ การปรับปรุงข้อมูล
ฐานข้อมูล จะช่วยให้ผู้ใช้สามารถค้นหาข้อมูลได้อย่างรวดเร็ว ซึ่งโปรแกรมฐานข้อมมูลที่นิยมใช้มีอยู่ด้วยกันหลายตัว เช่น Access, FoxPro, Clipper, dBase, FoxBase, Oracle, SQL เป็นต้น โดยแต่ละโปรแกรมจะมีความสามารถต่างกัน บางโปรแกรมใช้ง่ายแต่จะจำกัดขอบเขตการใช้งาน บ่งโปรแกรมใช้งานยากกว่า แต่จะมีความสามารถในการทำงานมากกว่า
1.โปรแกรม Access นับเป็นโปรแกรมที่นิยมใช้กันมากในขณะนี้ โดยเฉพาะในระบบฐานข้อมูลขนาดใหญ่ สามารถสร้างแบบฟอร์มที่ต้องการจะเรียกดูข้อมูลในฐานข้อมูล หลังจากบันทึกข้อมูลในฐานข้อมูลเรียบร้อยแล้ว จะสามารถค้นหาหรือเรียกดูข้อมูลจากเขตข้อมูลใดก็ได้ นอกจากนี้ Access ยังมีระบบรักษาความปลอดภัยของข้อมูล โดยการกำหนดรหัสผ่านเพื่อป้องกันความปลอดภัยของข้อมูลในระบบได้ด้วย
2.โปรแกรม FoxPro เป็นโปรแกรมฐานข้อมูลที่มีผู้ใช้งานมากที่สุด เนื่องจากใช้ง่ายทั้งวิธีการเรียกจากเมนูของ FoxPro และประยุกต์โปรแกรมขึ้นใช้งาน โปรแกรมที่เขียนด้วย FoxPro จะสามารถใช้กลับ dBase คำสั่งและฟังก์ชั่นต่าง ๆ ใน dBase จะสามารถใช้งานบน FoxPro ได้ นอกจากนี้ใน FoxPro ยังมีเครื่องมือช่วยในการเขียนโปรแกรม เช่น การสร้างรายงาน
3.โปรแกรม dBase เป็นโปรแกรมฐานข้อมูลชนิดหนึ่ง การใช้งานจะคล้ายกับโปรแกรม FoxPro ข้อมูลรายงานที่อยู่ในไฟล์บน dBase จะสามารถส่งไปประมวลผลในโปรแกรม Word Processor ได้ และแม้แต่ Excel ก็สามารถอ่านไฟล์ .DBF ที่สร้างขึ้นโดยโปรแกรม dBase ได้ด้วย
4. โปรแกรม SQL เป็นโปรแกรมฐานข้อมูลที่มีโครงสร้างของภาษาที่เข้าใจง่าย ไม่ซับซ้อน มีประสิทธิภาพการทำงานสูง สามารถทำงานที่ซับซ้อนได้โดยใช้คำสั่งเพียงไม่กี่คำสั่ง โปรแกรม SQL จึงเหมาะที่จะใช้กับระบบฐานข้อมูลเชิงสัมพันธ์ และเป็นภาษาหนึ่งที่มีผู้นิยมใช้กันมาก โดยทั่วไปโปรแกรมฐานข้อมูลของบริษัทต่าง ๆ ที่มีใช้อยู่ในปัจจุบัน เช่น Oracle, DB2 ก็มักจะมีคำสั่ง SQL ที่ต่างจากมาตรฐานไปบ้างเพื่อให้เป็นจุดเด่นของแต่ละโปรแกรมไป
การ Normalization
เป็นทฤษฎีที่ใช้ในการทำให้เอนทิตี้ และแอตทริบิวต์ที่ได้ออกแบบไว้ ถูกจัดกลุ่มเป็นตารางที่มีความสัมพันธ์ จุดประสงค์ของการ Normalization คือ
1. ลดความซ้ำซ้อนของข้อมูลในตาราง เพื่อจะได้ไม่ต้องไขข้อมูลในหลายๆ ที่
2. ทำให้การเปลี่ยนแปลงแก้ไขโครงสร้างของตารางในภายหลังทำให้ง่าย
3. ทำให้การเปลี่ยนแปลงโครงสร้างฐานข้อมูลมีผลกระทบต่อแอพพลิเคชั่นที่เข้าถึงข้อมูลในฐานข้อมูลน้อยที่สุด
ในการ Normalization ให้ได้ผลดีที่สุด เราต้องนำทั้งทฤษฎี และจุดประสงค์ในการทำงานมาใช้ร่วมกัน เช่น ในตัวอย่างนี้ ใบสั่งซื้อแต่ละใบ จะสั่งสินค้าชนิดเดียวกันเกิน 1 รายการไม่ได้ แต่ในระบบอาจจะทำได้ก็ได้ เป็นต้น ดังนั้น การออกแบบจึงควรยึดถือหลักความจริง ควบคู่กับการใช้ทฤษฎีด้วย
ในหัวข้อนี้ เราจะออกแบบจากข้อมูลการสั่งซื้อสินค้าที่มีอยู่จริงมาใช้ โดยเป็นข้อมูลที่ยังไม่ได้รับการ Normalization และเราจะแสดงการใช้กฎ Normalization ออกแบบตาราง จนได้ตารางที่มีการซ้ำซ้อนน้อยที่สุด
ตัวอย่างตารางข้อมูลในระบบการสั่งซื้อที่จะใช้แสดงการ Normalization โดยในตารางตัวอย่างที่ยกมาแสดงนี้เป็นข้อมูลจริง โดยมีข้อมูลแบ่งออกเป็นส่วนต่างๆ ต่อไปนี้
ข้อมูลสินค้า
รหัสชนิดสินค้า | ชื่อชนิดสินค้า | รหัสสินค้า | ชื่อสินค้า | ราคาต่อหน่วย | ภาษี | จำนวนในคลัง |
01 | หนังสือ | 0005 | คู่มือสำหรับผู้นำในยุค 90 | 219.63 | Yes | 409 |
0100 | พูดอย่างมีวาทะ | 219.63 | Yes | 155 | ||
02 | CD – ROM | 0125 | SALES MANAGER FACTOMATIC | 700.93 | No | 169 |
0051 | SECRETS OF STARGATE | 1,842.99 | No | 197 | ||
0010 | US ATLAS | 540.19 | No | 159 | ||
03 | Hardware | 0007 | VIDEOCONVERENCING CARD – FLY VIDEO | 369.16 | Yes | 205 |
0008 | ชุดกล้องถ่ายวีดีโอ Panasonic Model VHS รุ่น NV – VX3 | 260.00 | Yes | 177 | ||
04 | Multimedia | 0023 | JAPANESE 1, LIYC | 278.00 | No | 326 |
0055 | JAPANESE 2, LIYC | 278.00 | No | 159 |
ข้อมูลการสั่งซื้อ
รหัสการสั่งซื้อ | รหัสลูกค้า | วันที่สั่งสินค้า | วันที่ส่งสินค้า | รหัสสินค้า | จำนวนสินค้าที่สั่งซื้อ | ส่วนลด (%) |
102258 | 015 | 21/10/94 | 28/10/94 | 0005 | 8 | 25.00% |
0100 | 8 | 0.00% | ||||
0125 | 15 | 0.00% | ||||
10265 | 181 | 21/10/94 | 27/10/44 | 0005 | 31 | 0.00% |
0010 | 15 | 0.00% | ||||
10278 | 213 | 24/10/94 | 3/11/94 | 0007 | 16 | 0.00% |
0008 | 31 | 25.00% | ||||
0023 | 4 | 0.00% |
ข้อมูลลูกค้า
รหัสลูกค้า | ชื่อลูกค้า | ที่อยู่ลูกค้า | รหัสไปรษณีย์ | หมายเลขโทรศัพท์ |
003 | P & S STORE | ชั้น 1 อาจารเสิรมมิตรทาวเวอร์ 159 สุขุมวิท 21 (อโศก) คลองเตย กทม. | 10330 | 250-0750 |
015 | Hope Shop | สมาคมผรั่งเศส 29 ถ.สาธรใต้ ยานนาวา กทม. | 10110 | 240-2865-75 |
181 | The Book Shop | Asia Hotel 296 ถ.พญาไท กทม. | 10330 | 267-8850-5 |
213 | P’S Line | 2675 หมู่ 9 ลาดพร้าว ซ.95 วังทองหลาง บางกะปิ กทม. | 10330 | 253-0123 |
008 | The Bookseller | 428 Rama I Road, Siam Square Bangkok | 10500 | 233-1717 |
กฎการ Normalization
กฎการ Normalization เป็นกฎที่ใช้ในการออกแบบตาราง โดยทั่วไปเราจะใช้กฎการ Normalization นี้ เพียงแค่ 3 ข้อ ก็เพียงพอในการออกแบบตารางโดยทั่วไปแล้ว และถ้าตารางนั้นผ่านกฎข้อที่ 3 ตารางนั้น ก็จะต้องผ่านกฎข้อที่ 1 และ 2 ด้วย แผนภูมิแสดงการ Normalization ในแต่ละขั้นตอน ดังรูป
รูปภาพที่ แสดงแผนภูมิแสดงการ Normalization
รายละเอียดของการใช้กฎ Normalization แต่ละข้อดังต่อไปนี้
กฎข้อที่ 1 (First Normal Form)
กฎข้อที่ 1 กล่าวว่า จะต้องไม่มีเซลใดในตารางที่มีค่าเกินหนึ่งค่า ดังนั้นเราสามารถ ทำให้ตารางผ่านกฎข้อที่ 1 ได้ด้วยการแยกเซลที่มีค่าเกินหนึ่งออกเป็นเรคอร์ดใหม่ เราอธิบายการใช้กฎข้อที่ 1 กับตารางตัวอย่างที่ผ่านมาเรียนไปที่ละตารางต่อไปนี้
1. ตาราง Products
จากตารางนี้ เราสามารถแยกออกเป็นเรคอร์ดใหม่ได้ โดยมีฟิลด์รหัสสินค้า ชื่อ ชนิดสินค้า ซึ่งเป็นฟิลด์ที่เก็บค่าในเซลเกินหนึ่งค่า เพิ่มเข้าไปในแต่ละเรคอร์ดใหม่ และตารางใหม่นี้มีคีย์หลัก คือ รหัสสินค้า เราได้ตารางใหม่ดังนี้
ก่อนการใช้กฎข้อที่ 1
รหัสชนิดสินค้า | ชื่อชนิดสินค้า | รหัสสินค้า | ชื่อสินค้า | ราคาต่อหน่วย | ภาษี | จำนวนในคลัง |
01 | หนังสือ | 005 | คู่มือสำหรับผู้นำในยุค 90 | 219.63 | Yes | 409 |
0100 | พูดอย่างมีวาทะ | 219.63 | Yes | 155 | ||
02 | CD-ROM | 0125 | SALES MANAGER FACTOMATIC | 700.00 | No | 169 |
0051 | SECRETS OF STARGATE | 1842.99 | No | 197 | ||
0010 | US ATLAS | 540.19 | No | 159 | ||
03 | Hardware | 0007 | VIDEOCONVERENCING CARD-FLY VIDEO | 369.16 | Yes | 205 |
0008 | ชุดกล้องถ่ายวีดีโอ Panasonic Mode VHS | 260.00 | Yes | 177 | ||
04 | Multimedia | 0023 | JAPANESE 1, LIYC | 278.00 | No | 326 |
0055 | JAPANESE 2, LIYC | 278.00 | No | 159 |
หลังการใช้กฎข้อที่ 1
รหัสชนิดสินค้า | ชื่อชนิดสินค้า | รหัสสินค้า | ชื่อสินค้า | ราคาต่อหน่วย | ภาษี | จำนวนในคลัง |
01 | หนังสือ | 005 | คู่มือสำหรับผู้นำในยุค 90 | 219.63 | Yes | 409 |
01 | หนังสือ | 0100 | พูดอย่างมีวาทะ | 219.63 | Yes | 155 |
02 | CD-ROM | 0125 | SALES MANAGER FACTOMATIC | 700.00 | No | 169 |
02 | CD-ROM | 0051 | SECRETS OF STARGATE | 1842.99 | No | 197 |
02 | CD-ROM | 0010 | US ATLAS | 540.19 | No | 159 |
03 | Hardware | 0007 | VIDEOCONVERENCING CARD-FLY VIDEO | 369.16 | Yes | 205 |
03 | Hardware | 0008 | ชุดกล้องถ่ายวีดีโอ Panasonic Mode VHS | 260.00 | Yes | 177 |
04 | Multimedia | 0023 | JAPANESE 1, LIYC | 278.00 | No | 326 |
04 | Multimedia | 0055 | JAPANESE 2, LIYC | 278.00 | No | 159 |
2. ตาราง Orders
จากตารางนี้ เราสามารถแยกเป็นเรคอร์ดใหม่ได้ โดยมีฟิลด์ รหัสการสั่งซื้อ รหัสลูกค้า วันที่สั่ง และวันที่ส่ง ซึ่งเป็นฟิลด์ที่เก็บค่าในเซลเกินหนึ่งค่า เพิ่มเข้าไปในแต่ละเรคอร์ดใหม่ และตารางใหม่นี้มีคีย์หลัก คือ ฟิลด์รหัสการสั่งซื้อ และรหัสสินค้า เนื่องจากฟิลด์รหัสการสั่งซื้อ จะไม่ซ้ำกันในแต่ละการสั่งซื้อ และในแต่ละการสั่งซื้อ จะไม่สามารถสั่งสินค้าชนิดเดียวกันซ้ำกันได้ เราได้ตารางดังนี้
ก่อนการใช้กฎข้อที่ 1
รหัสการสั่งซื้อ | รหัสลูกค้า | วันที่สั่งสินค้า | วันที่ส่งสินค้า | รหัสสินค้า | จำนวนสินค้าที่สั่งซื้อ | ส่วนลด (%) |
102258 | 015 | 21/10/94 | 28/10/94 | 0005 | 8 | 25.00% |
0100 | 8 | 0.00% | ||||
0125 | 15 | 0.00% | ||||
10265 | 181 | 21/10/94 | 27/10/44 | 0005 | 31 | 0.00% |
0010 | 15 | 0.00% | ||||
10278 | 213 | 24/10/94 | 3/11/94 | 0007 | 16 | 0.00% |
0008 | 31 | 25.00% | ||||
0023 | 4 | 0.00% |
หลังการใช้กฎข้อที่ 1
รหัสการสั่งซื้อ | รหัสลูกค้า | วันที่สั่งสินค้า | วันที่ส่งสินค้า | รหัสสินค้า | จำนวนสินค้าที่สั่งซื้อ | ส่วนลด (%) |
102258 | 015 | 21/10/94 | 28/10/94 | 0005 | 8 | 25.00% |
102258 | 015 | 21/10/94 | 28/10/94 | 0100 | 8 | 0.00% |
102258 | 015 | 21/10/94 | 28/10/94 | 0125 | 15 | 0.00% |
10265 | 181 | 21/10/94 | 27/10/44 | 0005 | 31 | 0.00% |
10265 | 181 | 21/10/94 | 27/10/44 | 0010 | 15 | 0.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0007 | 16 | 0.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0008 | 31 | 25.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0023 | 4 | 0.00% |
3. ตาราง Customers
ตารางนี้จะไม่มีกลุ่มของฟิลด์ที่ซ้ำกันอยู่แล้ว
กฎข้อที่ 2 (Second Normal Form)
กฎข้อที่ 2 กล่าวว่า ตารางที่ผ่านกฎข้อที่ 2 จะต้องไม่มีแอททริบิวต์ที่ไม่ใช่คีย์ตัวใด (เราเรียกว่า Non-key Attribute) ขึ้นกับส่วนใดส่วนหนึ่งของคีย์หลัก จะต้องขึ้นกับคีย์หลักแบบเต็มๆ เท่านั้น
เราสามารถทำให้ตารางผ่านกฎข้อที่ 2 โดยการแยกฟิลด์ที่ขึ้นเฉพาะกับส่วนหนึ่งของคีย์กับฟิลด์ที่มันขึ้นด้วย ออกมาสร้างเป็นตารางใหม่ เราจะแสดงการใช้กฎข้อที่ 2 ดังต่อไปนี้
1. ตาราง Product และ Customer
ตารางที่ผ่านกฎข้อที่ 2 เนื่องจากคีย์หลักคือ ฟิลด์รหัสสินค้าของตาราง Products และรหัส-ลูกค้าของตาราง Customers ซึ่งฟิลด์อื่นๆ ทุกฟิลด์ขึ้นกับคีย์หลักนี้ทุกฟิลด์
2. ตาราง Orders
ตารางนี้ไม่ผ่านกฎข้อที่ 2 เนื่องจากมีฟิลด์รหัสลูกค้า วันที่ส่ง และวันที่ส่ง จะขึ้นกับฟิลด์รหัสสั่งซื้อเท่านั้น ซึ่งเป็นส่วนหนึ่งของคีย์หลัก (รหัสการสั่งซื้อ และรหัสสินค้า เป็นคีย์หลักแบบ Composite Key) เมื่อใช้กฎข้อที่ 2 แล้วเราจะได้ตาราง 2 ตาราง คือ
- ตารางที่ 1 ชื่อ ตาราง Orders เป็นตารางที่ประกอบด้วยฟิลด์รหัสการสั่งซื้อ ซึ่งเป็นคีย์หลักของตารางใหม่ และฟิลด์ที่ขึ้นกับฟิลด์รหัสการสั่งซื้อเท่านั้น
- ตารางที่ 2 ชื่อ ตาราง OrderDetails เป็นตารางที่ประกอบด้วยฟิลด์รหัสการสั่งซื้อ และรหัสสินค้า ซึ่งเป็นคีย์หลักของตารางเดิม และฟิลด์ที่เหลือจากตารางแรก ตารางนี้จะเก็บข้อมูลการสั่งซื้อแต่ละรายการ ในการสั่งซื้อแต่ละครั้งไว้ เราได้ตารางใหม่ดังตาราง ข้างล่างนี้
ก่อนการใช้กฎข้อที่ 2
รหัสการสั่งซื้อ | รหัสลูกค้า | วันที่สั่งสินค้า | วันที่ส่งสินค้า | รหัสสินค้า | จำนวนสินค้าที่สั่งซื้อ | ส่วนลด (%) |
102258 | 015 | 21/10/94 | 28/10/94 | 0005 | 8 | 25.00% |
102258 | 015 | 21/10/94 | 28/10/94 | 0100 | 8 | 0.00% |
102258 | 015 | 21/10/94 | 28/10/94 | 0125 | 15 | 0.00% |
10265 | 181 | 21/10/94 | 27/10/44 | 0005 | 31 | 0.00% |
10265 | 181 | 21/10/94 | 27/10/44 | 0010 | 15 | 0.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0007 | 16 | 0.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0008 | 31 | 25.00% |
10278 | 213 | 24/10/94 | 3/11/94 | 0023 | 4 | 0.00% |
หลังการใช้กฎข้อที่ 2
รหัสการสั่งซื้อ | รหัสลูกค้า | วันที่สั่งสินค้า | วันที่ส่งสินค้า | รหัสการสั่งซื้อ | รหัสสินค้า | จำนวนสินค้าที่สั่งซื้อ | ส่วนลด (%) | |
102258 | 015 | 21/10/94 | 28/10/94 | 102258 | 0005 | 8 | 25.00% | |
10265 | 181 | 21/10/94 | 27/10/94 | 102258 | 0100 | 8 | 0.00% | |
10278 | 213 | 24/10/94 | 3/11/94 | 102258 | 0125 | 15 | 0.00% | |
10265 | 0005 | 31 | 0.00% | |||||
10265 | 0010 | 15 | 0.00% | |||||
10278 | 0007 | 16 | 0.00% | |||||
10278 | 0008 | 31 | 25.00% | |||||
10278 | 0023 | 4 | 0.00% |
ความสัมพันธ์ระหว่างตารางทั้ง 2 จะเป็นแบบ One – to – Many จากตาราง Orders ไปยังตาราง OrderDetails เนื่องจากการสั่งสินค้า 1 ครั้ง จะสั่งสินค้าได้หลายรายการ
กฎข้อที่ 3 (Third Normal Form)
กฎข้อที่ 3 กล่าวว่า ตารางที่ผ่านกฎข้อที่ 3 จะต้องไม่มีแอททริบิวต์ใดในตารางขึ้นกับแอททริบิวต์อื่นที่ไม่ใช่คียห์หลัก หรือคีย์คู่แข่ง จากที่กล่าวมา เราสามารถทำให้ตารางของเราผ่านกฎข้อที่ 3 ด้วยการแยกฟิลด์ที่ขึ้นกับฟิลด์อื่นๆ นั้นออกมาเป็นตารางใหม่ และคีย์หลักของตารางใหม่จะเป็นฟิลด์ที่ฟิลด์นั้นขึ้นด้วย เราจะแสดงการใช้กฎข้อที่ 3 ดังต่อไปนี้
1. ตาราง Products
ตารางนี้ไม่ผ่านกฎข้อที่ 3 เนื่องจากฟิลด์ชื่อชนิดสินค้าขึ้นกับฟิลด์รหัสชนิดสินค้าที่ไม่ใช่คีย์หลักหรือคีย์คู่แข่ง จากที่กล่าวมา เราสามารถทำให้ตารางของเราผ่านกฎข้อที่ 3 ด้วยการแยกฟิลด์ที่ขึ้นกับฟิลด์อื่นๆ นั้นออกมาเป็นตารางใหม่ และคีย์หลักของตางใหม่จะเป็นฟิลด์ที่ฟิลด์นั้นขึ้นด้วย เราจะแสดงการใช้กฎข้อที่ 3 ดังต่อไปนี้
- ตารางที่ 1 ชื่อ ตาราง Categories เป็นตารางที่ประกอบด้วยฟิลด์รหัสชนิดสินค้า (ที่เป็นคียห์หลักของตารางใหม่) และชื่อชนิดสินค้า ซึ่งเป็นข้อมูลที่เกี่ยวกับชนิดสินค้าเท่านั้น
- ตารางที่ 2 ชื่อตาราง Products เป็นตารางที่ประกอบด้วยฟิลด์ที่มีทั้งหมด ยกเว้นฟิลด์ชื่อชนิดสินค้า โดยมีคีย์หลักเป็นรหัสสินค้าเหมือนตารางเดิม ดังตารางข้างล่างนี้
ก่อนการใช้กฎข้อที่ 3
รหัสชนิดสินค้า | ชื่อชนิดสินค้า | รหัสสินค้า | ชื่อสินค้า | ราคาต่อหน่วย | ภาษี | จำนวนในคลัง |
01 | หนังสือ | 005 | คู่มือสำหรับผู้นำในยุค 90 | 219.63 | Yes | 409 |
01 | หนังสือ | 0100 | พูดอย่างมีวาทะ | 219.63 | Yes | 155 |
02 | CD-ROM | 0125 | SALES MANAGER FACTOMATIC | 700.00 | No | 169 |
02 | CD-ROM | 0051 | SECRETS OF STARGATE | 1842.99 | No | 197 |
02 | CD-ROM | 0010 | US ATLAS | 540.19 | No | 159 |
03 | Hardware | 0007 | VIDEOCONVERENCING CARD-FLY VIDEO | 369.16 | Yes | 205 |
03 | Hardware | 0008 | ชุดกล้องถ่ายวีดีโอ Panasonic Mode VHS | 260.00 | Yes | 177 |
04 | Multimedia | 0023 | JAPANESE 1, LIYC | 278.00 | No | 326 |
04 | Multimedia | 0055 | JAPANESE 2, LIYC | 278.00 | No | 159 |
หลังการใช้กฎข้อที่ 3
รหัสชนิดสินค้า | ชื่อชนิดสินค้า | รหัสชนิดสินค้า | รหัสสินค้า | ชื่อสินค้า | ราคาต่อหน่วย | ภาษี | จำนวนในคลัง | |
01 | หนังสือ | 01 | 0005 | คู่มือสำหรับผู้นำในยุค 90 | 219.63 | Yes | 409 | |
02 | CD-ROM | 01 | 0100 | พูดอย่างมีวาทะ | 219.63 | Yes | 155 | |
03 | Hardware | 02 | 0125 | SALES MANAGER FACTOMATIC | 700.00 | No | 169 | |
04 | Multimedia | 02 | 0051 | SECRETS OF STARGATE | 1842.99 | No | 197 | |
02 | 0010 | US ATLAS | 540.19 | No | 159 | |||
03 | 0007 | VIDEOCONVERENCING CARD-FLY VIDEO | 369.16 | Yes | 205 | |||
03 | 0008 | ชุดกล้องถ่ายวีดีโอ Panasonic Mode VHS | 260.00 | Yes | 177 | |||
04 | 0023 | JAPANESE 1, LIYC | 278.00 | No | 326 | |||
04 | 0055 | JAPANESE 2, LIYC | 278.00 | No | 159 |
และความสัมพันธ์ของตารางทั้ง 2 เป็นแบบ One – to – Many จากตาราง Categories ไปยังตาราง Products เนื่องจากชนิดสินค้าหนึ่งสามารถมีสินค้าได้หลายอย่าง
2. ตาราง Order, OrderDetail และ Customer
ตารางทั้งสามนี้ ผ่านกฎข้อที่ 3 ทั้งหมด เนื่องจากฟิลด์ทุกตัวในตารางขึ้นกับคีย์หลักทั้งหมด ไม่ได้ขึ้นกับฟิลด์อื่นๆ เลย
กฎการ Normalization ข้อที่ 3 นี้ เราเรียกว่า BCNF (Boyce/Codd Normal Form ซึ่งเป็นกฎข้อที่ 3 ที่ได้รับการปรับปรุงขึ้นใหม่)
กฎข้อที่ 4 (Fourth Normal Form)
กฎข้อที่ 4 กล่าวว่า ตารางที่ผ่านกฎข้อที่ 4 จะต้องไม่มีการขึ้นต่อกันแบบเชิงกลุ่ม (Multivalued Dependency) ซึ่งเป็นความสัมพันธ์แบบ Many – to – Many ภายในตารางเดียวกัน เช่น ในตารางเดียวกันจะมีฟิลด์ B ที่ขึ้นต่อฟิลด์ A โดยการขึ้นต่อกันนี้เป็นอิสระจากอีกฟิลด์หนึ่ง คือ ฟิลด์ C เราสามารถทำให้ตาราง
ตารางตั้งต้น
รหัสนักศึกษา | ชื่อนักศึกษา | รหัสอาจารย์ที่ปรึกษา | ชื่อวิชา |
2001 | แดง | 1001 1002 | ภาษาอังกฤษ ประวัติศาสตร์ ภาษาเยอรมัน |
2002 | ดำ | 1003 | ภาษาญี่ปุ่น คณิตศาสตร์ |
2003 | เขียว | 1004 1005 | ภาษาอังกฤษ ประวัติศาสตร์ |
สามารถแปลงเป็น First Normal Form ได้ดังตารางนี้
รหัสนักศึกษา | ชื่อนักศึกษา | รหัสอาจารย์ที่ปรึกษา | ชื่อวิชา |
2001 | แดง | 1001 | ภาษาอังกฤษ |
2001 | แดง | 1001 | ประวัติศาสตร์ |
2001 | แดง | 1001 | ภาษาเยอรมัน |
2001 | แดง | 1002 | ภาษาอังกฤษ |
2001 | แดง | 1002 | ประวัติศาสตร์ |
2001 | แดง | 1002 | ภาษาเยอรมัน |
2002 | ดำ | 1003 | ภาษาญี่ปุ่น |
2002 | ดำ | 1003 | คณิตศาสตร์ |
2003 | เขียว | 1004 | ภาษาอังกฤษ |
2003 | เขียว | 1004 | ประวัติศาสตร์ |
2003 | เขียว | 1004 | ภาษาอังกฤษ |
2003 | เขียว | 1004 | ประวัติศาสตร์ |
เนื่องจากตารางที่กล่าวมานี้เป็นตารางที่ผ่านกฎข้อที่ 3 คือ ไม่มีแอททริบิวต์ใดขึ้นกับแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก หรือคีย์คู่แข่ง แต่ไม่ผ่านกฎข้อที่ 4 เนื่องจากมีการขึ้นต่อกับเชิงกลุ่ม เช่น นักศึกษาชื่อ แดงมีอาจารย์ที่ปรึกษา 2 คน แต่ลงวิชาเรียนไป 3 วิชา ซึ่งรหัสอาจารย์ที่ปรึกษา กับชื่อวิชาที่ลงไปเป็นข้อมูลที่ไม่ขึ้นต่อกัน ซึ่งเราสามารถปรับให้เป็น 4NF ได้ด้วยการทำแบ่งตารางนี้ออกเป็น 2 ตารางต่อไป ซึ่งตารางทั้งสองจะประกอบด้วยแอตทริบิวต์ที่เกี่ยวข้องกันเท่านั้น
รหัสนักศึกษา | ชื่อนักศึกษา | รหัสอาจารย์ที่ปรึกษา | รหัสนักศึกษา | ชื่อนักศึกษา | ชื่วิชา | |
2001 | แดง | 1001 | 2001 | แดง | ภาษาอังกฤษ | |
2001 | แดง | 1002 | 2001 | แดง | ประวัติศาสตร์ | |
2002 | ดำ | 1003 | 2001 | แดง | ภาษาเยอรมัน | |
2003 | เขียว | 1004 | 2002 | ดำ | ภาษาญี่ปุ่น | |
2003 | เขียว | 1005 | 2002 | ดำ | คณิตศาสตร์ | |
2003 | เขียว | ภาษาอังกฤษ | ||||
ตารางที่ผ่านการใช้กฎข้อที่ 4 | 2003 | เขียว | ประวัติศาสตร์ |
โดยทั่วไปแล้ว การ Normalization นั้น เราใช้ถึงกฎข้อที่ 3 ก็เพียงพอแล้ว เนื่องจากมีตารางน้อยมากที่จะต้องใช้กฎข้อที่ 4
สรุปตารางที่ออกแบบได้ทั้งหมด
ในหัวข้อนี้ เราจะสรุปตารางที่ออกแบบเสร็จแล้ว โดยการ Normalization ที่ผ่านมาเราสามารถสรุปตารางที่ออกแบบได้ดังรูปต่อไปนี้
เนื่องจากตัวอย่างทุกๆ ตัวอย่างจะใช้ชื่อฟิลด์ทุกๆ ตัวเป็นชื่อภาษาอังกฤษเพื่อให้มีความเป็นมาตรฐานและเข้าใจได้ง่ายขึ้นดังนั้นจากรูปข้างต้นเราสามารถสรุปตารางออกมาได้เป็นชื่อฟิลด์เป็นภาษาอังกฤษได้ดังรูป
โดยสรุปแล้ว ความเข้าใจความหมายและการออกแบบฐานข้อมูลเป็นความเข้าใจพื้นฐานที่ต้องมีในเบื้องต้น ก่อนที่จะใช้โปรแกรมจัดการฐานข้อมูลใด ๆ นั่นคือ ความเข้าใจในองค์ประกอบของฐานข้อมูล ได้แก่ เอนทิตี้ แอตทริบิวต์ และความสัมพันธ์ รวมถึงความเข้าใจเรื่อง Normalization ได้แก่ ชนิดคีย์ต่างๆและกฎของการ Normalization ซึ่งเป็นหัวใจสำคัญในการออกแบบฐานข้อมูล
อ้างอิง
อ.เอกรินทร์ คำคูณ. การใช้โปรแกรมการจัดการฐานข้อมูล Acess เวอร์ชั่น 2007 .กรุงเทพฯ :ซัคเซส มีเดีย,2554
0 ความคิดเห็น