มีข้อมูลที่สม่ำเสมอ ไม่ซ้ำซ้อน และสัมพันธ์กันใน ฐานข้อมูล เป็นประโยชน์อย่างมาก เพื่อการนี้ การปรับฐานข้อมูลให้เป็นมาตรฐาน กระบวนการจะดำเนินการ เราทราบดีว่าฐานข้อมูลเป็นระบบที่จัดระเบียบข้อมูลในลักษณะที่มีโครงสร้าง ดังนั้น การปรับฐานข้อมูลให้เป็นมาตรฐาน กระบวนการช่วยให้คุณสามารถจัดการข้อมูลของฐานข้อมูลในรูปแบบที่มีโครงสร้างที่ดีและแม่นยำ
สารบัญ
- การปรับฐานข้อมูลให้เป็นมาตรฐานคืออะไร
- วัตถุประสงค์ของการทำให้ฐานข้อมูลเป็นมาตรฐาน
- ความผิดปกติในการปรับฐานข้อมูลให้เป็นมาตรฐาน
- คีย์ในฐานข้อมูล
- การพึ่งพาการทำงานในฐานข้อมูล
- รูปแบบต่างๆ ของการทำให้ฐานข้อมูลเป็นมาตรฐาน
- บทสรุป
- บทความแนะนำ
การปรับฐานข้อมูลให้เป็นมาตรฐานคืออะไร
ดิ การปรับฐานข้อมูลให้เป็นมาตรฐาน กระบวนการกำจัด ความซ้ำซ้อนของข้อมูล และเสริมสร้าง ความสมบูรณ์ของข้อมูล . ความซ้ำซ้อนของข้อมูล หมายถึงข้อมูลที่ซ้ำกัน ใช้พื้นที่ในดิสก์มากขึ้น และทำให้หน่วยความจำดิสก์สูญเปล่า หากมีการแก้ไขข้อมูลในที่เดียว จะต้องมีการเปลี่ยนแปลงในทุกตำแหน่งไม่ว่าจะอยู่ที่ใด ดังนั้นการมีข้อมูลซ้ำซ้อนและซ้ำซากในตารางฐานข้อมูลจึงไม่สามารถทำได้
อีกวาระหนึ่ง ความสมบูรณ์ของข้อมูล หมายถึงความสมบูรณ์และความสม่ำเสมอของข้อมูล ข้อมูลฐานข้อมูลต้องถูกต้องและมีความหมาย ดังนั้น เพื่อให้มั่นใจถึงความสมบูรณ์ของข้อมูลและการไม่ซ้ำซ้อน การปรับฐานข้อมูลให้เป็นมาตรฐานจึงถูกนำมาใช้
พร้อมกับขจัดความซ้ำซ้อนของข้อมูลและเพิ่มความสมบูรณ์ของข้อมูล การปรับฐานข้อมูลให้เป็นมาตรฐาน กระบวนการกำจัดความผิดปกติของฐานข้อมูลต่างๆ เช่น การแทรก การลบ และการอัปเดตด้วย ความผิดปกติในฐานข้อมูลทำให้ความสมบูรณ์ของข้อมูลลดลง
วัตถุประสงค์หลักของการทำให้เป็นมาตรฐานคือการแบ่งตารางหรือความสัมพันธ์ที่ใหญ่กว่าในฐานข้อมูลออกเป็นตารางที่เล็กกว่าและแนะนำความสัมพันธ์ระหว่างตารางเหล่านั้น แต่ละตารางหรือความสัมพันธ์ควรมีค่าแอตทริบิวต์เดียว เรียกว่าค่าอะตอม ตารางฐานข้อมูลควรมีเฉพาะข้อมูลที่เกี่ยวข้อง และไม่มีข้อมูลอื่นๆ ที่ไม่เกี่ยวข้อง
วัตถุประสงค์ของการทำให้ฐานข้อมูลเป็นมาตรฐาน
เมื่อคุณทำให้ฐานข้อมูลเป็นมาตรฐาน ตรวจสอบให้แน่ใจว่าคุณบรรลุวัตถุประสงค์ต่อไปนี้:
- ข้อมูลในฐานข้อมูลควรจัดเก็บอย่างมีเหตุผล ตารางขนาดใหญ่จะถูกจัดกลุ่มเป็นตารางที่เล็กกว่า กลุ่มเล็กทุกกลุ่มต้องสะท้อนถึงส่วนของกลุ่มใหญ่
- ตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณมีความสอดคล้องกัน การปรับเปลี่ยนใดๆ ในฐานข้อมูล เช่น การแทรก การลบ และการอัพเดต ไม่ควรส่งผลกระทบต่อความสมบูรณ์ของข้อมูล
- หากมีข้อมูลเดียวกันอยู่ในตำแหน่งที่แตกต่างกัน คุณต้องแก้ไขข้อมูลดังกล่าวในทุกพื้นที่ ขณะทำให้ฐานข้อมูลเป็นมาตรฐาน ตรวจสอบให้แน่ใจว่าคุณจำเป็นต้องอัปเดตข้อมูลในตำแหน่งเดียวเท่านั้น
- A -> B
- B ไม่ถือ A
- B -> C
- Stud_Id -> Stud_Name
- Stud_Name ไม่ถือ Stud_Id
- Stud_Name -> Stud_Age
- ตารางต้องเป็นไปตามรูปแบบปกติครั้งแรก
- แอตทริบิวต์ที่ไม่ใช่ไพรม์ของตารางไม่ควรขึ้นอยู่กับชุดย่อยที่เหมาะสมของคีย์ตัวเลือก
- ความสัมพันธ์ควรเป็นไปตามรูปแบบปกติที่สอง (2NF)
- แอตทริบิวต์ที่ไม่ใช่ไพรม์ใดๆ ไม่ควรมีการพึ่งพาฟังก์ชันสกรรมกริยาบนซูเปอร์คีย์
- X ควรเป็น superkey ของความสัมพันธ์
- Y ควรเป็นไพรม์แอตทริบิวต์ของความสัมพันธ์
- ความสัมพันธ์ต้องอยู่ในรูปแบบปกติที่สาม (3NF)
- สำหรับการพึ่งพาฟังก์ชัน A -> B ในความสัมพันธ์ A ควรเป็น superkey
- ความสัมพันธ์ควรเป็นไปตามรูปแบบปกติของ Boyce Codd
- ไม่ควรมีการพึ่งพาหลายค่าระหว่างแอตทริบิวต์ของตาราง
- ตารางอยู่ในรูปแบบปกติที่สี่ (4NF)
- ไม่ควรมีการพึ่งพาการเข้าร่วมและการรวมความสัมพันธ์ควรไม่มีการสูญเสีย
ความผิดปกติในการปรับฐานข้อมูลให้เป็นมาตรฐาน
ใน การจัดการฐานข้อมูล ระบบ (DBMS) มีความผิดปกติสามประเภทที่แตกต่างกัน กล่าวคือ การแทรก การลบ และการอัปเดต ความผิดปกติทั้งสามนี้ส่งผลต่อหลักการความสมบูรณ์ถูกต้องของข้อมูล

