ระบบแฟ้มข้อมูล

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

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

ระบบแฟ้มประกอบด้วย 3 ส่วน คือ 1)รวบรวมแฟ้ม (Collection of Files) เก็บข้อมูลที่สัมพันธ์ให้ถูกอ้างอิงได้ในรูปแฟ้มข้อมูล 2)โครงสร้างแฟ้ม (Directory Structure) จัดการอำนวยการเข้าถึงแฟ้มและจัดกลุ่มอย่างเป็นระบบ 3)พาทิชัน (Partitions) ซึ่งแยกเป็นทางกายภาพ (Physically) หรือทางตรรก (Logically) ของระบบไดเรกทรอรี่ (Directory) โดยเนื้อหาในบทนี้จะกล่าวถึงแฟ้ม และโครงสร้างไดเรกทรอรี่ รวมถึงการป้องกันแฟ้ม จากการเข้าถึงในระบบ Multiple users และระบบ File sharing

วิธีการจัดเก็บข้อมูลที่ใช้กันใน OS ทุกตัวคือ จัดเก็บข้อมูลเป็นแฟ้มข้อมูลหรือไฟล์ (file) ไฟล์คือสิ่งที่บรรจุข้อมูล,โปรแกรมหรืออะไรก็ได้ที่ผู้ใช้ต้องการรวบรวมไว้เป็นชุดเดียวกัน การอ้างถึงไฟล์หรือข้อมูลต่าง ๆ ภายในไฟล์ของโปรแกรม จะไม่มีความเกี่ยวข้องกับแอดเดรสของโปรแกรมใด ๆ ทั้งสิ้น OS มีโอเปอร์เรชั่นพิเศษที่เรียกว่า system call ไว้ให้โปรแกรมเรียกใช้ เพื่อให้สามารถจัดการงานที่เกี่ยวกับไฟล์ได้

วิธีการจัดเก็บไฟล์ที่ใช้กันอยู่ทั่วไปมี 3 วิธี

1. เก็บเป็นไบต์เรียงกันไป UNIX เก็บไฟล์ในลักษณะนี้

2. เก็บเป็นเรคคอร์ด เรคคอร์ดจะมีขนาดคงที่สามารถจะอ่านหรือเขียนที่เรคคอร์ดไหนก็ได้ แต่ไม่สามารถเพิ่มหรือลบเรคคอร์ดกลาง ๆ ได้ วิธีนี้ใช้ใน CP/M

3. เก็บแบบต้นไม้หรือทรีของบล็อก (ในดิสก์) แต่ละบล็อกจะสามารถมี ก เรคคอร์ด แต่ละเรคคอร์ดจะมีคีย์ (key) เอาไว้ช่วยในการค้นหาเรคคอร์ด เรคคอร์ดสามารถเพิ่มหรือลบออกที่ใดก็ได้ ถ้ามีเรคคอร์ดถูกเพิ่มเข้าไปในบล็อกที่เต็มแล้ว บล็อกนั้นก็จะแยกออกเป็น 2 บล็อกใหม่ในทรีและจัดเรียงตามลำดับอักษร วิธีนี้ใช้บนเครื่องระดับเมนเฟรมหลายเครื่อง และเรียกว่า ISAM (indexed sequential access method)

 

 

 

 

ปัญหาแฟ้มข้อมูล

§   ความซ้ำซ้อนของข้อมูล

§  ความไม่สอดคล้องกันของข้อมูล

§   ขาดความยืดหยุ่น

§  ความไม่ปลอดภัยของข้อมูล

§  ขาดความเป็นอันหนึ่งอันเดียวกันของข้อมูล

§  ข้อมูลมีความสัมพันธ์ลักษณะขึ้นต่อกันกับโปรแกรม

§  ข้อมูลแยกอิสระต่อกัน

§  ขาดการใช้ข้อมูลร่วมกัน

 

 ระบบฐานข้อมูล (Database System)

หมายถึง โครงสร้างสารสนเทศที่ประกอบด้วยรายละเอียดของข้อมูลที่เกี่ยวข้องกันที่จะนำมาใช้ในระบบต่าง ๆ ร่วมกัน

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

 

นิยามและคำศัพท์พื้นฐานเกี่ยวกับระบบฐานข้อมูล

บิท (Bit) หมายถึง หน่วยของข้อมูลที่มีขนาดเล็กที่สุด

