ความหมายของระบบฐานข้อมูล

 ระบบฐานข้อมูลหมายความว่าอย่างไร

ระบบฐานข้อมูล คือ ระบบจัดเก็บข้อมูลด้วยคอมพิวเตอร์โดยมีวัตถุประสงค์เพื่อบำรุงรักษาข้อสนเทศ (Maintain information) และสามารถนำข้อสนเทศเหล่านั้นมาใช้ได้ทุกเมื่อที่ต้องการ
ระบบฐานข้อมูลประกอบส่วนประกอบหลัก4 ส่วนได้แก่
1. ข้อมูล (Data) ข้อมูลในฐานข้อมูลจะต้องมีคุณสมบัติ 2 ประการ คือ
  • เบ็ดเสร็จ (Integrate) ฐานข้อมูลเป็นแหล่งรวบรวมข้อมูลจากแฟ้มต่าง ๆ ไว้ครบถ้วนสมบูรณ์ เพื่อลดข้อมูลซ้ำซ้อนระหว่างแฟ้ม
  • ใช้ร่วมกันได้ (Share) ข้อมูลแต่ละชิ้นในฐานข้อมูลสามารถนำมาแบ่งใช้กันได้ระหว่างผู้ใช้ต่าง ๆ ในระบบ
2. ฮาร์ดแวร์ (Hardware) ประกอบด้วย อุปกรณ์บันทึกข้อมูลเช่น จานแม่เหล็ก , I/O device , Device controller , I/O channels , หน่วยประมวลผล และหน่วยความจำหลัก
3. ซอฟต์แวร์ (Sorftware) ตัวกลางเชื่อมระหว่างฐานข้อมูลและผู้ใช้คือ DBMS เป็นซอฟต์แวร์ที่สำคัญที่สุดของระบบฐานข้อมูล นอกจากนี้ยังมี Utility , Application Develoment tool , Desisn aids , Report writers , ect.
4. ผู้ใช้ (Users) มี 3 กลุ่มใหญ่ ๆ คือ
  • Application Programmer เขียนโปรแกรมประยุกต์
  • End Users ผู้ใช้ที่อยู่กับ Online terminal เข้าถึงข้อมูลโดยผ่านโปรแกรมประยุกต์ หรือผ่านภาษาเรียกค้น (Query Language)
  • Data Addministrator & Database Administrator
DA ผู้บริหารอาวุโส เป็นผู้ตัดสินใจว่าจะเก็บข้อมูลใดในฐานข้อมูลก่อน และกำหนดนโยบายการรักษาความปลอดภัยของข้อมูล
DBA ผู้เชี่ยวชาญระดับมืออาชีพ