ให้เราพูดถึงแต่ละความผิดปกติทั้งสาม แต่ก่อนอื่นให้เราพิจารณาความสัมพันธ์หรือพนักงานตาราง มีสี่แอตทริบิวต์ Emp_ID, Emp_Name, Emp_Add และ Ep_Dept ที่จัดเก็บข้อมูลของพนักงาน
พนักงาน
Em_ID | Em_Name | Emp_Add | Emp_Dept |
---|---|---|---|
301 | จอห์น | แคลิฟอร์เนีย | D01 |
301 | จอห์น | แคลิฟอร์เนีย | D022 |
323 | แซมมี่ | วอชิงตันดีซี | D08 |
366 | นิค | ชิคาโก | D10 |
366 | นิค | ชิคาโก | D14 |
ตารางด้านบนเก็บข้อมูลพนักงาน แต่ไม่ได้อยู่ในรูปแบบปกติ เมื่อตารางไม่อยู่ในรูปแบบมาตรฐาน คุณอาจประสบปัญหาหลายอย่างในขณะที่ข้อมูลใหม่ที่น่าสนใจ การลบข้อมูลที่มีอยู่ หรือการอัปเดตข้อมูลปัจจุบัน
ความผิดปกติของการแทรกไม่อนุญาตให้ผู้ใช้เพิ่มข้อมูลใหม่ลงในฐานข้อมูล นี่เป็นเพราะขาดข้อมูลบางอย่าง พิจารณาความสัมพันธ์ของพนักงานข้างต้น หากมีพนักงานใหม่เข้าร่วมบริษัทและไม่มีแผนกใดได้รับมอบหมาย ข้อมูลของพนักงานรายนั้นจะไม่สามารถแทรกลงในตารางได้ เนื่องจากเราไม่สามารถแทรก NULL ลงใน Emp_Dept
ความผิดปกติอีกอย่างหนึ่งคือความผิดปกติในการลบ ในกรณีนี้ การลบข้อมูลจะไม่สามารถทำได้ เนื่องจากอาจทำให้ข้อมูลสูญหายได้ พิจารณาตารางพนักงานด้านบน สมมติว่าแผนก D08 ปิด ข้อมูลที่เกี่ยวข้องกับแซมมี่จะถูกลบออกจากตารางพนักงาน ดังนั้นบริษัทจะสูญเสียข้อมูลของแซมมี่ เนื่องจากเขาทำงานอยู่ในแผนกเดียว
ความผิดปกติของการอัปเดตเป็นอีกองค์ประกอบหนึ่งที่ทำให้ข้อมูลไม่สอดคล้องกัน เราใช้ตัวอย่างของตารางพนักงานเพื่อทำความเข้าใจความผิดปกติของการอัปเดต พิจารณาพนักงานจอห์นที่ทำงานในแผนก D01 และ D022 หากคุณต้องการแก้ไขที่อยู่ของ John คุณต้องอัปเดตทั้งสองแถวของ D01 และ D022 อาจเป็นอันตรายต่อหลักการความสมบูรณ์ของข้อมูล หากที่อยู่ถูกเปลี่ยนในแถวหนึ่งและอีกแถวหนึ่งยังคงเหมือนกับแถวก่อนหน้า ที่อยู่จะสิ้นสุดด้วยการอัปเดตผิดปกติ
ดิ การปรับฐานข้อมูลให้เป็นมาตรฐาน มีประโยชน์ในการกำจัดความผิดปกติทั้งสามข้างต้นที่ส่งผลให้ตารางฐานข้อมูลอ่อนแอ มีกฎหรือรูปแบบของการทำให้เป็นมาตรฐานหลายประการ ก่อนดำดิ่งสู่รูปแบบการทำให้เป็นมาตรฐาน ก่อนอื่นเราจะเรียนรู้ประเภทคีย์ที่แตกต่างกันในระบบฐานข้อมูล คุณต้องทราบประเภทของคีย์ก่อนที่จะเรียนรู้การปรับฐานข้อมูลให้เป็นมาตรฐาน
คีย์ในฐานข้อมูล
คีย์ในฐานข้อมูลมีบทบาทสำคัญในการระบุข้อมูลที่มีอยู่ในนั้น เมื่อใช้คีย์ คุณสามารถค้นหาข้อมูลใดๆ จากตารางได้อย่างรวดเร็วและง่ายดาย ตารางขนาดใหญ่แบ่งออกเป็นตารางที่เล็กกว่า และใช้คีย์เพื่อเชื่อมต่อตารางที่เล็กกว่า
ดูสิ่งนี้ด้วย 20 ซอฟต์แวร์การจัดการเวิร์กโฟลว์ที่ดีที่สุด
มาดูคีย์ประเภทต่างๆ ที่ใช้ใน DBMS กัน
ดิ คีย์หลัก เป็นแอตทริบิวต์ของตารางที่ระบุแถวหรือทูเพิลใดๆ โดยไม่ซ้ำกัน คุณต้องเลือกคีย์หลักที่จะค้นหาข้อมูลใด ๆ จากตารางโดยไม่ซ้ำกัน
พิจารณาพนักงานสัมพันธ์ มีแอตทริบิวต์เช่น Emp_ID, Emp_Name, Emp_Add, Passport_Number และ License_Number คีย์หลักของความสัมพันธ์กับพนักงานคือ Emp_ID เนื่องจากจะระบุข้อมูลของพนักงานทุกคนโดยไม่ซ้ำกัน นอกจากนี้ Passport_Number และ License_Number ยังสามารถใช้เป็นคีย์หลักได้ เนื่องจากเป็นคีย์เฉพาะสำหรับพนักงานทุกคน
ดิ รหัสผู้สมัคร ของตารางใดๆ คือชุดของแอตทริบิวต์ขั้นต่ำ และสามารถระบุแถวใดๆ ที่ไม่ซ้ำในความสัมพันธ์ อาจมีคีย์ตัวเลือกเดียวหรือมากกว่าสำหรับความสัมพันธ์เดียว
พิจารณาความสัมพันธ์ข้างต้นของพนักงาน เราเห็นว่าคีย์หลักคือ Emp_ID ซึ่งเป็นเอกลักษณ์และไม่ซ้ำกันสำหรับพนักงานทุกคน แอตทริบิวต์อีกสองรายการคือ Passport_Number และ License_Number เป็นแบบไม่ซ้ำกัน ดังนั้น ทั้งคู่จึงสามารถใช้เป็นคีย์ตัวเลือกได้
ในฐานะที่เป็น คีย์หลัก และ รหัสผู้สมัคร ระบุทุกทูเพิลโดยไม่ซ้ำกัน ซูเปอร์คีย์ยังช่วยค้นหาทูเพิลเฉพาะของตารางอีกด้วย รหัสตัวเลือกเป็นส่วนย่อยของซุปเปอร์คีย์ อาจมีซุปเปอร์คีย์หนึ่งหรือหลายปุ่ม
เราจะใช้ความสัมพันธ์แบบเดียวกันกับพนักงานเพื่อให้มีแนวคิดที่ชัดเจนเกี่ยวกับซุปเปอร์คีย์ แอตทริบิวต์ Emp_ID สามารถค้นหาข้อมูลของพนักงานได้โดยไม่ซ้ำกัน ไม่สามารถใช้แอตทริบิวต์ Emp_Name เป็นคีย์หลักได้ เนื่องจากพนักงานสองคนสามารถใช้ชื่อเดียวกันได้ แต่การรวมกันของ Emp_ID และ Emp_Name สามารถค้นหาข้อมูลของพนักงานได้โดยไม่ซ้ำกัน ดังนั้น (Epm_ID, Emp_Name) จึงทำหน้าที่เป็นซุปเปอร์คีย์สำหรับพนักงานสัมพันธ์
Passprt_Number และ License_Number ยังเป็นซุปเปอร์คีย์ของความสัมพันธ์กับพนักงานอีกด้วย
กุญแจต่างประเทศค่อนข้างแตกต่างจากสามปุ่มด้านบน ใช้เพื่อสร้างการเชื่อมต่อระหว่างสองความสัมพันธ์ พิจารณาความสัมพันธ์ A และ B สองความสัมพันธ์ สมมติว่าคุณลักษณะใดๆ ในความสัมพันธ์ A เป็นคีย์หลักของความสัมพันธ์ B คุณลักษณะนั้นเรียกว่าคีย์ต่างประเทศ
เราจะมาดูตัวอย่างง่ายๆ เพื่อทำความเข้าใจแนวคิดคีย์ต่างประเทศ ให้เรายกตัวอย่างของพนักงานในบริษัท พนักงานทุกคนได้รับมอบหมายให้ทำงานในแผนกต่างๆ ดังนั้นเราจึงใช้สองความสัมพันธ์ คือ พนักงานและแผนก
เรากำหนดความสัมพันธ์ของพนักงานเป็นพนักงาน ( Em_ID , Emp_Name, Passport_Number, License_Number, Dept_ID) และแผนกสัมพันธ์ในฐานะแผนก ( Dept_ID , ฝ่าย_ชื่อ).
ในความสัมพันธ์กับพนักงาน Emp_ID เป็นคีย์หลัก ในขณะที่ Dept_ID เป็นคีย์หลักของแผนกสัมพันธ์ แอตทริบิวต์ Dept_Id เป็นแอตทริบิวต์หนึ่งในความสัมพันธ์ของพนักงาน ซึ่งเป็นคีย์หลักในความสัมพันธ์ของแผนก ดังนั้น Dept_ID จะทำหน้าที่เป็นคีย์นอก
คีย์ผสมคือกลุ่มของคุณลักษณะที่ค้นหาข้อมูลของพนักงานจากความสัมพันธ์โดยเฉพาะ คีย์ผสมคือการรวมกันของแอตทริบิวต์สองรายการและแอตทริบิวต์มากกว่าสองรายการ
จากข้างต้นพนักงานสัมพันธ์ Emp ( Em_ID , Emp_Name, Passport_Number, License_Number) คีย์ผสมคือ (Emp_name, Emp_ID)
ก่อนฟอร์มการทำให้เป็นมาตรฐานของข้อมูล แนวคิดอื่นที่คุณต้องเรียนรู้คือการพึ่งพาการทำงานพร้อมกับประเภทคีย์ แจ้งให้เราทราบรายละเอียดการพึ่งพาการทำงาน
การพึ่งพาการทำงานในฐานข้อมูล
อีเอฟ ค็อด พัฒนาแนวคิดเรื่องการพึ่งพาฟังก์ชันเพื่อหลีกเลี่ยงหรือขจัดข้อมูลที่ซ้ำซ้อน การพึ่งพาการทำงานคือความสัมพันธ์ระหว่างสองแอตทริบิวต์หรือคอลัมน์ที่มีความสัมพันธ์เดียวกัน กล่าวอีกนัยหนึ่ง คุณลักษณะหนึ่งจะค้นหาคุณลักษณะอื่นโดยไม่ซ้ำกัน คุณลักษณะทั้งสองเป็นของความสัมพันธ์เดียวกัน
ตัวอย่างเช่น พิจารณาสองคอลัมน์ A และ B ของตารางเดียวกัน การพึ่งพาการทำงานมีอยู่ระหว่าง A และ B ก็ต่อเมื่อคอลัมน์ A พบคอลัมน์ B โดยไม่ซ้ำกัน โดยจะแสดงเป็น A -> B และอ่านออกเนื่องจาก B ขึ้นอยู่กับฟังก์ชันของ A คุณสามารถอ้างถึง A เป็นตัวกำหนดและ B เป็นผู้ขึ้นต่อกัน .
มีการพึ่งพาการทำงานหลายประเภท ให้เราดูการพึ่งพาการทำงานเหล่านี้บางส่วนที่นี่
พิจารณาคุณลักษณะสองประการ คือ A และ B ที่มีความสัมพันธ์เดียวกัน การพึ่งพาฟังก์ชันเล็กน้อยจะคงอยู่ก็ต่อเมื่อ B เป็นเซตย่อยของ A
A -> B ถ้า B เป็นสับเซตของ A
พิจารณาพนักงานสัมพันธ์ รับสองแอตทริบิวต์ Emp_ID และ Emp_Name แอตทริบิวต์ Emp_Id ขึ้นอยู่กับฟังก์ชันการทำงานตาม {Emp_ID, Emp_Name}
{Emp_ID, Emp_Name} -> Emp_ID
ในที่นี้ Emp_ID คือชุดย่อยของ {Emp_ID, Emp_Name} ดังนั้น {Emp_ID, Emp_Name} -> Emp_ID จึงเป็นฟังก์ชันที่พึ่งพาได้เล็กน้อย
การพึ่งพาฟังก์ชันที่ไม่สำคัญเป็นสิ่งที่ตรงกันข้ามกับการพึ่งพาฟังก์ชันเล็กน้อย ใช้สองคอลัมน์ P และ Q ของความสัมพันธ์เดียวกัน การพึ่งพาฟังก์ชันที่ไม่สำคัญจะคงอยู่หาก Q ไม่ใช่เซตย่อยของ P
P -> Q ถ้า Q ไม่ใช่สับเซตของ P
ถ้าทางแยก P Q เป็น NULL แสดงว่าเป็นการพึ่งพาฟังก์ชันที่ไม่สำคัญอย่างสมบูรณ์
พิจารณาสามคอลัมน์ของความสัมพันธ์ระหว่างพนักงาน Emp_ID, Emp_Name และ Emp_Add
ดูสิ่งนี้ด้วย เครื่องมือซ่อมแซม Windows ที่ดีที่สุด 15 อันดับแรกEmp_ID -> Emp_Name
การพึ่งพาด้านบนเป็นการพึ่งพาการทำงานที่ไม่สำคัญ เนื่องจาก Emp_Name ไม่ใช่ชุดย่อยของ Emp_ID
การพึ่งพาฟังก์ชันสกรรมกริยาเกี่ยวข้องกับการขึ้นต่อกันของฟังก์ชันที่แตกต่างกันสองรายการ มันถูกสร้างขึ้นโดยอ้อมที่เกี่ยวข้องกับการพึ่งพาสองอย่าง พิจารณาคุณลักษณะสามอย่าง A, B และ C ของตารางเดียวกัน การพึ่งพาเล็กน้อย A -> C ถือ if
พิจารณาตารางนักเรียน ใช้สามคอลัมน์ Stud_ID, Stud_Name และ Stud_Age การพึ่งพาฟังก์ชันสกรรมกริยา Stud_ID -> Stud_Age ถือ if
ดังนั้นถ้าเรารู้ ID ของนักเรียน เราก็สามารถค้นหาอายุของเขาหรือเธอได้
สำหรับดีเทอร์มีแนนต์เดียวในการพึ่งพาฟังก์ชันใดๆ มีผู้อยู่ในอุปการะตั้งแต่สองคนขึ้นไป พิจารณาการพึ่งพาฟังก์ชัน X -> Y ในการพึ่งพาแบบหลายค่า สำหรับทุก X จะมีค่า Y หลายค่า
เพื่อให้เป็นไปตามการพึ่งพาที่มีหลายค่า ความสัมพันธ์ควรมีอย่างน้อยสามแอตทริบิวต์ ตัวอย่างเช่น R(X, Y, Z) หากมีการพึ่งพาฟังก์ชันหลายค่าระหว่าง X และ Y ดังนั้นแอตทริบิวต์ Y และ Z ควรเป็นอิสระจากกัน
เราได้เห็นองค์ประกอบที่จำเป็นทั้งหมดที่จำเป็นในการทำความเข้าใจ การปรับฐานข้อมูลให้เป็นมาตรฐาน . ตอนนี้ ให้เราย้ายไปที่หัวข้อหลัก การปรับฐานข้อมูลให้เป็นมาตรฐาน แบบฟอร์ม
พิจารณาความสัมพันธ์ R ที่มีแอตทริบิวต์ A, B, C และ D ความสัมพันธ์ R ถูกแยกออกเป็นอีกสองความสัมพันธ์ คือ R1 และ R2 โดยที่ R1 มีแอตทริบิวต์ A, B และ C และ R2 มีแอตทริบิวต์ C และ D หากเราเข้าร่วม R1 และ R2 โดยใช้แอตทริบิวต์ร่วม C และความสัมพันธ์ที่ได้จะเหมือนกับ R ดังนั้น เข้าร่วมการพึ่งพา มีอยู่
ดิ เข้าร่วมการพึ่งพา กล่าวกันว่าไม่มีการสูญเสียหากแอตทริบิวต์ของความสัมพันธ์ที่เกิดขึ้นหลังจากการเข้าร่วมเหมือนกับแอตทริบิวต์ใน R
รูปแบบต่างๆ ของการทำให้ฐานข้อมูลเป็นมาตรฐาน
หลายรูปแบบของ การปรับฐานข้อมูลให้เป็นมาตรฐาน ได้รับการพัฒนาเพื่อขจัดความซ้ำซ้อนของข้อมูลและปรับปรุง ความสมบูรณ์ของข้อมูล . ต่อไปนี้เป็นแบบฟอร์มการทำให้ฐานข้อมูลเป็นมาตรฐานที่แตกต่างกันไปพร้อมกับอินสแตนซ์