ไบท์ (Byte) หมายถึง หน่วยของข้อมูลที่กิดจากการนำบิทมารวมกันเป็นตัวอักขระ (Character)

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

ระเบียน (Record) หมายถึง หน่วยของข้อมูลที่เกิดจากการนเอาเขตข้อมูลหลาย ๆ เขตข้อมูลมารวมกัน เพื่อเกิดเป็นข้อมูลเรื่องใดเรื่องหนึ่ง เช่น ข้อมูลของนักศึกษา 1 ระเบียน (1 คน) จะประกอบด้วย

รหัสประจำตัวนักศึกษา 1 เขตข้อมูล

ชื่อนักศึกษา 1 เขตข้อมูล

ที่อยู่ 1 เขตข้อมูล

แฟ้มข้อมูล (File) หมายถึงหน่วยของข้อมูลที่เกิดจากการนำข้อมูลหลาย ๆ ระเบียนที่เป็นเรื่องเดียวกันมารวมกัน เช่น แฟ้มข้อมูลนักศึกษา แฟ้มข้อมูลลูกค้า แฟ้มข้อมูลพนักงาน

ส่วนในระบบฐานข้อมูล มีคำศัพท์ต่าง ๆ ที่เกี่ยวข้องดังนี้

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

ไว้ เช่น เอนทิตี้ลูกค้า เอนทิตี้พนักงาน

- เอนทิตี้ชนิดอ่อนแอ (Weak Entity) เป็นเอนทิตี้ที่ไม่มีความหมาย หากขาดเอนทิตี้อื่นในฐานข้อมูล

แอททริบิวต์(Attribute) หมายถึง รายละเอียดข้อมูลที่แสดงลักษณะและคุณสมบัติของเอนทิตี้หนึ่ง ๆ เช่น

เอนทิตี้นักศึกษา ประกอบด้วย - แอทริบิวต์รหัสนักศึกษา

- แอททริบิวต์ชื่อนักศึกษา

- แอททริบิวต์ที่อยู่นักศึกษา

 

ระบบการจัดการฐานข้อมูล (Database Management Systems – DBMS)

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

ประเภทของ DBMS

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

ส่วนประกอบของ DBMS

1.              โมเดลของข้อมูล (Data Model)

                ทำหน้าที่กำหนดรูปแบบของโครงสร้างของข้อมูล เช่น จะเป็นลำดับขั้น (hierarchy) หรือ แบบเครือข่าย (network) หรือ แบบความสัมพันธ์ (relational)

2.              ภาษาคำจำกัดความของข้อมูล (Data Definition Language – DDL)

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

3.              ภาษาในการจัดการข้อมูล (Data Manipulation Language – DML)

                เป็นภาษาที่ใช้ในการถามเกี่ยวกับเนื้อหาในฐานข้อมูล หรือใช้เป็นการเก็บหรือปรับปรุงข้อมูลให้ทันสมัย และการพัฒนา application นอกจากนี้ยังช่วยให้ผู้ใช้สามารถดึง จัดเรียง แสดงผล ลบข้อมูล ในฐานข้อมูลได้ด้วย ภาษาที่ใช้ในการจัดการข้อมูล อาจจะใช้ภาษา ยุคที่ 3 ยุคที่ 4 หรือ Object-Oriented ก็ได้

 

4.              พจนานุกรมข้อมูล (Data Dictionary)

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

 

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

องค์ประกอบของฐานข้อมูลขึ้นอยู่กับมุมมองของการสร้างข้อมูล และมุมมองในลักษณะโครงสร้างลำดับชั้นของข้อมูล ซึ่งมี 2 ประเภท ดังต่อไปนี้

1. องค์ประกอบฐานข้อมูลโดยพิจารณาจากการสร้างฐานข้อมูล

                1) เอนติตี้ (Entity) เป็นเรื่องเกี่ยวกับบุคคล สถานที่ สิ่งของ หรือเหตุการณ์ที่ต้องการเก็บข้อมูล

                2) ลักษณะเฉพาะของเอนติตี้ (Data items หรือ Attribute) คือลักษณะของเอนติตี้ที่ต้องการเก็บข้อมูล เช่น เอนติตี้ของนักศึกษาประกอบด้วย attribute คือ รหัสนักศึกษา, ชื่อ, สกุล, คณะ, กลุ่ม ฯลฯ

