ฐานข้อมูล หมายถึง แหล่งที่ใช้สำหรับเก็บรวบรวมข้อมูลซึ่งอยู่ในรูปแฟ้มข้อมูลมารวมไว้ที่เดียวกัน รวมทั้งต้องมีส่วนของพจนานุกรมข้อมูล (data dictionary) เก็บคำอธิบายเกี่ยวกับโครงสร้างของฐานข้อมูล และเนื่องจากข้อมูลที่จัดเก็บนั้นต้องมีความสัมพันธ์ซึ่งกันและกันทำให้สามารถสืบค้น (retrieval) แก้ไข (modified) ปรับปรุงเปลี่ยนแปลงโครงสร้าง ข้อมูล (update) และจัดเรียง (sort) ได้สะดวกขึ้นโดยในการกระทำการดังที่กล่าวมาแล้ว ต้องอาศัยซอฟต์แวร์ประยุกต์สำหรับจัดการฐานข้อมูล
ระบบฐานข้อมูล หมายถึง ระบบการรวบรวมแฟ้มข้อมูลหลายๆ แฟ้มข้อมูลเข้าด้วยกัน โดยขจัดความซ้ำซ้อนของข้อมูลออก แล้วเก็บข้อมูลไว้ที่ศูนย์กลาง เพื่อการใช้งานร่วมกันในองค์กร ภายในระบบต้องมีส่วนที่เป็นโปรแกรมประยุกต์ที่สร้างขึ้นเพื่อเชื่อมโยงและใช้งานข้อมูลในฐานข้อมูล (database) และจะต้องมีการดูแลรักษาความปลอดภัยของข้อมูลเหล่านั้น มีการกำหนดสิทธิของผู้ใช้งานแต่ละคนให้แตกต่างกัน ตามแต่ความต้องการในการใช้งาน
ระบบฐานข้อมูล หมายถึง ระบบการรวบรวมแฟ้มข้อมูลหลายๆ แฟ้มข้อมูลเข้าด้วยกัน โดยขจัดความซ้ำซ้อนของข้อมูลออก แล้วเก็บข้อมูลไว้ที่ศูนย์กลาง เพื่อการใช้งานร่วมกันในองค์กร ภายในระบบต้องมีส่วนที่เป็นโปรแกรมประยุกต์ที่สร้างขึ้นเพื่อเชื่อมโยงและใช้งานข้อมูลในฐานข้อมูล (database) และจะต้องมีการดูแลรักษาความปลอดภัยของข้อมูลเหล่านั้น มีการกำหนดสิทธิของผู้ใช้งานแต่ละคนให้แตกต่างกัน ตามแต่ความต้องการในการใช้งาน
1. ตารางเรคคอร์ดและฟิลด์ ข้อมูลต่างๆ ในฐานข้อมูลจะถูกจัดเก็บและนำเสนอในรูปแบบของตาราง โดยในตารางหนึ่งๆ จะจัดเก็บรวบรวมข้อมูลประเภทเดียวกันเข้าไว้ด้วยกัน ในแต่ละแถวและคอลัมน์ ซึ่งในศัพท์ของฐานข้อมูลจะเรียกฟิลด์ ในแต่ละแถวของตารางก็ คือ ข้อมูลหนึ่งชุดหรือข้อมูล 1 เรคคอร์ดในแต่ละแถวหรือเรคคอร์ดจะประกอบด้วยฟิลด์หรือคอลัมน์ที่เป็นส่วนย่อยที่แสดงแอททริบิวต์ของข้อมูลในแต่ละเรคคอร์ด
2. ดรรชนี ถ้าตารางข้อมูลมีนักศึกษาเก็บอยู่จำนวนมากการที่จะค้นหาข้อมูลที่ต้องการของนักศึกษาคนใดคนหนึ่งจะต้องเสียเวลาอย่างมาก เพราะจะต้องทำการค้นทีละเรคคอร์ด ในตารางไปจนกว่าจะครบ ข้อมูลของนักศึกษาที่ต้องการ เพื่อช่วยให้การค้นหาข้อมูลที่ต้องการทำได้รวดเร็วขึ้นฐานข้อมูลทั่วไปจึงมีโครงสร้างอีกชนิดหนึ่ง เรียกว่า ดรรชนีเพื่อสนับสนุนการค้นหาให้รวดเร็วขึ้น โดยปกติแล้วในแต่ละตารางจะมีฟิลด์หรือหลายฟิลด์ประกอบกันที่จะสามารถบอกถึงความแตกต่างของข้อมูลในแต่ละแถวได้ ฟิลด์หรือคอลัมน์ดังกล่าวเรียกว่าเป็นดรรชนีหลัก ของตาราง
3. ความสัมพันธ์ของตารางฐาน ข้อมูลแบบตารางสัมพันธ์ส่วนใหญ่แล้ว จะประกอบไปด้วยตารางข้อมูลต่างๆ หลายตาราง แต่ละตารางจะมีความสัมพันธ์กันในลักษณะใดลักษณะหนึ่ง กฎที่เกี่ยวข้องกับดรรชนีในฐานข้อมูลเชิงสัมพันธ์
เนื่องจากรีเลชั่นต่างๆ ในฐานข้อมูลเชิงสัมพันธ์จะอ้างอิงความสัมพันธ์ของข้อมูล โดยใช้ดรรชนีกฎที่เกี่ยวข้องกับการใช้ดรรชนีในฐานข้อมูลเชิงสัมพันธ์ มีดังนี้
1. กฎความบูรณภาพของเอนทิตี้ (The Entity Integrity Rule) แอททริบิวต์ใดที่จะเป็นดรรชนีหลักข้อมูลในแอททริบิวต์นั้นจะเป็นค่าง่าย (Null) ไม่ได้หมายความของการเป็นค่าว่างไม่ได้ (Not Null) ในที่นี้หมายถึง ข้อมูลแอททริบิวต์เป็นดรรชนีหลักจะไม่ทราบค่าแน่นอนหรือ ไม่มีค่าไม่ได้
2. กฎความบูรณภาพของการอ้างอิง (The Referentail Integrity Rule) คือ ค่าของดรรชนีหลักนอกจากจะต้องสามารถอ้างอิงให้ตรงกับค่าของดรรชนีหลักได้ จึงจะเชื่อมโยงหรืออ้างอิงข้อมูลระหว่างสองรีเลชั่นได้
การกำหนดความสัมพันธ์
ในโปรแกรมการจัดการฐานข้อมูล เช่น โปรแกรมแอกเซส สามารถเชื่อมโยงข้อมูลต่างๆ จากตารางเพื่อที่จะสามารถแสดงข้อมูลที่ได้บนรายงานข้อคำถามหรือแบบฟอร์ม การเชื่อมโยงข้อมูลจากหลาย ตารางนี้เรียกว่าความสัมพันธ์ (Relation) การสร้างความสัมพันธ์ระหว่างตารางในฐานข้อมูลโดยการกำหนดให้ตารางมีความสัมพันธ์กันนั้น ต้องมีแอททริบิวต์หรือฟิลด์ที่เหมือนกัน และให้ค่าฟิลด์ที่เหมือนกันเป็นตัวเชื่อมความสัมพันธ์ ฟิลด์ที่เหมือนกันของตารางเรียกว่า ดรรชนีนอก (Foreing Key) เช่น ตารางของนักศึกษาและโปรแกรมวิชาจะมีรหัสของโปรแกรมวิชาที่เหมือนกัน ในเวลาที่นำโปรแกรมจัดการฐานข้อมูลมาใช้จะต้องมีการสร้างแบบฟอร์มหรือรายงานเรียบร้อยแล้ว จึงกำหนดความสัมพันธ์
ข้อดีของฐานข้อมูลเชิงสัมพันธ์
ฐานข้อมูลเชิงสัมพันธ์เป็นฐานข้อมูลที่มีรูปแบบง่ายสำหรับผู้ใช้ทั่วไป โดยเฉพาะผู้ใช้ซึ่งไม่ใช่นักวิเคราะห์และออกแบบโปรแกรม โปรแกรมเมอร์หรือผู้จัดการฐานข้อมูล เป็นต้น ข้อดีที่ผู้ใช้ทั่วไปรู้สึกว่าฐานข้อมูลชนิดนี้เข้าใจง่าย มีดังนี้
1. ฐานข้อมูลเชิงสัมพันธ์เป็นกลุ่มของรีเลชั่นหรือตารางที่ข้อมูลถูกจัดเก็บเป็นแถวและคอลัมน์ ซึ่งทำให้ผู้ใช้เห็นภาพของข้อมูลได้ง่าย
2. ผู้ใช้ไม่จำเป็นต้องรู้ว่าข้อมูลถูกจัดเก็บอย่างไร รวมถึงวิธีการเข้าถึงข้อมูล (Access Approach)
3. ภาษาที่ใช้ในการเรียกดูข้อมูล เป็นลักษณะคล้ายภาษาอังกฤษและไม่จำเป็นต้องเขียนเป็นลำดับขั้นตอน
4. การเรียกใช้หรือเชื่อมโยงข้อมูลทำได้ง่ายโดยใช้โอเปอร์เรเตอร์ ทางคณิตศาสตร์ เช่น SELECT ไม่จำเป็นต้องมีตัวชี้ (Pionter) ซึ่งยุ่งยาก
1. ฐานข้อมูลเชิงสัมพันธ์เป็นกลุ่มของรีเลชั่นหรือตารางที่ข้อมูลถูกจัดเก็บเป็นแถวและคอลัมน์ ซึ่งทำให้ผู้ใช้เห็นภาพของข้อมูลได้ง่าย
2. ผู้ใช้ไม่จำเป็นต้องรู้ว่าข้อมูลถูกจัดเก็บอย่างไร รวมถึงวิธีการเข้าถึงข้อมูล (Access Approach)
3. ภาษาที่ใช้ในการเรียกดูข้อมูล เป็นลักษณะคล้ายภาษาอังกฤษและไม่จำเป็นต้องเขียนเป็นลำดับขั้นตอน
4. การเรียกใช้หรือเชื่อมโยงข้อมูลทำได้ง่ายโดยใช้โอเปอร์เรเตอร์ ทางคณิตศาสตร์ เช่น SELECT ไม่จำเป็นต้องมีตัวชี้ (Pionter) ซึ่งยุ่งยาก
1. Primary Key (คีย์หลัก)
เป็น Attribute ที่มีคุณสมบัติของข้อมูลที่เป็นค่าเอกลักษณ์หรือมีค่าที่ไม่ซ้ำกัน คุณสมบัติดังกล่าวจะสามารถระบุว่าข้อมูลนั้นเป็นข้อมูลของ Tuple ใด เช่น รหัสพนักงาน เลขที่ 3001 สามารถระบุได้ว่าเป็นของพนักงานชื่อ ดวงพร Attribute ที่มีคุณสมบัติเป็น คีย์หลักอาจประกอบด้วยหลาย Attribute รวมกันเรียกว่า Composite Key (คีย์ผสม)นอกจากนี้ ใน Relation หนึ่งๆ อาจมี Attribute ที่มีคุณสมบัติเป็นคีย์หลักได้มากกว่า หนึ่งAttribute เรียก Attribute เหล่านี้ว่า Candidate Key (คีย์คู่แข่ง)ถ้า Attribute หนึ่งถูกกำหนดให้เป็นคีย์หลัก อีก Attribute หนึ่งที่มีคุณสมบัติเป็นคีย์หลัก แต่ไม่ได้ถูกเลือกให้เป็นคีย์หลักจะเรียกว่า คีย์สำรอง (Alternate Key)
2. Foreign Key (คีย์นอก)
เป็น Attribute ใน Relation หนึ่งที่ใช้อ้างอิงถึง Attribute เดียวกันนี้ในอีก Relation หนึ่ง โดยที่ Attribute นี้มีคุณสมบัติ เป็นคีย์หลักใน Relation ที่ถูกอ้างอิง การมี Attribute นี้ปรากฏอยู่ในRelation ทั้งสองก็เพื่อประโยชน์ ในการเชื่อมโยงข้อมูล
เป็น Attribute ใน Relation หนึ่งที่ใช้อ้างอิงถึง Attribute เดียวกันนี้ในอีก Relation หนึ่ง โดยที่ Attribute นี้มีคุณสมบัติ เป็นคีย์หลักใน Relation ที่ถูกอ้างอิง การมี Attribute นี้ปรากฏอยู่ในRelation ทั้งสองก็เพื่อประโยชน์ ในการเชื่อมโยงข้อมูล
วัตถุประสงค์ของการทำให้เป็นบรรทัดฐาน มีดังนี้
1. เพื่อลดเนื้อที่ในการเก็บข้อมูลการทำให้เป็นบรรทัดฐานเป็นการลดความซ้ำซ้อนของข้อมูลในรีเลชั่น
2. เพื่อลดปัญหาที่ข้อมูลไม่ถูกต้อง(Inconsistency)เนื่องจากข้อมูลในรีเลชั่นหนึ่งจะมีข้อมูลไม่ซ้ำกัน เมื่อมีการปรับปรุงข้อมูลก็จะปรับปรุงทูเพิลนั้นๆครั้งเดียวไม่ต้องปรับปรุงหลายแห่ง
3. เป็นการลดปัญหาที่เกิดจากการเพิ่ม ปรับปรุงและลบข้อมูล
รูปแบบบรรทัดฐานขั้นที่ 1
(First Normal Form : 1NF)
"ค่าของแอททริบิวต์หนึ่งในแต่ละทูเพิลจะมีค่าของข้อมูลเพียงค่าเดียวหากรีเลชั่นใดไม่มีคุณสมบัติดังกล่าวข้างต้นจะต้องทำการปรับปรุงให้อยู่ในรูปแบบบรรทัดฐานขั้นที่หนึ่งโดยการแยกกลุ่มข้อมูลที่ซ้ำกันเป็นรีเลชั่นใหม่และกำหนดให้เป็นแอททริบิวต์ที่เป็นตัวกำหนดค่าของกลุ่มข้อมูลที่ซ้ำกันนี้( Multivalued Attribute) เป็นคีย์หลักของรีเลชั่นใหม่" สมมุติให้รีเลชั่น A เป็นรีเลชั่นที่ประกอบด้วยAttribute ของ entity ผู้ผลิต และ entity การส่งของ โดยจะเห็นว่าในรีเลชั่น จะมีรหัสของผู้ผลิต s1,s2,s3,s4 และมีรหัสสินค้าหลายค่า วิธีแก้ไขปัญหานี้คือ การไส่ข้อมูลของ s1,s2,s3,s4 ลงไปในทุก รหัสสินค้า โดยผลการใส่ข้อมูลดังกล่าวนี้จะทำให้รหัสผู้ผลิต (sno) ไม่ใช่คีย์หลัก แต่คีย์หลักจะประกอบด้วยรหัสผู้ผลิตและ รหัสสินค้า (sno,pno)
รูปแบบบรรทัดฐานขั้นที่ 2 ก็ต่อเมื่อ "รีเลชั่นนั้นๆอยู่ในรูปแบบบรรทัดฐานขั้นที่ 1 และมีคุณสมบัติอีกประการหนึ่งคือแอทริบิวต์ทุกแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักจะต้องมีความสัมพันธ์ระหว่างค่าของแอทริบิวต์แบบฟังก์ชั่นกับคีย์หลัก(Fully Functional Dependency) กล่าวอีกนัยหนึ่งคือค่าของแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักจะสามารถระบุค่า โดยแอททริบิวต์ที่เป็นคีย์หลัก แอททริบิวต์ทั้งหมดที่ประกอบกันเป็นคีย์หลัก" ในกรณีที่คีย์หลักเป็นคีย์ผสม จากรีเลชั่น Supplier และ Order รีเลชั่นทั้งสองอยู่ในรูปแบบบรรทัดฐานขั้นที่ 2 แล้ว ในรีเลชั่น Supplier มีรหัสผู้ผลิตเป็นคีย์หลัก เช่น เมื่อทราบค่า รหัสผู้ผลิต S1 ก็จะสามารถทราบค่าของชื่อและจังหวัดของผู้ผลิตคือ Seri อยู่ที่จังหวัด Bangkok หรือในรีเลชั่น Order จำนวนการส่งสินค้า (QTY) จะถูกระบุโดยรหัสผู้ผลิตและรหัสสินค้า ดังนั้น ค่าของแอททริบิวต์อื่นๆที่ไม่ได้เป็นคีย์หลักของรีเลชั่น Supplier และ Order สามารถระบุโดยค่าของแอททริบิวต์ที่เป็นคีย์หลัก
รูปแบบบรรทัดฐานที่ 3 การแตกรีเลชั่นจากตัวอย่างนี้ดูเหมือนจะแก้ปัญหาความผิดพลาดที่อาจจะเกิดขึ้นจากการเพิ่ม ลบ หรือปรับปรุงข้อมูลได้ เพราะได้แตกรีเลชั่นออกเป็นสองรีเลชั่น และอยู่ในรูปแบบบรรทัดฐานขั้นที่ 3 แล้ว แต่การแตกรีเลชั่นทั้งสองข้อที่จะก่อให้เกิดความผิดพลาดขึ้นได้อีกเช่นกัน จากตัวอย่างนี้จะเห็นว่าการเพิ่มชื่อจังหวัดและการจัดอันดับของจังหวัดใหม่จะทำไม่ได้จนกว่าจะมีผู้ผลิตรายใดอยู่ที่จังหวัดที่จะเพิ่มชื่อและจัดอันดับนั้นรีเลชั่น Supplier และรีเลชั่น Supplier 2 เป็นรีเลชั่นที่ไม่มีความเป็นอิสระจากกัน ทั้งนี้เพราะจังหวัดเป็นตัวกำหนดการจัดอันดับ
รูปแบบบรรทัดฐานของบอยส์และคอดด์ก็ต่อเมื่อ "รีเลชั่นนั้นๆ อยู่ในรูปแบบบรรทัดฐานขั้นที่ 3 และไม่มีแอททริบิวต์อื่นในรีเลชั่นที่สามารถระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก หรือ ส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่คีย์หลักเป็นคีย์ผสม" โดยทั่วไปรูปแบบบรรทัดฐานของบอยส์และคอดด์จะอยู่ในรูปแบบ บรรทัดฐานขั้นที่ 3 แต่ไม่จำเป็นเสมอไปว่ารูปแบบบรรทัดฐานขั้นที่3 จะอยู่ในรูปแบบของ BCNF ทั้งนี้เนื่องจากรูปแบบนี้เป็นรูปแบบที่ขยายขอบเขตของรูปแบบบรรทัดฐานขั้นที่ 3 ให้เหมาะสมยิ่งขึ้น โดยรูปแบบของรีเลชั่นที่มีโอกาสที่จะต้องผ่านการทำให้เป็นบรรทัดฐาน BCNF มักจะมีคุณสมบัติดังนี้ คือ “เป็นรีเลชั่นที่มีคีย์คู่แข่งหลายคีย์ (Multiple Candidate Key) คีย์คู่แข่งเป็นคีย์ผสม (Composite Key) และคีย์คู่แข่งนั้นมีความซ้ำซ้อนกัน (Overlapped) ” เพื่อให้ง่ายต่อการอธิบาย จะใช้รีเลชั่น Supplier 3 เป็นตัวอย่าง ในการอธิบายโดยสมมุติว่าชื่อของผู้ผลิต ( SNAME) เป็นค่าไม่ซ้ำกัน และมีคุณสมบัติเป็นคีย์หลักได้เช่นกัน
รูปแบบบรรทัดฐานที่ 4แอททริบิวต์ที่ถูกระบุค่าหลายค่าเหล่านี้ไม่มีความสัมพันธ์กัน (Independently Multivalued Dependency) รีเลชั่นที่ต้องผ่านการทำให้อยู่ในรูปแบบบรรทัดฐานขั้นที่4นี้จะต้องมีแอททริบิวต์อย่างน้อยสามแอททริบิวต์ จากรูป เป็นรีเลชั่นที่ประกอบด้วยแอททริบิวต์รหัสผู้ผลิต (Sno) รหัสโครงการที่สั่งผลิต (Pjno) และชื่อจัหวัดที่โรงงานของผู้ผลิต ตั้งอยู่ (City) โดยกำหนดให้ผู้ผลิตหนึ่งผลิตให้หลายโครงการ และผู้ผลิตหนึ่งๆ มีโรงงานตั้งอยู่ที่หลายจังหวัด (City) SPJC ประกอบด้วยแอททริบิวต์รหัสผู้ผลิต (Sno) ซึ่งมีความ สัมพันธ์ ในการระบุค่าแอททริบิวต์รหัสโครงการที่สั่งผลิต(Pjno) และแอททริบิวต์จังหวัดที่โรงงานของผู้ผลิตตั้งอยู่ (City) ได้หลายค่า รีเลชั่น SPJC อยู่ในรูปแบบ BCNF เมื่อมีแอททริบิวต์ทุกแอททริบิวต์ เป็นคีย์ นอกจากนี้ รหัสผู้ผลิต (SNO) มีความสัมพันธ์ในการระบุค่า ของรหัสโครงการที่สั่งผลิต (PJNO) แบบหลายค่า (SNO->-> PJNO) ในขณะเดียวกัน รหัสผู้ผลิต (SNO) ก็มีความสัมพันธ์ในการระบุค่า แบบหลายค่ากับชื่อจังหวัดที่ผู้ผลิตตั้งอยู่ (CITY) การที่แอททริบิวต์
รูปแบบบรรทัดฐานขึ้นที่ 5 หรือเรียกว่า Project-JoinNormal Form (PJ/NF) ก็ต่อเมื่อ "รีเลชั่นนั้นอยู่ในรูปแบบบรรทัดฐานขึ้นที่ 4 และเป็นรีเลชั่นที่มีคีย์หลักเป็นคีย์ผสมที่ประกอบด้วยแอททริบิวต์ตั้งแต่ 3 แอททริบิวต์เป็นต้นไป หากมีการแตกรีเลชั่นออกเป็นรีเลชั่นย่อย 3 รีเลชั่น (หรือมากกว่า) (Projection) ซึ่งเกิดจากการจับคู่แอททริบิวต์แต่ละคู่ของรีเลชั่น เดิมเป็นคีย์ผสมและเมื่อทำการเชื่อมโยงรีเลชั่นย่อยทั้งหมด (Join) จะไม่ก่อให้เกิดข้อมูลใหม่ที่ไม่เหมือนรีเลชั่นเดิม "เมื่อแตกรีเลชั่น SPP ออกเป็นรีเลชั่น SP และ PPJ และ PJS แล้ว หากนำ ทั้ง 3 รีเลชั่นมาเชื่อมโยงกันจะมีข้อมูลเหมือนในรีเลชั่น SPP ดังนั้นเมื่อ มีการแตกรีเลชั่นออกมา และมีการเชื่อมโยงรีเลชั่นย่อยนั้นใหม่