รูปแบบแรกของ การปรับฐานข้อมูลให้เป็นมาตรฐาน เป็นรูปแบบปกติแรก ความสัมพันธ์ของฐานข้อมูลอยู่ในรูปแบบปกติครั้งแรกเมื่อแอตทริบิวต์ทั้งหมดมีค่าเดียวหรือค่าอะตอม แอตทริบิวต์ของตารางไม่ควรมีหลายค่า ให้เราดูตัวอย่างว่าตารางสอดคล้องกับรูปแบบปกติแรกอย่างไร
พิจารณาตาราง Employee ซึ่งมี Emp_ID, Emp_Name, Emp_Add และ Emp_Mobile_Number เป็นแอตทริบิวต์
พนักงาน
Em_ID | Em_Name | Emp_Add | Emp_Mobile_Number |
---|---|---|---|
E01 | จอห์น | นิวเดลี | 8389097676 |
E02 | มิเชล | มุมไบ | 7878689878 |
E03 | แซม | รันชี | 98765432197656463686 |
E04 | โอลิเวอร์ | โกลกาตา | 9087654547 |
ตารางด้านบนไม่อยู่ในรูปแบบปกติแรก (1NF) ในฐานะพนักงาน แซมมีหมายเลขโทรศัพท์เคลื่อนที่สองหมายเลข ดังนั้นตารางข้างต้นจึงไม่เป็นไปตามรูปแบบปกติข้อแรก รูปแบบปกติรูปแบบแรกระบุว่าทุกแอตทริบิวต์ควรมีค่าอะตอมมิก ดังนั้นเราจึงต้องทำตารางด้านบนให้อยู่ในรูปแบบปกติอันแรก
พนักงาน1
Em_ID | Em_Name | Emp_Add | Emp_Mobile_Number |
---|---|---|---|
E01 | จอห์น | นิวเดลี | 8389097676 |
E02 | มิเชล | มุมไบ | 7878689878 |
E03 | แซม | รันชี | 9876543219 |
E03 | แซม | รันชี | 7656463686 |
E04 | โอลิเวอร์ | โกลกาตา | 9087654547 |
ความสัมพันธ์ Employee1 ข้างต้นอยู่ในรูปแบบปกติรูปแบบแรก เนื่องจากทุกแอตทริบิวต์มีค่าเดียว
ก่อนที่เราจะเริ่มต้นรูปแบบปกติที่สอง คุณจำเป็นต้องรู้เกี่ยวกับแอตทริบิวต์ที่ไม่ใช่ไพรม์และเฉพาะ แอตทริบิวต์หลักคือแอตทริบิวต์ที่มีอยู่ในคีย์ตัวเลือก และแอตทริบิวต์ที่ไม่ใช่ไพรม์คือแอตทริบิวต์ที่ไม่มีอยู่ในคีย์ตัวเลือก
อื่น การปรับฐานข้อมูลให้เป็นมาตรฐาน แบบฟอร์มคือรูปแบบปกติที่สอง ความสัมพันธ์หรือตารางฐานข้อมูลใดๆ เป็นไปตามรูปแบบปกติที่สอง หากเป็นไปตามเงื่อนไขด้านล่าง:
คุณสามารถมีแนวคิดที่ชัดเจนเกี่ยวกับรูปแบบปกติที่สองหลังจากดูตัวอย่างด้านล่าง
พิจารณาความสัมพันธ์ของครูที่มี Teacher_Id, Subject และ Teacher_Age เป็นแอตทริบิวต์ ตารางมีดังนี้:
ครู
ครู_ID | เรื่อง | ครู_อายุ |
---|---|---|
T01 | Java | 35 |
T01 | โครงสร้างข้อมูล | 35 |
T02 | Python | 35 |
T03 | โครงสร้างข้อมูล | 40 |
T03 | DBMS | 40 |
ในที่นี้ คีย์ของผู้สมัครคือ {Teacher_ID, Subject} ซึ่งค้นหาข้อมูลของครูโดยเฉพาะ เนื่องจากแอตทริบิวต์ Teacher_Age ไม่ได้อยู่ในคีย์ตัวเลือก เซิร์ฟเวอร์จึงเป็นแอตทริบิวต์ที่ไม่ใช่ไพรม์
หลังจากดูความสัมพันธ์ข้างต้นแล้ว เราสามารถสรุปได้ว่าตารางเป็นไปตามรูปแบบปกติรูปแรกของ การปรับฐานข้อมูลให้เป็นมาตรฐาน . ทุกแอตทริบิวต์มีค่าเดียว แต่มันไม่ได้อยู่ในรูปแบบปกติที่สอง เราสามารถระบุอายุของครูคนใดก็ได้ผ่านแอตทริบิวต์ Teacher_ID เท่านั้น เนื่องจาก Teacher_Age เป็นแอตทริบิวต์ที่ไม่ใช่ไพรม์ และ Teacher_ID เป็นเซตย่อยที่เหมาะสมของคีย์ตัวเลือก จึงละเมิดกฎ 2NF
ในการสร้างความสัมพันธ์ข้างต้นในรูปแบบปกติที่สอง เราต้องแบ่งออกเป็นสองตารางดังนี้:
ดูสิ่งนี้ด้วย 16 การแก้ไขสำหรับตำแหน่งที่ไม่พร้อมใช้งานในปัญหา iPhoneครู_อายุ
ครู_ID | ครู_อายุ |
---|---|
T01 | 35 |
T02 | 35 |
T03 | 40 |
เรื่อง
ครู_ID | เรื่อง |
---|---|
T01 | Java |
T01 | โครงสร้างข้อมูล |
T02 | Python |
T03 | โครงสร้างข้อมูล |
T03 | DBMS |
ความสัมพันธ์ทั้งสองข้างต้นอยู่ในรูปแบบปกติที่สอง
รูปแบบปกติที่สามคือรัง การปรับฐานข้อมูลให้เป็นมาตรฐาน รูปร่าง. ความสัมพันธ์ใด ๆ ที่กล่าวว่าอยู่ในภาวะปกติที่สามคือเป็นไปตามเงื่อนไขด้านล่าง:
คุณยังสามารถกำหนดรูปแบบปกติที่สามของ การปรับฐานข้อมูลให้เป็นมาตรฐาน เนื่องจากตารางควรอยู่ใน 2NF และการพึ่งพาการทำงาน X -> Y ควรปฏิบัติตามเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้:
เราจะดูว่าตารางสอดคล้องกับรูปแบบปกติที่สามอย่างไร พิจารณาพนักงานสัมพันธ์ที่มี Emp_ID, Emp_Name, Emp_Zip, Emp_State, Emp_City และ Emp_District ความสัมพันธ์นี้แสดงดังนี้:
พนักงาน
Em_ID | Em_Name | Emp_Zip | Emp_State | Em_City | Emp_District |
---|---|---|---|---|---|
E01 | จอห์น | 267778 | มหาราษฏระ | กัลยัน | มุมไบ |
E02 | แซม | 234567 | ทมิฬนาฑู | เจนไน | เอ็มซิตี้ |
E06 | จอห์นนี่ | 278967 | อุตตราขั ณ ฑ์ | เปารี | Bhagwan |
E07 | ดอกกุหลาบ | 209876 | ทมิฬนาฑู | เจนไน | อุรปักกม. |
E08 | สตีฟ | 215647 | มัธยประเทศ | กวาลิเออร์ | รัตนา |
ซุปเปอร์คีย์ของความสัมพันธ์กับพนักงาน ได้แก่ {Emp_ID}, {Emp_ID, Emp_Name}, {Emp_ID, Emp_Name, Emp_Zip} และอื่นๆ อีกมากมาย รหัสผู้สมัครคือ {Emp_ID} ดังนั้น EMP_ID จึงเป็นแอตทริบิวต์หลักและแอตทริบิวต์อื่นๆ ทั้งหมดเป็นแอตทริบิวต์ที่ไม่ใช่แอตทริบิวต์หลัก
คุณจะเห็นว่าแอตทริบิวต์สามรายการ ได้แก่ Emp_State, Emp_City และ Emp_District ขึ้นอยู่กับฟังก์ชันการทำงานตามแอตทริบิวต์ Emp_Zip เราสามารถค้นหาหมายเลขไปรษณีย์โดยใช้แอตทริบิวต์ Emp_ID ดังนั้น Emp_Zip จึงขึ้นอยู่กับ Emp_ID
แอตทริบิวต์ทั้งสาม ได้แก่ Emp_State, Emp_City และ Emp_District เป็นแอตทริบิวต์ที่ไม่ใช่ไพรม์ โดยทางอ้อมขึ้นอยู่กับแอตทริบิวต์ Emp_ID ซึ่งละเมิดกฎ 3NF เพื่อให้พนักงานสัมพันธ์ปฏิบัติตามรูปแบบปกติที่สาม (3NF) เราจำเป็นต้องแบ่งตารางออกเป็นตารางที่เล็กกว่าดังนี้:
พนักงาน_ID
Em_ID | Em_Name | Emp_Zip |
---|---|---|
E01 | จอห์น | 267778 |
E02 | แซม | 234567 |
E06 | จอห์นนี่ | 278967 |
E07 | ดอกกุหลาบ | 209876 |
E08 | สตีฟ | 215647 |
พนักงาน_Zip
Emp_Zip | Emp_State | Em_City | Emp_District |
---|---|---|---|
267778 | มหาราษฏระ | กัลยัน | มุมไบ |
234567 | ทมิฬนาฑู | เจนไน | เอ็มซิตี้ |
278967 | อุตตราขั ณ ฑ์ | เปารี | Bhagwan |
209876 | ทมิฬนาฑู | เจนไน | อุรปักกม. |
215647 | มัธยประเทศ | กวาลิเออร์ | รัตนา |
สองตารางข้างต้นอยู่ในรูปแบบปกติที่สาม
The Boyce Codd รูปปกติของ การปรับฐานข้อมูลให้เป็นมาตรฐาน เป็นรุ่นขยายของ 3NF มันถูกเรียกว่า 3.5NF ตารางหรือความสัมพันธ์ใดๆ เป็นไปตาม BCNF หากเป็นไปตามเงื่อนไขต่อไปนี้:
คุณสามารถเข้าใจแนวคิด BCNF ได้อย่างชัดเจนผ่านตัวอย่างของพนักงานที่ทำงานในแผนกต่างๆ ของหลายบริษัท พิจารณาความสัมพันธ์ของพนักงานที่มี Emp_ID, Emp_Nationality, Emp_Department, Dept_Type, No_of_Employees เป็นแอตทริบิวต์ ความสัมพันธ์มีค่าต่อไปนี้:
พนักงาน
Em_ID | Emp_Nationality | Emp_Department | แผนก_ประเภท | ไม่มีพนักงาน |
---|---|---|---|---|
E01 | ชาวอินเดีย | การผลิต | D01 | 250 |
E01 | ชาวอินเดีย | การจัดการ | D02 | 300 |
E02 | อเมริกัน | การสนับสนุนทางเทคนิค | D03 | 400 |
E02 | อเมริกัน | ซื้อ | D04 | 450 |
ผู้สมัครสำหรับความสัมพันธ์ข้างต้นคือ {Emp_ID, Emp_Dept} ทั้งแอตทริบิวต์ Emp_ID เดียวไม่สามารถให้ข้อมูลแผนกได้ และ Emp_Dept ไม่สามารถระบุข้อมูลพนักงานได้ ดังนั้น ความสัมพันธ์ข้างต้นจึงไม่เป็นไปตาม BCNF ในการทำตารางด้านบนใน BCNF ให้แบ่งออกเป็นสามตารางดังนี้:
พนักงาน_สัญชาติ
Em_ID | Emp_Nationality |
---|---|
E01 | ชาวอินเดีย |
E02 | อเมริกัน |
ที่นี่ Emp_ID คือคีย์ตัวเลือก การพึ่งพาการทำงานคือ Emp_ID -> Emp_Nationality ดังนั้นจึงอยู่ใน BCNF
พนักงาน_แผนก
Emp_Department | แผนก_ประเภท | ไม่มีพนักงาน |
---|---|---|
การผลิต | D01 | 250 |
การจัดการ | D02 | 300 |
การสนับสนุนทางเทคนิค | D03 | 400 |
ซื้อ | D04 | 450 |
ที่นี่ Emp_Dept คือคีย์ตัวเลือก และการพึ่งพาการทำงานคือ {Emp_Dept -> Dept_Type, No_of_Employees} ดังนั้นความสัมพันธ์ข้างต้นจึงสอดคล้องกับ BCNF
พนักงาน_ID_แผนก
Em_ID | Emp_Dept |
---|---|
E01 | การผลิต |
E01 | การจัดการ |
E02 | การสนับสนุนทางเทคนิค |
E02 | ซื้อ |
สำหรับความสัมพันธ์นี้ Emp_ID และ Emp_Dept ทั้งคู่เป็นคีย์ตัวเลือก
เราได้เห็นการพึ่งพาหลายค่าในส่วนด้านบน ตารางนี้อยู่ในรูปแบบปกติที่สี่หากเป็นไปตามเงื่อนไขด้านล่างทั้งหมด:
เราจะพูดถึงรูปแบบปกติที่สี่โดยใช้ความสัมพันธ์ของนักเรียน ความสัมพันธ์ของนักศึกษามีสามคุณลักษณะ Stud_ID, Stud_Course และ Stud_Hobby ค่าตารางมีดังต่อไปนี้:
นักเรียน
Stud_ID | Stud_Course | Stud_Hobby |
---|---|---|
S01 | คณิตศาสตร์ | ฮอกกี้ |
S01 | ฟิสิกส์ | เทนนิส |
S02 | การเขียนโปรแกรม | ฮอกกี้ |
S02 | เคมี | เทนนิส |
ความสัมพันธ์ข้างต้นไม่อยู่ในรูปแบบปกติที่สี่ (4NF) เนื่องจากมีการอ้างอิงหลายค่าในนั้น แอตทริบิวต์ Stud_Course และ Stud_Hobby ขึ้นอยู่กับแอตทริบิวต์ Stud_ID ซึ่งจะสิ้นสุดด้วยการพึ่งพาหลายค่า ดังนั้น ในการสร้างความสัมพันธ์ข้างต้นใน 4NF เราจำเป็นต้องแบ่งความสัมพันธ์ออกเป็นสองความสัมพันธ์ที่แตกต่างกันดังนี้:
นักศึกษา_หลักสูตร
Stud_ID | Stud_Course |
---|---|
S01 | คณิตศาสตร์ |
S01 | ฟิสิกส์ |
S02 | การเขียนโปรแกรม |
S02 | เคมี |
นักเรียน_งานอดิเรก
Stud_ID | Stud_Hobby |
---|---|
S01 | ฮอกกี้ |
S01 | เทนนิส |
S02 | ฮอกกี้ |
S02 | เทนนิส |
ความสัมพันธ์ทั้งสองข้างต้นอยู่ในรูปแบบปกติที่สี่
อื่น การปรับฐานข้อมูลให้เป็นมาตรฐาน รูปคือรูปปกติที่ห้า เรียกอีกอย่างว่า Project-Join Normal Form (PJ/NF) ความสัมพันธ์ใดๆ เป็นไปตามรูปแบบปกติที่ 5 หากเป็นไปตามเงื่อนไขต่อไปนี้:
เพื่อให้เข้าใจแนวคิดรูปแบบปกติที่ 5 เราจะดูตัวอย่างความสัมพันธ์ของคณะ
คณะ
Fac_Subject | Fac_Name | Fac_Sem |
---|---|---|
วิทยาศาสตร์คอมพิวเตอร์ | จอห์น | ครึ่ง 1 |
วิทยาศาสตร์คอมพิวเตอร์ | โอลิเวอร์ | ครึ่ง 1 |
อิเล็กทรอนิกส์และโทรคมนาคม | โอลิเวอร์ | ครึ่ง 1 |
อิเล็กทรอนิกส์และโทรคมนาคม | สตีฟ | ภาค2 |
เครื่องกล | Stephen | ครึ่ง 1 |
ความสัมพันธ์ของคณะไม่เป็นไปตามรูปแบบปกติที่ 5 (5NF) เพื่อให้ความสัมพันธ์ของคณะอยู่ในรูปแบบปกติที่ 5 ให้แบ่งความสัมพันธ์ออกเป็น 3 ความสัมพันธ์ ดังแสดงด้านล่าง
คณะ1
Fac_Sem | Fac_Subject |
---|---|
ครึ่ง 1 | วิทยาศาสตร์คอมพิวเตอร์ |
ครึ่ง 1 | อิเล็กทรอนิกส์และโทรคมนาคม |
ครึ่ง 1 | เครื่องกล |
ภาค2 | อิเล็กทรอนิกส์และโทรคมนาคม |
คณะ2
Fac_Sem | Fac_Name |
---|---|
ครึ่ง 1 | จอห์น |
ครึ่ง 1 | โอลิเวอร์ |
ครึ่ง 1 | โอลิเวอร์ |
ภาค2 | สตีฟ |
ครึ่ง 1 | Stephen |
คณะ3
Fac_Subject | Fac_Name |
---|---|
วิทยาศาสตร์คอมพิวเตอร์ | จอห์น |
วิทยาศาสตร์คอมพิวเตอร์ | โอลิเวอร์ |
อิเล็กทรอนิกส์และโทรคมนาคม | โอลิเวอร์ |
อิเล็กทรอนิกส์และโทรคมนาคม | สตีฟ |
เครื่องกล | Stephen |
ความสัมพันธ์ทั้งสามข้างต้นอยู่ในรูปแบบปกติที่ห้า
บทสรุป
ดิ การปรับฐานข้อมูลให้เป็นมาตรฐาน กระบวนการมีประโยชน์อย่างยิ่งในการกำจัดข้อมูลที่ซ้ำซ้อนและปรับปรุงหลักการความสมบูรณ์ถูกต้องของข้อมูล นอกจากนี้ยังช่วยประหยัดพื้นที่ดิสก์ด้วยการลบข้อมูลที่ซ้ำซ้อนออกจากฐานข้อมูล ผ่านกระทู้นี้จะเข้าใจความต่าง การปรับฐานข้อมูลให้เป็นมาตรฐาน แบบฟอร์มและประเภทการพึ่งพาการทำงาน
คีย์เป็นองค์ประกอบหลักในฐานข้อมูล ช่วยให้ผู้ใช้สามารถดึงข้อมูลได้อย่างรวดเร็วและมีประสิทธิภาพ เราครอบคลุมประเภทของคีย์ คีย์หลัก คีย์ตัวเลือก คีย์พิเศษ คีย์นอก และคีย์ผสม
เนื้อหาของบทความนี้จะให้แนวคิดสั้น ๆ เกี่ยวกับประเภทการพึ่งพาการทำงานที่แตกต่างกัน เราได้ครอบคลุมถึงหกชนิดที่แตกต่างกันของ การปรับฐานข้อมูลให้เป็นมาตรฐาน รูปแบบ, 1NF, 2NF, 3NF, BCNF, 4NF และ 5NF และตัวอย่างที่เกี่ยวข้อง เราหวังว่าคุณจะพบข้อมูลที่จำเป็นทั้งหมดที่จำเป็นในการศึกษา การปรับฐานข้อมูลให้เป็นมาตรฐาน แบบฟอร์ม