3) ระเบียนหรือเรคคอร์ด (Records) คือ ชุดของลักษณะเฉพาะที่เกี่ยวกับเอนติตี้หนึ่ง ๆ ซึ่งจะใช้ในการประมวลผลด้วยกัน

                4) แฟ้มข้อมูล (File) ประกอบด้วยเรคคอร์ดที่สัมพันธ์กันหลาย ๆ อันมารวมกัน เช่น แฟ้มข้อมูลพนักงานจะประกอบด้วยเรคคอร์ดของพนักงานแต่ละคน

                5) ฐานข้อมูล (Database) ประกอบด้วยแฟ้มข้อมูลหลาย ๆ แฟ้มที่มีความสัมพันธ์กันมารวมกัน

2. องค์ประกอบฐานข้อมูลพิจารณาจากโครงสร้างข้อมูลตามลำดับชั้น

                1) บิต (Bit) เป็นตัวแทนของหน่วยที่เล็กที่สุดของข้อมูล ที่ประมวลผลโดยคอมพิวเตอร์ (0 1)

                2) ไบต์ (Byte) เป็นตัวอักษรหรือตัวเลขหรือสัญลักษณ์ 1 ตัว บางครั้งอาจจะเรียกว่าอักขระ (Character)

                 3) ฟิลด์(Bit) เป็นหน่วยที่เล็กที่สุดในลำดับขั้นข้อมูลที่มนุษย์สามารถแปลความหมายได้ เกิดจากการนำอักขระหลาย ๆ ตัวมารวมกัน ทำให้มีความหมายหรือเป็นคำขึ้นมา

4) ระเบียนหรือเรคคอร์ด (Record) เป็นการรวมกลุ่มฟิลด์หลาย ๆ ฟิลด์ที่มีความสัมพันธ์กันมารวมกันอย่างมีความหมาย

                5) ไฟล์ (File) หรือแฟ้มข้อมูล เป็นการนำเรคคอร์ดหลาย ๆ เรคคอร์ดที่เกี่ยวพันกันมารวมกัน

                6) ฐานข้อมูล (Database) ประกอบด้วยหลาย ๆ ไฟล์ที่เกี่ยวพันกันมารวมกัน

 

ความสัมพันธ์ของข้อมูล

ความสัมพันธ์ของข้อมูลแบ่งเป็น 3 ประเภทคือ

                1) ความสัมพันธ์แบบ One to One คือความสัมพันธ์ของข้อมูล 2 ตัว ที่มีลักษณะ 1 ต่อ 1 หรือข้อมูลตัวหนึ่ง จะมีความสัมพันธ์กับข้อมูลอีกตัวหนึ่งได้เพียงค่าเดียวเท่านั้น

                2) ความสัมพันธ์แบบ One to Many คือ ความสัมพันธ์ซึ่งข้อมูลตัวหนึ่งมีความสัมพันธ์กับข้อมูลตัวอื่นได้หลายอย่าง

                3) ความสัมพันธ์แบบ Many to Many คือ ความสัมพันธ์ซึ่งข้อมูลตัวหนึ่งมีหลายค่า และมีความสัมพันธ์กับข้อมูลตัวอื่นได้หลายอย่าง เช่น มีวิชาที่เปิดสอนหลายวิชา แต่ละวิชามีนักศึกษาหลายคน

 

ประเภทของการออกแบบฐานข้อมูล

1.             ฐานข้อมูลแบบลำดับชั้น(Hierarchical Database Model)

2.             ฐานข้อมูลแบบเครือข่าย(Network Database Model)

3.             ฐานข้อมูลแบบสัมพันธ์(Relational Database Model)

ฐานข้อมูลแบบลำดับชั้น

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

ข้อมูลที่ใช้ฐานข้อมูลลำดับชั้นจะต้องเป็นข้อมูลที่มีความสัมพันธ์แบบ one to one หรือ one to many เท่านั้น

ข้อดี

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

ข้อจำกัด

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

ฐานข้อมูลแบบเครือข่าย

คล้ายกับฐานข้อมูลแบบลำดับชั้น แต่ข้อมูลมีความสัมพันธ์กันในลักษณะ many to many เท่านั้น

 

 

ข้อดี

ข้อมูลที่อยู่ในเครือข่ายไม่มีข้อจำกัดเรื่องความสัมพันธ์ มีความสอดคล้องในโลกของความเป็นจริงมากกว่า