องค์ประกอบของระบบฐานข้อมูล ระบบฐานข้อมูลเป็นเพียงวิธีคิดในการประมวลผลรูปแบบหนึ่งเท่านั้น แต่การใช้ฐานข้อมูลจะต้องประกอบไปด้วยองค์ประกอบหลักดังต่อไปนี้
1.            แอพลิเคชันฐานข้อมูล (Database Application)
2.            ระบบจัดการฐานข้อมูล (Database Management System หรือ  DBMS)
3.            ดาต้าเบสเซิร์ฟเวอร์ (Database Server)
4.            ข้อมูล (Data)
5.            ผู้บริหารฐานข้อมูล ((Database Administrator หรือ DBA)
แอพพลิเคชันฐานข้อมูล เป็นแอพพลิเคชันที่สร้างไว้ให้ผู้ใช้งานสามารถติดต่อกับฐานข้อมูลได้อย่างสะดวก ซึ่งมีรูปแบบการติดต่อกับฐานข้อมูลแบบเมนูหรือกราฟฟิก โดยผู้ใช้ไม่จำเป็นต้องมีความรู้เกี่ยวกับฐานข้อมูลเลยก็สามารถเรียกใช้งานฐานข้อมูลได้เช่น บริการเงินสด ATM
ระบบจัดการฐานข้อมูล ระบบจัดการฐานข้อมูล หมายถึง กลุ่มโปรแกรมหรือซอฟต์แวร์ชนิดหนึ่ง ที่สร้างขึ้นมาเพื่อทำหน้าที่บริหารฐานข้อมูลโดยตรง ให้มีประสิทธิภาพมากที่สุด เป็นเครื่องมือที่ช่วยอำนวยความสะดวกให้ผู้ใช้สามารถเข้าถึงข้อมูลได้ โดยที่ผู้ใช้ไม่จำเป็นต้องรับรู้เกี่ยวกับรายละเอียดภายในโครงสร้างฐานข้อมูล พูดง่าย ๆ ก็คือ DBMSนี้เป็นตัวกลางในการเชื่อมโยงระหว่างผู้ใช้ และโปรแกรมต่างๆ ที่เกี่ยวข้องกับระบบฐานข้อมูล ตัวอย่างของ DBMSที่นิยมใช้ในปัจจุบัน ได้แก่ Microsoft Access, FoxPro, SQL Server, Oracle, Informix, DB2 เป็นต้น
หน้าที่ของระบบจัดการฐานข้อมูล มีดังนี้
1.      กำหนดมาตรฐานข้อมูล
2.      ควบคุมการเข้าถึงข้อมูลแบบต่าง ๆ
3.      ดูแล-จัดเก็บข้อมูลให้มีความถูกต้องแม่นยำ
4.      จัดเรื่องการสำรอง และฟื้นสภาพแฟ้มข้อมูล
5.      จัดระเบียบแฟ้มทางกายภาพ (Physical Organization)
6.      รักษาความปลอดภัยของข้อมูลภายในฐานข้อมูล และป้องกันไม่ใช้ข้อมูลสูญหาย
7.      บำรุงรักษาฐานข้อมูลให้เป็นอิสระจากโปรแกรมแอพพลิเคชันอื่น ๆ
8.      เชื่อมโยงข้อมูลที่มีความสัมพันธ์เข้าด้วยกัน เพื่อรองรับความต้องการใช้ข้อมูลในระดับต่างๆ
           ดาต้าเบสเซิร์ฟเวอร์ เป็นคอมพิวเตอร์ที่คอยให้บริการการจัดการฐานข้อมูล ซึ่งก็คือเครื่องคอมพิวเตอร์ที่ระบบจัดการฐานข้อมูลทำงานอยู่นั่นเอง เพราะฉะนั้นควรเป็นคอมพิวเตอร์ที่มีความรวดเร็วในการทำงานสูงกว่าคอมพิวเตอร์ที่ใช้งานโดยทั่วไป
           ข้อมูล  คือ เนื้อหาของข้อมูลที่เราใช้งาน ซึ่งจะถูกเก็บในหน่วยความจำของดาต้าเบสเซิร์ฟเวอร์ โยจะถูกเรียกมาใช้งานจากระบบจัดการฐานข้อมูล
           ผู้บริหารฐานข้อมูล  คือ กลุ่มบุคคลที่ทำหน้าที่ดูแลข้อมูลผ่านระบบจัดการฐานข้อมูล ซึ่งจะควบคุมให้การทำงานเป็นไปอย่างราบรื่น นอกจากนี้ยังทำหน้าที่กำหนดสิทธิการใช้งานข้อมูล กำหนดในเรื่องความปลอดภัยของการใช้งาน พร้อมทั้งดูแลดาต้าเบสเซิร์ฟเวอร์ให้ทำงานอย่างปกติด้วย
ฐานข้อมูลเชิงสัมพันธ์ (Relational Database)
ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลแบบนี้แสดง การจัดเก็บข้อมูลในรูปแบบของตาราง ที่มีลักษณะเป็นสองมิติ คือ แถว (Row) และคอลัมน์ (Column) ซึ่งในการเชื่อมโยงกันระหว่างข้อมูลในตาราง 2 ตาราง หรือมากกว่า จะเชื่อมโยงโดยใช้แอททริบิวต์ที่มีอยู่ในตารางที่ต้องการเชื่อมโยงข้อมูลกัน โดยที่แอททริบิวต์จะแสดงคุณสมบัติของรีเลชั่นต่าง ๆ ซึ่งรีเลชั่นต่าง ๆ ได้ผ่านกระบวนการทำรีเลชั่นให้เป็นบรรทัดฐาน (Normalized) ในระหว่าง การออกแบบเพื่อละความซ้ำซ้อน เพื่อให้การจัดการฐานข้อมูลเป็นไปอย่างมีประสิทธิภาพ ตัวอย่าง เป็นตารางรายชื่อนักศึกษาและตารางโปรแกรมวิชา ถ้าต้องการทราบว่านักศึกษารหัส 441031138 เป็นนักศึกษาของโปรแกรมวิชาใด ก็ต้องนำรหัสโปรแกรมวิชาในตารางนักศึกษาไปตรวจสอบกับตารางโปรแกรมวิชา ซึ่งมีรหัสของโปรแกรมวิชาซึ่งเรียกว่าเป็นดรรชนี และดึงข้อมูลออกมา
ฉะนั้นสามารถสรุปโครงสร้างข้อมูลหลักที่สำคัญๆ ของฐานข้อมูลเชิงสัมพันธ์ ในส่วนที่เกี่ยวข้องกับการจัดเก็บข้อมูลและการค้นหาในฐานข้อมูล ดังนี้
1. ตารางเรคคอร์ดและฟิลด์ ข้อมูลต่างๆ ในฐานข้อมูลจะถูกจัดเก็บและนำเสนอในรูปแบบของตาราง โดยในตารางหนึ่งๆ จะจัดเก็บรวบรวมข้อมูลประเภทเดียวกันเข้าไว้ด้วยกัน ในแต่ละแถวและคอลัมน์ ซึ่งในศัพท์ของฐานข้อมูลจะเรียกฟิลด์ ในแต่ละแถวของตารางก็ คือ ข้อมูลหนึ่งชุดหรือข้อมูล 1 เรคคอร์ดในแต่ละแถวหรือเรคคอร์ดจะประกอบด้วยฟิลด์หรือคอลัมน์ที่เป็นส่วนย่อยที่แสดงแอททริบิวต์ของข้อมูลในแต่ละเรคคอร์ด
2. ดรรชนี ถ้าตารางข้อมูลมีนักศึกษาเก็บอยู่จำนวนมากการที่จะค้นหาข้อมูลที่ต้องการของนักศึกษาคนใดคนหนึ่งจะต้องเสียเวลาอย่างมาก เพราะจะต้องทำการค้นทีละเรคคอร์ด ในตารางไปจนกว่าจะครบ ข้อมูลของนักศึกษาที่ต้องการ เพื่อช่วยให้การค้นหาข้อมูลที่ต้องการทำได้รวดเร็วขึ้นฐานข้อมูลทั่วไปจึงมีโครงสร้างอีกชนิดหนึ่ง เรียกว่า ดรรชนีเพื่อสนับสนุนการค้นหาให้รวดเร็วขึ้น โดยปกติแล้วในแต่ละตารางจะมีฟิลด์หรือหลายฟิลด์ประกอบกันที่จะสามารถบอกถึงความแตกต่างของข้อมูลในแต่ละแถวได้ ฟิลด์หรือคอลัมน์ดังกล่าวเรียกว่าเป็นดรรชนีหลัก ของตาราง
3. ความสัมพันธ์ของตารางฐาน ข้อมูลแบบตารางสัมพันธ์ส่วนใหญ่แล้ว จะประกอบไปด้วยตารางข้อมูลต่างๆ หลายตาราง แต่ละตารางจะมีความสัมพันธ์กันในลักษณะใดลักษณะหนึ่ง


กฎที่เกี่ยวข้องกับดรรชนีในฐานข้อมูลเชิงสัมพันธ์

     เนื่องจากรีเลชั่นต่างๆ ในฐานข้อมูลเชิงสัมพันธ์จะอ้างอิงความสัมพันธ์ของข้อมูล โดยใช้ดรรชนีกฎที่เกี่ยวข้องกับการใช้ดรรชนีในฐานข้อมูลเชิงสัมพันธ์ มีดังนี้
     1. กฎความบูรณภาพของเอนทิตี้ (The Entity Integrity Rule) แอททริบิวต์ใดที่จะเป็นดรรชนีหลักข้อมูลในแอททริบิวต์นั้นจะเป็นค่าง่าย (Null) ไม่ได้หมายความของการเป็นค่าว่างไม่ได้ (Not Null) ในที่นี้หมายถึง ข้อมูลแอททริบิวต์เป็นดรรชนีหลักจะไม่ทราบค่าแน่นอนหรือ ไม่มีค่าไม่ได้
     2. กฎความบูรณภาพของการอ้างอิง (The Referentail Integrity Rule) คือ ค่าของดรรชนีหลักนอกจากจะต้องสามารถอ้างอิงให้ตรงกับค่าของดรรชนีหลักได้ จึงจะเชื่อมโยงหรืออ้างอิงข้อมูลระหว่างสองรีเลชั่นได้
การกำหนดความสัมพันธ์
ในโปรแกรมการจัดการฐานข้อมูล เช่น โปรแกรมแอกเซส สามารถเชื่อมโยงข้อมูลต่างๆ จากตารางเพื่อที่จะสามารถแสดงข้อมูลที่ได้บนรายงานข้อคำถามหรือแบบฟอร์ม การเชื่อมโยงข้อมูลจากหลาย ตารางนี้เรียกว่าความสัมพันธ์ (Relation) การสร้างความสัมพันธ์ระหว่างตารางในฐานข้อมูลโดยการกำหนดให้ตารางมีความสัมพันธ์กันนั้น ต้องมีแอททริบิวต์หรือฟิลด์ที่เหมือนกัน และให้ค่าฟิลด์ที่เหมือนกันเป็นตัวเชื่อมความสัมพันธ์ ฟิลด์ที่เหมือนกันของตารางเรียกว่า ดรรชนีนอก (Foreing Key) เช่น ตารางของนักศึกษาและโปรแกรมวิชาจะมีรหัสของโปรแกรมวิชาที่เหมือนกัน ในเวลาที่นำโปรแกรมจัดการฐานข้อมูลมาใช้จะต้องมีการสร้างแบบฟอร์มหรือรายงานเรียบร้อยแล้ว จึงกำหนดความสัมพันธ์ระหว่างตาราง หรือกำหนดความสัมพันธ์ตั้งแต่สร้างความสัมพันธ์เสร็จ กล่าวคือจะมีความบูรณภาพความสัมพันธ์เป็นตารางที่เกี่ยวข้อง (Related Table)
ข้อดีของฐานข้อมูลเชิงสัมพันธ์

     ฐานข้อมูลเชิงสัมพันธ์เป็นฐานข้อมูลที่มีรูปแบบง่ายสำหรับผู้ใช้ทั่วไป โดยเฉพาะผู้ใช้ซึ่งไม่ใช่นักวิเคราะห์และออกแบบโปรแกรม โปรแกรมเมอร์หรือผู้จัดการฐานข้อมูล เป็นต้น ข้อดีที่ผู้ใช้ทั่วไปรู้สึกว่าฐานข้อมูลชนิดนี้เข้าใจง่าย มีดังนี้ 
   1. ฐานข้อมูลเชิงสัมพันธ์เป็นกลุ่มของรีเลชั่นหรือตารางที่ข้อมูลถูกจัดเก็บเป็นแถวและคอลัมน์ ซึ่งทำให้ผู้ใช้เห็นภาพของข้อมูลได้ง่าย
     2. ผู้ใช้ไม่จำเป็นต้องรู้ว่าข้อมูลถูกจัดเก็บอย่างไร รวมถึงวิธีการเข้าถึงข้อมูล (Access Approach)
     3. ภาษาที่ใช้ในการเรียกดูข้อมูล เป็นลักษณะคล้ายภาษาอังกฤษและไม่จำเป็นต้องเขียนเป็นลำดับขั้นตอน
     4. การเรียกใช้หรือเชื่อมโยงข้อมูลทำได้ง่ายโดยใช้โอเปอร์เรเตอร์ ทางคณิตศาสตร์ เช่น SELECT ไม่จำเป็นต้องมีตัวชี้ (Pionter) ซึ่งยุ่งยาก

ประเภทของ KEY
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 ทั้งสองก็เพื่อประโยชน์ ในการเชื่อมโยงข้อมูล 
วัตถุประสงค์ของการทำให้เป็นบรรทัดฐาน มีดังนี้
1.  เพื่อลดเนื้อที่ในการเก็บข้อมูลการทำให้เป็นบรรทัดฐานเป็นการลดความซ้ำซ้อนของข้อมูลในรีเลชั่น
2.  เพื่อลดปัญหาที่ข้อมูลไม่ถูกต้อง(Inconsistency)เนื่องจากข้อมูลในรีเลชั่นหนึ่งจะมีข้อมูลไม่ซ้ำกัน เมื่อมีการปรับปรุงข้อมูลก็จะปรับปรุงทูเพิลนั้นๆครั้งเดียวไม่ต้องปรับปรุงหลายแห่ง
3.  เป็นการลดปัญหาที่เกิดจากการเพิ่ม ปรับปรุงและลบข้อมูล
รูปแบบบรรทัดฐาน (Normal Form)
รูปแบบบรรทัดฐานทีใช้ในการกำหนดแอททริบิวต์ที่เหมาะสม ในรีเลชั่นแบ่งออกเป็นดังนี้
รูปแบบบรรทัดฐานขั้นที่ 1
(First Normal Form : 1NF)
รีเลชั่นหนึ่งๆจะอยู่ในรูปแบบบรรทัดฐานขั้นที่ 1 ก็ต่อเมื่อ "ค่าของแอททริบิวต์หนึ่งในแต่ละทูเพิลจะมีค่าของข้อมูลเพียงค่าเดียวหากรีเลชั่นใดไม่มีคุณสมบัติดังกล่าวข้างต้นจะต้องทำการปรับปรุงให้อยู่ในรูปแบบบรรทัดฐานขั้นที่หนึ่งโดยการแยกกลุ่มข้อมูลที่ซ้ำกันเป็นรีเลชั่นใหม่และกำหนดให้เป็นแอททริบิวต์ที่เป็นตัวกำหนดค่าของกลุ่มข้อมูลที่ซ้ำกันนี้( Multivalued Attribute) เป็นคีย์หลักของรีเลชั่นใหม่"

Relation A
sno
sname
city
pno
qty
S1
Seri
Bangkok
P1 P2 P3 P4
200 400 200 300
S2
Wanda
Rayong
P1 P2
400 300
S3
Somhai
Rayong
P2
200
S4
Orapan
Bangkok
P2
200
สมมุติให้รีเลชั่น A เป็นรีเลชั่นที่ประกอบด้วยAttribute ของ entity ผู้ผลิต และ entity การส่งของ โดยจะเห็นว่าในรีเลชั่น จะมีรหัสของผู้ผลิต s1,s2,s3,s4 และมีรหัสสินค้าหลายค่า วิธีแก้ไขปัญหานี้คือ การไส่ข้อมูลของ s1,s2,s3,s4 ลงไปในทุก รหัสสินค้า โดยผลการใส่ข้อมูลดังกล่าวนี้จะทำให้รหัสผู้ผลิต (sno) ไม่ใช่คีย์หลัก แต่คีย์หลักจะประกอบด้วยรหัสผู้ผลิตและ รหัสสินค้า (sno,pno)
Relation A
sno
sname
city
pno
qty
S1
Seri
Bangkok
P1
300
S1
Seri
Bangkok
P2
200
S1
Seri
Bangkok
P3
400
S1
Seri




รูปแบบบรรทัดฐานขั้นที่ 2
(Second Normal Form : 2NF )
รีเลชั่นหนึ่งๆ จะอยู่ในรูปแบบบรรทัดฐานขั้นที่ 2 ก็ต่อเมื่อ "รีเลชั่นนั้นๆอยู่ในรูปแบบบรรทัดฐานขั้นที่ 1 และมีคุณสมบัติอีกประการหนึ่งคือแอทริบิวต์ทุกแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักจะต้องมีความสัมพันธ์ระหว่างค่าของแอทริบิวต์แบบฟังก์ชั่นกับคีย์หลัก(Fully Functional Dependency) กล่าวอีกนัยหนึ่งคือค่าของแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักจะสามารถระบุค่า โดยแอททริบิวต์ที่เป็นคีย์หลัก แอททริบิวต์ทั้งหมดที่ประกอบกันเป็นคีย์หลัก" ในกรณีที่คีย์หลักเป็นคีย์ผสม จากรีเลชั่น Supplier และ Order รีเลชั่นทั้งสองอยู่ในรูปแบบบรรทัดฐานขั้นที่ 2 แล้ว ในรีเลชั่น Supplier มีรหัสผู้ผลิตเป็นคีย์หลัก เช่น เมื่อทราบค่า รหัสผู้ผลิต S1 ก็จะสามารถทราบค่าของชื่อและจังหวัดของผู้ผลิตคือ Seri อยู่ที่จังหวัด Bangkok หรือในรีเลชั่น Order  จำนวนการส่งสินค้า (QTY) จะถูกระบุโดยรหัสผู้ผลิตและรหัสสินค้า ดังนั้น ค่าของแอททริบิวต์อื่นๆที่ไม่ได้เป็นคีย์หลักของรีเลชั่น Supplier และ Order สามารถระบุโดยค่าของแอททริบิวต์ที่เป็นคีย์หลัก
รูปแบบบรรทัดฐานขั้นที่ 3
(Third Normal Form : 3NF)
รีเลชั่นหนึ่งๆจะอยู่ในรูปแบบบรรทัดฐานขั้นที่ 3 (3NF)  ก็ต่อเมื่อรีเลชั่นนั้นๆอยู่ในรูปแบบบรรทัดฐานขั้นที่ 2 ละมีคุณสมบัติอีกประการหนึ่งคือแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักไม่มีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลักจากรูปรีเลชั่น Supplier 1 จะคล้ายคลึงกับรีเลชั่น Supplier ที่เคยกล่าวมาข้างต้นเพียงแต่เพิ่มแอททริบิวต์ Rating เข้าไปรีเลชั่นนี้มีรหัสผู้ผลิตเป็นคีย์หลัก  
SNAMESUPPLIER 1 
SNO
SNAME
CITY 
RATING
S1
SERI 
BANGKOK 
2
S2
WANIDA
RAYONG
3
S3
SOMCHAI
RAYONG 
3
S4
ORAPIN
BANGKOK
2
S5
TANACHOTE 
PATUMTANE
1
หากพิจารณาดูแล้วจะเห็นว่ารีเลชั่น Supplier 1 นี้ อยู่ในรูปแบบบรรทัดฐานขั้นที่ 2 แล้ว คือ ไม่มีค่าของข้อมูลซ้ำกันและขณะเดียวกัน ค่าของแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักอื่นๆสามารถระบุค่าได้โดยค่าของแอททริบิวต์ที่เป็นคีย์หลัก เช่นถ้าทราบว่ารหัสผู้ผลิตคือ SI จะสามารถทราบเลยว่า ผู้ผลิตนั้นๆชื่ออะไร อยู่ที่จังหวัดใดและอยู่ในจังหวัดที่ถูกจัดอันดับไว้เป็นอันดับเท่าไร รีเลชั่นนี้ไม่มีคีย์คู่แข่ง เพราะว่าไม่มีคีย์อื่นที่มีคุณสมบัติเป็นคีย์หลักได้เช่นเดียวกับรหัสผู้ผลิต ถึงแม้ว่าชื่อจังหวัดสามารถจะระบุการจัดอันดับของผู้ผลิต แต่ไม่สามารถระบุชื่อของผู้ผลิตได้ชัดเจนเช่นในกรณีของชื่อจังหวัดที่อยู่กรุงเทพชื่อของผู้ผลิตอาจเป็นSeri หรือ Orapin ก็ได้ ซึ่งไม่สามารถกำหนดชัดเจนว่าชื่ออะไร แอททริบิวต์ City จึงไม่มีคุณสมบัติเป็นคีย์หลักหรือคีย์คู่แข่งนอกจากนี้จะพบว่ามีความสัมพันธ์ระหว่างแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักอยู่ นั่นคือ แอททริบิวต์ชื่อจังหวัด (City) และแอททริบิวต์การจัดอันดับของผู้ผลิต(Rating ) โดยแอททริบิวต์ชื่อจังหวัดสามารถระบุค่าการจัดอันดับความสะดวกในการขนส่งสินค้า ซึ่งเป็นความสัมพันธ์ระหว่างค่าของแอททริบิวต์แบบทรานซิทีฟ (TransitiveDependency)หากรีเลชั่นใดมีคุณสมบัติดังกล่าว จะก่อให้เกิดความผิดพลาดที่เกิดจากการเพิ่ม หรือลบหรือปรับปรุงข้อมูลได้ เช่นก. ความผิดพลาดที่เกิดจากการปรับปรุงข้อมูล (Update Anomaly) หากมีการแก้ไขการจัดอันดับของจังหวัดของจังหวัดของผู้ผลิตเนื่องจากความสะดวกในการขนส่งที่เปลี่ยนแปลงไป จะต้องทำการแก้ไขข้อมูลหลายทูเพิล ซึ่งอาจจะเกิดปัญหาการแก้ไขไม่ครบถ้วน อันจะก่อให้เกิดความไม่ตรงกันของข้อมูลได้ข. ความผิดพลาดที่เกิดจากการลบข้อมูล (Delete Anomaly)หากมีการลบข้อมูลการจัดอันดับของจังหวัดของผู้ผลิต จะทำให้ข้อมูลการจัดอันดับของจังหวัดนั้นหายไป
จากฐานข้อมูลเช่น หากลบทูเพิลของรหัสผู้ผลิต S5 จะไม่มีข้อมูลของผู้ผลิตที่อยู่ที่จังหวัดปทุมธานีว่าถูกจัดอันดับอยู่ที่อันดับที่เท่าไร ด้วยเหตุผลที่แอททริบิวต์ชื่อจังหวัดไม่มีคุณสมบัติเป็นคีย์หลักในรีเลชั่น Supplier 1 แต่สามารถกำหนดค่าของแอททริบิวต์การจัดอันดับได้ ซึ่งอาจก่อให้เกิดปัญหาความผิดพลาดจากการเพิ่ม ปรับปรุงหรือลบข้อมูลการขจัดปัญหาดังกล่าวจะทำได้โดยการ แตกรีเลชั่น Supplier1เป็นสองรีเลชั่น (Decomposition) โดยแยกแอททริบิวต์ที่ถูกกำหนดค่ากับแอททริบิวต์ที่เป็นตัวกำหนดค่า(Determinant)ออกเป็นรีเลชั่นใหม่ และกำหนดให้แอททริบิวต์ที่เป็นตัวกำหนดค่า (Determinant) เป็นคีย์หลักของรีเลชั่นใหม่ดังนี้ SUPPLIER (SNO,SNAME,CITY) CITY(CITY,RATING)รีเลชั่น Supplier ประกอบด้วยแอททริบิวต์ (SNO,SNAME,CITY) มี SNO เป็นคีย์หลักโดยมี CITY เป็นคีย์นอกที่อ้างอิงถึงแอททริบิวต์ CITY  ที่อยู่ในรีเลชั่น CITY ประกอบด้วยแอททริบิวต์(City,Rating) และมี City เป็นคีย์หลัก วิธีการแตกรีเลชั่น(Decomposition) ที่กล่าวมาข้างต้นจะต้องทำตามขั้นตอนดังนี้คือ ประการแรก ให้นำแอททริบิวต์ทึ่ถูกกำหนดค่ากับแอททริบิวต์ที่เป็นตัว กำหนดค่าแยกออกเป็นรีเลชั่นใหม่และ ประการที่สองคือกำหนดให้แอททริบิวต์ที่เป็นตัวกำหนดค่าเป็นคีย์หลักของรีเลชั่นใหม่นั้นอย่างไรก็ตามในบางครั้งผู้ออกแบบเค้าร่างของฐานข้อมูลพยายามแตกรีเลชั่นที่มีแอททริบิวต์มากๆออกเป็นหลายรีเลชั่นโดยไม่ได้ปฎิบัติตามวิธีการที่กล่าวมาแล้วข้างต้นซึ่งจะทำให้เกิดปัญหาการแตกฐานข้อมูลที่ไม่เหมาะสมได้(Bad Decomposition) ตัวอย่างเช่น หากแตกรีเลชั่นของ Supplier 1 เป็นดังนี้  รีเลชั่น Supplier (SNO SNAME CITY) มีSNO เป็นคีย์หลัก รีเลชั่น Supplier 2 (SNO,RATING) มี SNOเป็นคีย์หลัก
SUPPLIER
SNO
SNAME
  CITY
S1
SERI 
BANGKOK
S2
WANIDA
RAYONG
S3
SOMCHAI
RAYONG
S4
ORAPIN
 BANGKOK
S5
TANACHOTE
 PATUMTANE

SUPPLIER2 
SNO
SNAME
S1
 2
S2
3
S3
3
S4
2
S5
 1
จากรูป การแตกรีเลชั่นจากตัวอย่างนี้ดูเหมือนจะแก้ปัญหาความผิดพลาดที่อาจจะเกิดขึ้นจากการเพิ่ม ลบ หรือปรับปรุงข้อมูลได้ เพราะได้แตกรีเลชั่นออกเป็นสองรีเลชั่น และอยู่ในรูปแบบบรรทัดฐานขั้นที่ 3 แล้ว แต่การแตกรีเลชั่นทั้งสองข้อที่จะก่อให้เกิดความผิดพลาดขึ้นได้อีกเช่นกัน จากตัวอย่างนี้จะเห็นว่าการเพิ่มชื่อจังหวัดและการจัดอันดับของจังหวัดใหม่จะทำไม่ได้จนกว่าจะมีผู้ผลิตรายใดอยู่ที่จังหวัดที่จะเพิ่มชื่อและจัดอันดับนั้นรีเลชั่น Supplier และรีเลชั่น Supplier 2 เป็นรีเลชั่นที่ไม่มีความเป็นอิสระจากกัน ทั้งนี้เพราะจังหวัดเป็นตัวกำหนดการจัดอันดับ 
รูปแบบบรรทัดฐานขั้นที่ 4
(Fourth Normal Form : 4NF)
รีเลชั่นนี้จะอยู่ในรูปแบบบรรทัดฐานขั้นที่ 4 ก็ต่อเมื่อ "รีเลชั่นนั้นๆ อยู่ในรูปแบบ BCNF และเป็นรีเลชั่นที่ไม่มีความสัมพันธ์ในการระบุค่าของแอททริบิวต์แบบหลายค่า"  โดยที่ แอททริบิวต์ที่ถูกระบุค่าหลายค่าเหล่านี้ไม่มีความสัมพันธ์กัน (Independently Multivalued Dependency) รีเลชั่นที่ต้องผ่านการทำให้อยู่ในรูปแบบบรรทัดฐานขั้นที่4นี้จะต้องมีแอททริบิวต์อย่างน้อยสามแอททริบิวต์ จากรูป เป็นรีเลชั่นที่ประกอบด้วยแอททริบิวต์รหัสผู้ผลิต (Sno) รหัสโครงการที่สั่งผลิต (Pjno) และชื่อจัหวัดที่โรงงานของผู้ผลิต ตั้งอยู่  (City) โดยกำหนดให้ผู้ผลิตหนึ่งผลิตให้หลายโครงการ และผู้ผลิตหนึ่งๆ มีโรงงานตั้งอยู่ที่หลายจังหวัด (City)
ทำให้อยู่ในรูปแบบบรรทัดฐาน BCNF โดยให้ทุกแอททริบิวต์ ประกอบกันเป็นคีย์หลัก
รีเลชั่น SPJC ประกอบด้วยแอททริบิวต์รหัสผู้ผลิต (Sno) ซึ่งมีความ สัมพันธ์ ในการระบุค่าแอททริบิวต์รหัสโครงการที่สั่งผลิต(Pjno) และแอททริบิวต์จังหวัดที่โรงงานของผู้ผลิตตั้งอยู่ (City) ได้หลายค่า รีเลชั่น SPJC อยู่ในรูปแบบ BCNF เมื่อมีแอททริบิวต์ทุกแอททริบิวต์ เป็นคีย์ นอกจากนี้ รหัสผู้ผลิต (SNO) มีความสัมพันธ์ในการระบุค่า ของรหัสโครงการที่สั่งผลิต (PJNO) แบบหลายค่า (SNO->-> PJNO) ในขณะเดียวกัน รหัสผู้ผลิต (SNO) ก็มีความสัมพันธ์ในการระบุค่า แบบหลายค่ากับชื่อจังหวัดที่ผู้ผลิตตั้งอยู่ (CITY) การที่แอททริบิวต์ ทั้งสองไม่มีความสัมพันธ์กันแต่มาอยู่ในรีเลชั่นเดียวกัน  จะก่อให้เกิด ความซ้ำซ้อนของข้อมูลเกิดขึ้น เพราะค่าของชื่อจังหวัดจะต้องปรากฏ ในรีเลชั่นซ้ำกันเพื่อให้ข้อมูลในแต่ละทูเพิลมีข้อมูลครบถ้วนถึงแม้ว่ารีเลชั่น SPJC จะอยู่ในรูปแบบของBCNFโดยมีแอททริบิวต์ทุกแอททริบิวต์ประกอบกันเป็นคีย์หลักก็ตาม  รีเลชั่นนี้ก็ยังมีปัญหาแฝงอยู่เช่นกัน  ปัญหาความผิดพลาดที่เกิดจากการเพิ่ม ลบ หรือปรับปรุงข้อมูล มีโอกาสที่เกิดขึ้นมากมาย เช่น หากผู้ผลิตรหัส S2 ย้ายโรงงานRAYONG ไปอยู่จังหวัดอื่น ก็ต้องทำการแก้ไขข้อมูลหลายทูเพิล หรือความผิดพลาดในการเพิ่มข้อมูล อาจทำไม่ได้เช่นการเก็บข้อมูลที่จังหวัด ที่ตั้งของผู้ผลิตคนใหม่  ที่ยังไม่เคยได้รับงานโครงการใด ก็จะทำไม่ได้ เป็นต้น  สามารถแก้ปัญหารีเลชั่น โดยแบ่งออกเป็น 2 รีเลชั่นคือ  รีเลชั่น SPJ ประกอบด้วย แอททริบิวต์ SNO และ PJNO และมีแอททริบิวต์ทั้งสอง ประกอบกันเป็นคีย์หลัก
รูปแบบบรรทัดฐานขั้นที่ 5
(Fifth Normal Form : 5 NF)
รีเลชั่นหนึ่ง ๆ จะอยู่ในรูปแบบบรรทัดฐานขึ้นที่ 5 หรือเรียกว่า Project-JoinNormal Form (PJ/NF) ก็ต่อเมื่อ "รีเลชั่นนั้นอยู่ในรูปแบบบรรทัดฐานขึ้นที่ 4 และเป็นรีเลชั่นที่มีคีย์หลักเป็นคีย์ผสมที่ประกอบด้วยแอททริบิวต์ตั้งแต่ 3 แอททริบิวต์เป็นต้นไป  หากมีการแตกรีเลชั่นออกเป็นรีเลชั่นย่อย 3 รีเลชั่น (หรือมากกว่า) (Projection) ซึ่งเกิดจากการจับคู่แอททริบิวต์แต่ละคู่ของรีเลชั่น  เดิมเป็นคีย์ผสมและเมื่อทำการเชื่อมโยงรีเลชั่นย่อยทั้งหมด (Join) จะไม่ก่อให้เกิดข้อมูลใหม่ที่ไม่เหมือนรีเลชั่นเดิม" จากรูป รีเลชั่น SPP ประกอบด้วยแอททริบิวต์ชื่อผู้ผลิต (SNAME)  ชื่อสินค้า (PNAME) และชื่อโครงการ (PJNAME)โดยมีแอททริบิวต์ทั้ง 3 เป็นคีย์หลัก
 RELATION SPP
SNAME
PNAME
PJNAME
SERI 
PEN
PROJ2
SERI
TABLE
PROJ1
WANIDA
PEN
PROJ1
SERI
PEN
PROJ1
รีเลชั่น SPP จะอยู่ในรูปแบบบรรทัดฐานขั้นที่ 4 แต่ก็ประสบปัญหาในการปรับปรุงแก้ไขข้อมูล เช่น การลบข้อมูล ของทูเพิลที่ 3 ข้อมูลของชื่อผู้ผลิต ชื่อ WANIDA ก็จะหายไปจากฐานข้อมูลหรือหากมีการเปลี่ยนชื่อสินค้าใด สินค้าหนึ่ง ก็จะต้องทำการปรับปรุงหลายทูเพิล
เพื่อหลีกเลี่ยงปัญหาดังกล่าว จึงทำการแตกรีเลชั่น SPP เป็น 3 รีเลชั่นย่อย (Projection) โดยในแต่ละรีเลชั่นย่อย  จะประกอบด้วยแอททริบิวต์แต่ละคู่เป็นคีย์ผสมของรีเลชั่นย่อย
เมื่อแตกรีเลชั่น SPP ออกเป็นรีเลชั่น SP และ PPJ และ PJS แล้ว  หากนำ ทั้ง 3 รีเลชั่นมาเชื่อมโยงกันจะมีข้อมูลเหมือนในรีเลชั่น SPP  ดังนั้นเมื่อ มีการแตกรีเลชั่นออกมา  และมีการเชื่อมโยงรีเลชั่นย่อยนั้นใหม่   หาก ไม่มีข้อมูลที่แตกต่างไปจากรีเลชั่นเดิม  ก็จะสามารถแตกรีเลชั่นนั้นได้ แต่ถ้าหากแตกเป็นรีเลชั่นย่อยแล้วเกิดข้อมูลไม่เหมือนกับรีเลชั่นเดิมก็ให้ ถือว่ารีเลชั่นเดิมนั้นอยู่ในรูปแบบบรรทัดฐานที่ 5 แล้ว  จากตัวอย่าง รีเลชั่น SCPJ เป็นรีเลชั่นที่อยู่ในรูปแบบบรรทัดฐานขั้นที่ 4   โดยมี แอททริบิวต์รหัสผู้ผลิต (SNO)  ชื่อจังหวัดของผู้ผลิต (CITY)  และรหัส โครงการ (PJNO) ประกอบเป็นคีย์หลัก  รีเลชั่นนี้ก็ยังมีปัญหาที่อาจเกิด ความผิดพลาดในการเพิ่มปรับปรุงหรือลบข้อมูลจึงทำการแตก  รีเลชั่น SCPJ ออกเป็นรีเลชั่น SC  CPJ  PJS  แต่ก็เกิดปัญหาเมื่อนำทั้ง 3 รีเลชั่นมาเชื่อมโยงกัน  ก็จะมีข้อมูลเกินมาคือ S1 RAYONG PJ01 ซึ่งไม่มีในรีเลชั่นเดิม 
รูปแบบบรรทัดฐานของบอยส์และคอดด์
(Boyce/Codd Normal Form : BCNF)
รีเลชั่นหนึ่งๆ จะอยู่ในรูปแบบบรรทัดฐานของบอยส์และคอดด์ก็ต่อเมื่อ "รีเลชั่นนั้นๆ อยู่ในรูปแบบบรรทัดฐานขั้นที่ 3 และไม่มีแอททริบิวต์อื่นในรีเลชั่นที่สามารถระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก หรือ ส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่คีย์หลักเป็นคีย์ผสม" โดยทั่วไปรูปแบบบรรทัดฐานของบอยส์และคอดด์จะอยู่ในรูปแบบ บรรทัดฐานขั้นที่ 3 แต่ไม่จำเป็นเสมอไปว่ารูปแบบบรรทัดฐานขั้นที่3 จะอยู่ในรูปแบบของ BCNF ทั้งนี้เนื่องจากรูปแบบนี้เป็นรูปแบบที่ขยายขอบเขตของรูปแบบบรรทัดฐานขั้นที่ 3 ให้เหมาะสมยิ่งขึ้น โดยรูปแบบของรีเลชั่นที่มีโอกาสที่จะต้องผ่านการทำให้เป็นบรรทัดฐาน BCNF   มักจะมีคุณสมบัติดังนี้ คือเป็นรีเลชั่นที่มีคีย์คู่แข่งหลายคีย์ (Multiple Candidate Key) คีย์คู่แข่งเป็นคีย์ผสม (Composite Key) และคีย์คู่แข่งนั้นมีความซ้ำซ้อนกัน (Overlapped) ” เพื่อให้ง่ายต่อการอธิบาย จะใช้รีเลชั่น Supplier 3 เป็นตัวอย่าง ในการอธิบายโดยสมมุติว่าชื่อของผู้ผลิต ( SNAME) เป็นค่าไม่ซ้ำกัน และมีคุณสมบัติเป็นคีย์หลักได้เช่นกัน ดังรูป  
SUPPLIER3
Sno
         Sname
Pno
Qty
S1
SERI
P1
300
S1
SERI
P2
200
S1
SERI
P3
400
S1
SERI
P4
200
S1
SERI
P5
100
S1
SERI
P6
100
S2
WANIDA
P1
300
S2
WANIDA
P2
400
S3
SOMCHAI 
P2
200
S4
ORAPIN
P2
200
S4 
ORAPIN
P4
300
S4
ORAPIN
P5
400
จากรูป เป็นรีเลชั่นที่มีปัญหาเพราะมีคีย์คู่แข่งเป็นคีย์ผสม และมีความซ้ำซ้อนกัน คีย์คู่แข่งที่มีคุณสมบัติเป็นคีย์หลักของรีเลชั่น  อาจจะเป็นแอททริบิวต์รหัสผู้ผลิตและรหัสสินค้า (SNO และ PNO) หรือแอททริบิวต์ชื่อผู้ผลิตและรหัสสินค้า (SNAME และ PNO) รีเลชั่นนี้ไม่ได้อยู่ในรูปแบบบรรทัดฐาน BCNF เพราะเมื่อเลือกคีย์คู่แข่งใดเป็นคีย์หลักแล้ว คีย์คู่แข่งที่ไม่ได้ถูกเลือก จะยังปรากฎซ้ำซ้อนอยู่ในรีเลชั่นนี้ และมีคุณสมบัติในการระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก ตัวอย่างเช่น หากเลือกแอททริบิวต์ SNO และ PNO เป็นคีย์หลักแล้ว จะเกิดปัญหาในรีเลชั่นนี้คือ  แอททริบิวต์ SNAME จะมีคุณสมบัติในการระบุค่าของแอททริบิวต์ SNO 
นอกจากนี้ รีเลชั่นนี้ยังเป็นรีเลชั่นที่ประกอบด้วยข้อมูลที่ซ้ำซ้อนกันอันจะก่อให้เกิดความผิดพลาดที่เกิดจากการเพิ่ม แก้ไขหรือปรับปรุงข้อมูล เช่น การเปลื่ยนชื่อของผู้ผลิต S1 จะต้องแก้ไขหลายทูเพิล ซึ่งอาจเกิดความผิดพลาดที่แก้ไขข้อมูลไม่ครบถ้วนได้ ดังนั้น รีเลชั่นSupplier3จึงต้องทำการแตกรีเลชั่นออกโดยแยกแอททริบิวต์ที่สามารถระบุค่าของคีย์คู่แข่งแยกเป็นอีกรีเลชั่นหนึ่งซึ่งอาจทำได้สองกรณี คือกรณีที่ 1 Supplier 4 (Sno,Sname)มี Sno และ Sname เป็นคีย์หลัก  Order 2 (Sno,Pno,Qty)  มี Sno และ Pno เป็นคีย์หลักหรือ กรณีที่ 2 Supplier 4 (Sno,Sname)  มี Sno และ Sname เป็นคีย์หลัก  Order 2 (Sname,Pno,Qty)  มี Sname และ Pno เป็นคีย์หลักกล่าวโดยสรุปรูปแบบ BCNF เป็นรูปแบบที่ขยายขอบเขตของรูปแบบบรรทัดฐานขั้นที่ 3 โดยมีการตรวจสอบรีเลชั่นว่ามีแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก แต่สามารถระบุค่าของคีย์หลักได้