ข้อจำกัด

มีความซับซ้อนมาก โดยเฉพาะถ้ามีการเพิ่มลบข้อมูลและความสัมพันธ์ การทำงานจะซับซ้อนมากและการบำรุงรักษาจะยากขึ้นตามไปด้วย

ฐานข้อมูลแบบสัมพันธ์

ใช้ตารางเพื่อเก็บข้อมูลให้เป็นระเบียบ ตารางเหล่านี้เรียกว่า ตารางความสัมพันธ์(relations)

การออกแบบฐานข้อมูลแบบความสัมพันธ์จะประกอบด้วยตารางที่มีขนาดไม่ใหญ่มากนักหลายๆ ตาราง

แต่ละแถวแนวนอนเรียกว่า row

ในตารางจะบรรจุข้อมูลเป็นชุดๆ เรียกว่า record

ข้อมูล 1 ชนิดในแต่ละชุดเรียกว่า field

ข้อดี

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

ü มีความยืดหยุ่นต่อผู้ใช้สูง และสามารถนำไปใช้กับแอพพลิเคชันได้หลายอย่าง

ü มองเห็นโครงสร้างข้อมูลได้ง่าย โดยพิจารณาจากตาราง

ข้อจำกัด

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

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

•      มีความเป็นอันหนึ่งอันเดียวกันของข้อมูลน้อย เมื่อเปรียบเทียบกับแบบลำดับชั้นหรือแบบเครือข่าย

 

 

 

 

 

 

การออกแบบฐานข้อมูลเบื้องต้น

กระบวนการออกแบบประกอบด้วยขั้นตอนต่อไปนี้

•                   กำหนดวัตถุประสงค์ของฐานข้อมูลของคุณ  

•                   ค้นหาและจัดระเบียบข้อมูลที่ต้องการ   

•                   แบ่งข้อมูลลงในตารางต่างๆ  

•                   เปลี่ยนรายการของข้อมูลให้เป็นคอลัมน์ต่างๆ  

•                   ระบุคีย์หลัก  

•                   กำหนดความสัมพันธ์ของตาราง  

•                   การปรับการออกแบบให้ดียิ่งขึ้น  

•                   การใช้กฎ Normalization  

การกำหนดวัตถุประสงค์ของฐานข้อมูลของคุณ

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

การค้นหาและการจัดระเบียบข้อมูลที่ต้องการ

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

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

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

บุคคลกำลังจินตนาการเกี่ยวกับรายงานสินค้าคงคลังของผลิตภัณฑ์

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

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

เป็นเรื่องสมเหตุสมผลที่จะสร้างแบบตัวอย่างของรายงานหรือรายการผลลัพธ์ แล้วพิจารณาว่ารายการใดที่คุณต้องการสร้างเป็นรายงาน ตัวอย่างเช่น เมื่อคุณตรวจสอบฟอร์มจดหมาย อาจทำให้นึกอะไรได้หลายอย่าง ตัวอย่างเช่น ถ้าคุณต้องการใส่คำทักทายที่เหมาะสม คุณต้องสร้างรายการคำทักทายด้วยสตริงที่เริ่มคำขึ้นต้นจดหมายว่า "คุณ" หรือ "Mr." "Mrs." หรือ "Ms." และคุณอาจเริ่มต้นจดหมายแบบทั่วไปด้วย “เรียน คุณสิทธิชัย” แทนที่จะเป็น “เรียน คุณสิทธิชัย ตันติแสงอรุณ" หรือ "Dear Mr. Smith” แทนที่จะเป็น “Dear Mr. Sylvester Smith” ดังนี้คุณจึงรู้ว่าควรเก็บชื่อกับนามสกุลไว้แยกกัน

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

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

หลังจากรวบรวมข้อมูลนี้แล้ว คุณก็จะพร้อมสำหรับขั้นตอนต่อไป

การแบ่งข้อมูลลงในตารางต่างๆ

เมื่อต้องการแบ่งข้อมูลลงในตาราง ให้เลือกข้อมูลเฉพาะตัวหรือเรื่องสำคัญ ตัวอย่างเช่น หลังจากค้นหาและจัดระเบียบข้อมูลสำหรับฐานข้อมูลการขายสินค้าแล้ว รายการเบื้องต้นอาจเป็นดังนี้

รายการข้อมูลที่เขียนด้วยลายมือถูกจัดกลุ่มตามหัวเรื่อง

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

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

รูปแสดงตารางที่มีทั้งข้อมูลเกี่ยวกับผลิตภัณฑ์และผู้จำหน่ายผลิตภัณฑ์

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

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

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

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

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

การเปลี่ยนรายการข้อมูลให้เป็นคอลัมน์

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

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

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

รายการต่อไปนี้จะแสดงเคล็ดลับสองสามประการในการกำหนดคอลัมน์ของคุณ

ไม่รวมข้อมูลจากการคำนวณ  

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

เก็บข้อมูลในส่วนตรรกะที่เล็กที่สุด  

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

ชุดของรายการข้อมูลในระหว่างกระบวนการออกแบบ

เมื่อคุณปรับปรุงคอลัมน์ข้อมูลในแต่ละตารางเรียบร้อยแล้ว คุณก็พร้อมที่จะเลือกคีย์หลักของตารางแต่ละตาราง

การระบุคีย์หลัก

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

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

คีย์หลักต้องมีค่าเสมอ ถ้าค่าของคอลัมน์นั้นไม่มีหรือไม่ทราบค่า (ค่าที่หายไป) จะไม่สามารถใช้เป็นส่วนหนึ่งของคีย์หลักได้

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

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

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

 

รูปแสดงตารางผลิตภัณฑ์ที่มีเขตข้อมูลคีย์หลัก

บรรยายภาพ 1 มีอยู่บ่อยครั้งที่คอลัมน์ที่ตั้งค่าเป็นชนิดข้อมูล AutoNumber มักจะสามารถใช้เป็นคีย์หลักที่ดีได้ เนื่องจากไม่มีหมายเลขผลิตภัณฑ์ที่ตรงกันสองรายการ

 

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

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

รูปแสดงรายการข้อมูลต่างๆ ในระหว่างกระบวนการออกแบบ

 

การสร้างความสัมพันธ์ของตาราง

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

 

ฟอร์มใบสั่งซื้อ

บรรยายภาพ 1 ข้อมูลในฟอร์มนี้มาจากตารางลูกค้า...

บรรยายภาพ 2 ...ตารางพนักงาน...

บรรยายภาพ 3 ...ตารางใบสั่งซื้อ...

บรรยายภาพ 4 ...ตาราง ผลิตภัณฑ์...

บรรยายภาพ 5 ...และตารางรายละเอียดใบสั่งซื้อ

 

Access เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ ในฐานข้อมูลเชิงสัมพันธ์ คุณแบ่งข้อมูลออกเป็นตารางตามหัวเรื่องแยกจากกัน จากนั้นคุณใช้ความสัมพันธ์ของตารางนำข้อมูลมารวมกันตามต้องการ

การสร้างความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม

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

กรอบความคิดแบบหนึ่ง-ต่อ-กลุ่ม

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

คอลัมน์ ID ผู้จำหน่ายในตารางผลิตภัณฑ์เรียกว่า Foreign Key ซึ่งเป็นคีย์หลักของอีกตารางหนึ่ง คอลัมน์ ID ผู้จำหน่ายในตารางผลิตภัณฑ์เป็น Foreign Key เนื่องจากคอลัมน์นี้เป็นคีย์หลักในตารางผู้จำหน่ายด้วย

ชุดของรายการข้อมูลในระหว่างกระบวนการออกแบบ

คุณรวมตารางที่สัมพันธ์กันด้วยการจับคู่ระหว่างคีย์หลักกับ Foreign Key ถ้าคุณไม่แน่ใจว่าตารางใดควรใช้คอลัมน์ร่วมกัน การระบุความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่มจะทำให้แน่ใจว่าตารางสองตารางที่เกี่ยวข้องกันนั้นต้องใช้คอลัมน์ร่วมกันจริง

การสร้างความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม

ให้พิจารณาความสัมพันธ์ระหว่างตารางผลิตภัณฑ์และตารางใบสั่งซื้อ

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

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

คำตอบคือการสร้างตารางที่สามขึ้น ซึ่งมักจะเรียกว่าตารางเชื่อมต่อ (junction table) ซึ่งจะแตกความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มลงเป็นความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่มจำนวนสองความสัมพันธ์ ให้คุณแทรกคีย์หลักจากแต่ละตารางลงในตารางที่สาม ผลที่ได้คือตารางที่สามจะบันทึกแต่ละรายการหรืออินสแตนซ์ของความสัมพันธ์ไว้

ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม

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

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

ตารางใบสั่งซื้อและตารางรายละเอียดใบสั่งซื้อมีความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม ใบสั่งซื้อแต่ละใบสามารถมีรายการบรรทัดได้มากกว่าหนึ่งรายการ แต่รายการบรรทัดแต่ละรายการจะเชื่อมต่อกับใบสั่งซื้อเพียงหนึ่งใบเท่านั้น

ตารางผลิตภัณฑ์และตารางรายละเอียดใบสั่งซื้อมีความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม ผลิตภัณฑ์แต่ละรายการสามารถมีบรรทัดรายการหลายบรรทัดที่สัมพันธ์อยู่ด้วยกัน แต่บรรทัดของรายการแต่ละบรรทัดจะอ้างอิงถึงผลิตภัณฑ์เพียงหนึ่งรายการเท่านั้น

จากตารางรายละเอียดใบสั่งซื้อ คุณสามารถกำหนดให้มีผลิตภัณฑ์ทั้งหมดในใบสั่งซื้อเฉพาะใบ นอกจากนี้คุณยังสามารถกำหนดให้ใบสั่งซื้อทุกใบมีผลิตภัณฑ์ใดผลิตภัณ์หนึ่งโดยเฉพาะได้

หลังจากรวมตารางรายละเอียดใบสั่งซื้อแล้ว รายการของตารางและเขตข้อมูลอาจมีลักษณะดังต่อไปนี้

ชุดของรายการข้อมูลในระหว่างกระบวนการออกแบบ

 

การสร้างความสัมพันธ์แบบหนึ่ง-ต่อ-หนึ่ง

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

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

ถ้าตารางทั้งสองตารางนี้มีหัวเรื่องเดียวกัน คุณอาจตั้งค่าความสัมพันธ์ด้วยการใช้คีย์หลักเดียวกันในทั้งสองตาราง

ถ้าตารางสองตารางมีหัวเรื่องที่ต่างกันและมีคีย์หลักที่ต่างกัน ให้เลือกตารางหนึ่งตาราง (ตารางใดก็ได้) และแทรกคีย์หลักของตารางนั้นลงในอีกตารางหนึ่งเป็น Foreign Key

การกำหนดความสัมพันธ์ระหว่างตารางต่างๆ จะช่วยให้คุณแน่ใจว่าคุณมีตารางและคอลัมน์ที่ถูกต้องแล้ว เมื่อมีความสัมพันธ์แบบหนึ่ง-ต่อ-หนึ่งหรือแบบหนึ่ง-ต่อ-กลุ่มอยู่ ตารางต่างๆ ที่เกี่ยวข้องจะต้องมีคอลัมน์ร่วมกันอย่างน้อยหนึ่งคอลัมน์ เมื่อมีความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มอยู่ จะต้องมีตารางที่สามสำหรับแสดงความสัมพันธ์ดังกล่าว

การปรับการออกแบบให้ดียิ่งขึ้น

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

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

ขณะที่คุณลองใช้ฐานข้อมูลในขั้นเริ่มต้น คุณอาจพบสิ่งที่ต้องปรับปรุง สิ่งที่ควรตรวจสอบไม่กี่อย่างมีดังนี้

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

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

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

คุณมีตารางซึ่งมีเขตข้อมูลจำนวนมาก มีจำนวนระเบียนที่จำกัด และมีเขตข้อมูลว่างจำนวนมากในแต่ละระเบียนหรือไม่ ถ้ามี ลองนึกถึงการออกแบบตารางใหม่เพื่อให้มีเขตข้อมูลน้อยลงและมีระเบียนมากขึ้น

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

แต่ละคอลัมน์มีข้อมูลเกี่ยวกับหัวเรื่องของตารางหรือไม่ ถ้าคอลัมน์ไม่มีข้อมูลเกี่ยวกับหัวเรื่องของตาราง แสดงว่าหัวเรื่องดังกล่าวอยู่ในตารางอื่น

ความสัมพันธ์ทั้งหมดระหว่างตารางถูกแสดงให้เห็นผ่านเขตข้อมูลที่ใช้ร่วมกันหรือตารางที่สามหรือไม่ ความสัมพันธ์แบบหนึ่ง-ต่อ-หนึ่งและแบบหนึ่ง-ต่อ-กลุ่มจะต้องมีคอลัมน์ร่วมกัน ความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่มต้องการตารางที่สาม

การปรับปรุงตารางผลิตภัณฑ์

สมมติว่าผลิตภัณฑ์แต่ละชนิดในฐานข้อมูลการขายผลิตภัณฑ์อยู่ในประเภททั่วไป เช่น เครื่องดื่ม เครื่องเทศ หรืออาหารทะเล ตารางผลิตภัณฑ์ควรจะมีเขตข้อมูลที่แสดงประเภทของผลิตภัณฑ์แต่ละชนิดด้วย

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

ทางแก้ปัญหาที่ดีกว่าคือให้ "ประเภท" เป็นหัวเรื่องใหม่ในฐานข้อมูลที่จะติดตามโดยมีตารางและคีย์หลักเป็นของตัวเอง จากนั้นคุณสามารถเพิ่มคีย์หลักจากตารางประเภทให้เป็น Foreign Key ในตารางผลิตภัณฑ์ได้

ตารางประเภทและตารางผลิตภัณฑ์มีความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม นั่นคือ ประเภทหนึ่งอาจมีผลิตภัณฑ์มากกว่าหนึ่งอย่าง แต่ผลิตภัณฑ์หนึ่งจะอยู่ในประเภทเดียวเท่านั้น

เมื่อคุณตรวจทานโครงสร้างตารางของคุณ ให้มองหากลุ่มที่ซ้ำกัน ตัวอย่างเช่น พิจารณาตารางซึ่งมีคอลัมน์ต่อไปนี้

หมายเลขผลิตภัณฑ์

ชื่อ

หมายเลขผลิตภัณฑ์1

ชื่อ1

หมายเลขผลิตภัณฑ์2

ชื่อ2

หมายเลขผลิตภัณฑ์3

ชื่อ3

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

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

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

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

การใช้กฎ Normalization

คุณสามารถใช้กฎ Normalization ข้อมูล (บางครั้งเรียกแค่ว่า กฎ Normalization) ในขั้นต่อไปของการออกแบบ คุณใช้กฎเหล่านี้เพื่อดูว่าตารางของคุณมีโครงสร้างที่ถูกต้องหรือไม่ กระบวนการใช้กฎเหล่านี้กับการออกแบบฐานข้อมูลเรียกว่าการ Normalizing ฐานข้อมูล หรือ Normalization

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

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

รูปแบบปกติที่หนึ่ง

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

รูปแบบปกติที่สอง

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

ID ใบสั่งซื้อ (คีย์หลัก)

หมายเลขผลิตภัณฑ์ (คีย์หลัก)

ชื่อผลิตภัณฑ์

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

รูปแบบปกติที่สาม

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

อธิบายได้อีกอย่างว่า แต่ละคอลัมน์ที่ไม่ใช่คีย์ต้องขึ้นกับคีย์หลักทั้งหมดและต้องขึ้นกับคีย์หลักอย่างเดียวเท่านั้น ตัวอย่างเช่น สมมติว่าคุณมีตารางซึ่งมีคอลัมน์ต่อไปนี้ คือ

หมายเลขผลิตภัณฑ์ (คีย์หลัก)

ชื่อ

ราคาขายปลีก

ส่วนลด

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

 

แนวโน้มของฐานข้อมูล

Object-Oriented Database Model

Hypermedia

Data Warehouse

Data Mining

Object-Oriented Database Model

± OODB หรือ O-O Database Model

± เป็นการจัดการข้อมูลโดยการเก็บทั้งข้อมูลและวิธีการจัดการข้อมูลไว้ในอ็อบเจ็ค(Object) ซึ่งสามารถดึงและใช้งานร่วมกันได้โดยอัตโนมัติ

องค์ประกอบที่สำคัญของ OODB

± อ็อบเจ็ค(Object):เป็นข้อมูลจำนวนมามากนักที่นำมารวมกันมีความหมายเหมือนกับแอนติตี้ ซึ่งเป็นตัวแทนของคน สถานที่ สิ่งของ แต่อ็อบเจ็คจะรวมถึงกระบวนการหรือวิธการที่เกี่ยวข้องกับการประมวลผลข้อมูลด้วย

± แอตตริบิวต์(Attribute): เป็นลักษณะของ อ็อบเจ็ค ในช่วงเวลาหนึ่งๆ เช่น อายุของพนักงาน

± วิธีการ(Method):หรือพฤติกรรมของอ็อบเจ็ค เมื่อเกิดการปฏิบัติการขึ้นจะมีการส่งข้อมูลไปยังอ็อบเจ็คที่ส่งมา เพื่อจะกระตุ้นให้เกิดปฏิบัติการอื่นที่ต่อเนื่องกัน

Hypermedia database

± เป็นการจัดการข้อมูลในลักษณะเหมือนกับเครือข่ายของโหนด

± แต่ละโหนดจะประกอบด้วยข้อมูลซึ่งจะเป็นข้อความ รูปภาพ เสียง ภาพเคลื่อนไหว หรือโปรแกรมการทำงานอื่นๆ

± ฐานข้อมูลแบบ OODB และ Hypermedia จะสามารถเก็บข้อมูลที่มีลักษณะซับซ้อนมากกว่าฐานข้อมูลแบบตาราง

± ประสิทธิภาพจะช้ากว่าแบบความสัมพันธ์หากมีข้อมูลจำนวนมาก

ดาต้าแวร์เฮาส์(Data Warehouse)

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

± ดาต้าแวร์เฮาส์ประกอบด้วยเครื่องมือในการถามที่เป็นมาตรฐาน(standardized query tool) เครื่องมือในการวิเคราะห์ และเครื่องมืออำนวยความสะดวกในการทำงานในลักษณะกราฟิก

± ดาต้าแวร์เฮาส์สามารถทำการวิเคราะห์ข้อมูลในเชิงวิเคราะห์แนวโน้ม หรือเจาะหาข้อมูล (drill) ในรายละเอียดเมื่อต้องการได้

Data mart

± หมายถึงดาต้าแวร์เฮาส์ขนาดเล็ก ซึ่งประกอบด้วยข้อมูลขององค์กรบางส่วน สำหรับผู้ใช้กลุ่มใดกลุ่มหนึ่งโดยเฉพาะ

ลักษณะที่สำคัญของดาต้าแวร์เฮาส์

± ข้อมูลมาจากฐานข้อมูลหลายแห่ง

± ดาต้าแวร์เฮาส์มีหลายมิติ

± ดาต้าแวร์เฮาส์ใช้สนับสนุนการตัดสินใจ ไม่ใช่ประมวลผลรายการ

 

 

 

ดาต้าไมนน์นิ่ง(Data Mining)

± ดาต้าไมน์นิ่งเป็นเครื่องมือของซอฟต์แวร์ที่ใช้ในการวิเคราะห์สารสนเทศโดยอัตโนมัติ เพื่อค้นหารูปแบบและความสัมพันธ์ของข้อมูลในดาต้าแวร์เฮาส์รวมทั้งพยากรณ์แนวโน้มและพฤติกรรมในอนาคต(Stair&Reynolds,1999:Turban, et al.,(2001))

จุดมุ่งหมายของดาต้าไมน์นิ่ง

± การดึงรูปแบบ แนวโน้มและกฎเกณฑ์จากข้อมูลในดาต้าแวร์เฮาส์เพื่อที่จะประเมินกลยุทธ์ของหน่วยงาน

± ปรับปรุงความได้เปรียบในการแข่งขัน

± เป็นวิธีการที่นำมาใช้ในด้านการตลาด เช่น การรักษาลูกค้า การจัดโฆษณา ช่องทางการตลาด การวิเคราะห์ราคา

ส่วนประกอบของดาต้าไมน์นิ่ง

± เครื่องมือในการถามและจัดทำรายงาน(Query-and-reporting-tools)

± อุปกรณ์ด้านปัญญาประดิษฐ์(Intelligent Agents)

± เครื่องมือในการวิเคราะห์ข้อมูลหลายมิติ(Multidimensional analysis tools-MDA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

บรรณานุกรม

 

http://office.microsoft.com/th-th/access/HA012242471054.aspx

http://irrigation.rid.go.th/rid15/ppn/Knowledge/Database/database4.htm

http://samet.skru.ac.th/~tsasalak/MIS/ch5.ppt

http://www.thaiall.com/os/os08.htm

http://www.chandra.ac.th/office/ict/document/it/it04/page01.html

 

 

Free Web Hosting