อ่าน 6 นาที
การทำให้ฐานข้อมูลเป็นมาตรฐาน
การทำให้ฐานข้อมูลเป็นรูปแบบมาตรฐาน (Database normalization) คือกระบวนการจัดโครงสร้าง ฐานข้อมูลเชิงสัมพันธ์ ให้สอดคล้องกับ รูปแบบมาตรฐานต่างๆ เพื่อลด ความซ้ำซ้อนของข้อมูล...
การทำให้ฐานข้อมูลเป็นมาตรฐาน
การทำให้ฐานข้อมูลเป็นรูปแบบมาตรฐาน (Database normalization)คือกระบวนการจัดโครงสร้างฐานข้อมูลเชิงสัมพันธ์ให้สอดคล้องกับรูปแบบมาตรฐานต่างๆเพื่อลดความซ้ำซ้อนของข้อมูลและปรับปรุงความสมบูรณ์ของข้อมูล กระบวนการ นี้ ได้รับการเสนอครั้งแรกโดยนักวิทยาศาสตร์คอมพิวเตอร์ชาวอังกฤษเอ็ดการ์ เอฟ. คอดด์ในฐานะส่วนหนึ่งของแบบจำลองเชิงสัมพันธ์ ของเขา
การทำให้ เป็นรูปแบบมาตรฐาน (Normalization) คือการจัดระเบียบคอลัมน์ (แอตทริบิวต์) และตาราง (ความสัมพันธ์) ของฐานข้อมูลเพื่อให้มั่นใจว่าการพึ่งพา ซึ่งกันและกันนั้น ได้รับการบังคับใช้อย่างถูกต้องโดยข้อจำกัดด้านความสมบูรณ์ของฐานข้อมูล โดยดำเนินการผ่านการใช้กฎเกณฑ์ที่เป็นทางการบางอย่าง ไม่ว่าจะเป็นกระบวนการสังเคราะห์ (การสร้างการออกแบบฐานข้อมูลใหม่) หรือการแยกส่วน (การปรับปรุงการออกแบบฐานข้อมูลที่มีอยู่)
วัตถุประสงค์
วัตถุประสงค์พื้นฐานของรูปแบบปกติแรกที่กำหนดโดย Codd ในปี 1970 คือการอนุญาตให้สอบถามและจัดการข้อมูลโดยใช้ "ภาษาย่อยข้อมูลสากล" ที่มีพื้นฐานมาจากตรรกะลำดับที่หนึ่ง[ 1 ]ตัวอย่างของภาษาดังกล่าวคือSQLแม้ว่า Codd จะมองว่า SQL มีข้อบกพร่องร้ายแรงก็ตาม[ 2 ]
Codd ได้ระบุวัตถุประสงค์ของการทำให้เป็นรูปแบบปกติมากกว่า 1NF (รูปแบบปกติแรก) ไว้ดังนี้:
- เพื่อปลดแอกชุดความสัมพันธ์จากการพึ่งพาการแทรก การอัปเดต และการลบที่ไม่พึงประสงค์
- เพื่อลดความจำเป็นในการปรับโครงสร้างชุดความสัมพันธ์เมื่อมีการนำข้อมูลประเภทใหม่เข้ามาใช้ และเพื่อยืดอายุการใช้งานของโปรแกรมแอปพลิเคชันให้ยาวนานขึ้น
- เพื่อทำให้แบบจำลองเชิงสัมพันธ์นั้นให้ข้อมูลที่เป็นประโยชน์ต่อผู้ใช้มากขึ้น
- เพื่อให้การรวบรวมความสัมพันธ์เป็นกลางต่อสถิติการค้นหา ซึ่งสถิติเหล่านี้อาจเปลี่ยนแปลงไปตามกาลเวลา
— EF Codd, "การทำให้แบบจำลองเชิงสัมพันธ์ของฐานข้อมูลเป็นมาตรฐานเพิ่มเติม" [ 3 ]



เมื่อพยายามแก้ไข (อัปเดต แทรก หรือลบข้อมูล) ในความสัมพันธ์ อาจเกิดผลข้างเคียงที่ไม่พึงประสงค์ดังต่อไปนี้ในความสัมพันธ์ที่ยังไม่ได้ถูกทำให้เป็นรูปแบบมาตรฐานอย่างเพียงพอ:
- ความผิดปกติในการแทรก
- มีบางสถานการณ์ที่ข้อเท็จจริงบางอย่างไม่สามารถบันทึกได้เลย ตัวอย่างเช่น แต่ละระเบียนในความสัมพันธ์ "คณาจารย์และรายวิชา" อาจประกอบด้วย รหัสคณาจารย์ ชื่อคณาจารย์ วันที่จ้างคณาจารย์ และรหัสวิชา ดังนั้น รายละเอียดของคณาจารย์ทุกคนที่สอนอย่างน้อยหนึ่งรายวิชาสามารถบันทึกได้ แต่คณาจารย์ที่เพิ่งได้รับการว่าจ้างและยังไม่ได้รับมอบหมายให้สอนรายวิชาใด ๆ จะไม่สามารถบันทึกได้ เว้นแต่จะตั้งค่ารหัสวิชาเป็นค่าว่าง (null )
- อัปเดตความผิดปกติ
- ข้อมูลเดียวกันสามารถแสดงได้ในหลายแถว ดังนั้นการอัปเดตความสัมพันธ์อาจส่งผลให้เกิดความไม่สอดคล้องกันทางตรรกะ ตัวอย่างเช่น แต่ละระเบียนในความสัมพันธ์ "ทักษะของพนักงาน" อาจประกอบด้วยรหัสพนักงาน ที่อยู่พนักงาน และทักษะ ดังนั้นการเปลี่ยนแปลงที่อยู่ของพนักงานคนใดคนหนึ่งอาจต้องนำไปใช้กับหลายระเบียน (หนึ่งระเบียนสำหรับแต่ละทักษะ) หากการอัปเดตสำเร็จเพียงบางส่วน – ที่อยู่ของพนักงานได้รับการอัปเดตในบางระเบียน แต่ไม่ใช่ทุกระเบียน – ความสัมพันธ์ก็จะอยู่ในสถานะที่ไม่สอดคล้องกัน โดยเฉพาะอย่างยิ่ง ความสัมพันธ์จะให้คำตอบที่ขัดแย้งกันเกี่ยวกับที่อยู่ของพนักงานคนนี้
- ความผิดปกติในการลบ
- ภายใต้สถานการณ์บางอย่าง การลบข้อมูลที่แสดงถึงข้อเท็จจริงบางอย่าง อาจจำเป็นต้องลบข้อมูลที่แสดงถึงข้อเท็จจริงที่แตกต่างกันโดยสิ้นเชิงด้วย ความสัมพันธ์ "คณาจารย์และรายวิชา" ที่อธิบายไว้ในตัวอย่างก่อนหน้านี้ ประสบปัญหาความผิดปกติประเภทนี้ เพราะหากคณาจารย์ท่านใดหยุดสอนในรายวิชาใดๆ ชั่วคราว ข้อมูลสุดท้ายที่ปรากฏของคณาจารย์ท่านนั้นจะต้องถูกลบออก ซึ่งเท่ากับเป็นการลบคณาจารย์ท่านนั้นไปด้วย เว้นแต่ว่าช่องรหัสรายวิชาจะถูกตั้งค่าเป็นค่าว่าง (null)
ลดการออกแบบใหม่ให้น้อยที่สุดเมื่อขยายโครงสร้างฐานข้อมูล
ฐานข้อมูลที่ได้รับการปรับให้เป็นมาตรฐานอย่างสมบูรณ์จะช่วยให้สามารถขยายโครงสร้างของฐานข้อมูลเพื่อรองรับข้อมูลประเภทใหม่ๆ ได้โดยไม่ต้องเปลี่ยนแปลงโครงสร้างเดิมมากเกินไป ส่งผลให้แอปพลิเคชันที่โต้ตอบกับฐานข้อมูลได้รับผลกระทบน้อยที่สุด
ความสัมพันธ์แบบมาตรฐาน และความสัมพันธ์ระหว่างความสัมพันธ์แบบมาตรฐานหนึ่งกับอีกความสัมพันธ์แบบมาตรฐานหนึ่ง สะท้อนให้เห็นถึงแนวคิดในโลกแห่งความเป็นจริงและความสัมพันธ์ระหว่างกัน
รูปแบบปกติ
Codd ได้นำเสนอแนวคิดเรื่องการทำให้เป็นมาตรฐานและสิ่งที่ปัจจุบันรู้จักกันในชื่อรูปแบบมาตรฐานแรก (1NF) ในปี พ.ศ. 2513 [ 4 ] Codd ได้กำหนดรูปแบบมาตรฐานที่สอง (2NF) และรูปแบบมาตรฐานที่สาม (3NF) ในปี พ.ศ. 2514 [ 5 ]และ Codd กับRaymond F. Boyceได้กำหนดรูปแบบมาตรฐาน Boyce–Codd (BCNF) ในปี พ.ศ. 2517 [ 6 ]
โรนัลด์ เฟกินได้นำเสนอรูปแบบปกติที่สี่ (4NF) ในปี 1977 และรูปแบบปกติที่ห้า (5NF) ในปี 1979 ส่วนคริสโตเฟอร์ เจ. เดทได้นำเสนอรูปแบบปกติที่หก (6NF) ในปี 2003
โดยทั่วไปแล้ว ความสัมพันธ์ของฐานข้อมูลเชิงสัมพันธ์มักถูกอธิบายว่า "เป็นปกติ" หากตรงตามมาตรฐานรูปแบบปกติที่สาม[ 7 ]ความสัมพันธ์ 3NF ส่วนใหญ่ไม่มีความผิดปกติในการแทรก การอัปเดต และการลบ
รูปแบบมาตรฐาน (จากรูปแบบที่เป็นมาตรฐานน้อยที่สุดไปจนถึงรูปแบบที่เป็นมาตรฐานมากที่สุด) มีดังนี้:
- UNF: รูปแบบที่ไม่เป็นมาตรฐาน
- 1NF: รูปแบบปกติขั้นแรก
- 2NF: รูปแบบปกติที่สอง
- 3NF: รูปแบบปกติที่สาม
- EKNF: รูปแบบปกติของคีย์พื้นฐาน
- BCNF: รูปแบบปกติของบอยซ์-ค็อดด์
- 4NF: รูปแบบปกติลำดับที่สี่
- ETNF: รูปแบบปกติของทูเพิลที่จำเป็น
- 5NF: รูปแบบปกติลำดับที่ห้า
- DKNF: รูปแบบปกติของคีย์โดเมน
- 6NF: รูปแบบปกติลำดับที่หก
| ข้อจำกัด(คำอธิบายอย่างไม่เป็นทางการในวงเล็บ) | UNF (1970) | 1NF (1970) | 2NF (1971) | 3NF (1971) | EKNF (1982) | บีซีเอ็นเอฟ(1974) | 4NF (1977) | อีทีเอ็นเอฟ(2012) | 5NF (1979) | ดีเคเอ็นเอฟ(1981) | 6NF (2003) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| แถวที่ไม่ซ้ำกัน (ไม่มีระเบียนซ้ำ) [ 4 ] | |||||||||||
| คอลัมน์สเกลาร์ (คอลัมน์ไม่สามารถมีความสัมพันธ์หรือค่าประกอบได้) [ 5 ] | |||||||||||
| คุณลักษณะที่ไม่ใช่หลักทุกรายการมีการพึ่งพาเชิงฟังก์ชัน อย่างสมบูรณ์ กับคีย์ผู้สมัคร แต่ละรายการ (คุณลักษณะขึ้นอยู่กับคีย์ทั้งหมด ) [ 5 ] | |||||||||||
| การพึ่งพาเชิงฟังก์ชันที่ไม่สำคัญทุกรายการจะเริ่มต้นด้วยซูเปอร์คีย์หรือสิ้นสุดด้วยแอตทริบิวต์หลัก (แอตทริบิวต์ขึ้นอยู่กับคีย์ผู้สมัครเท่านั้น ) [ 5 ] | |||||||||||
| ความสัมพันธ์เชิงฟังก์ชันที่ไม่ธรรมดาทุกความสัมพันธ์จะเริ่มต้นด้วยซูเปอร์คีย์หรือลงท้ายด้วยแอตทริบิวต์ไพรม์พื้นฐาน (รูปแบบที่เข้มงวดกว่าของ 3NF) | ไม่มีข้อมูล | ||||||||||
| ความสัมพันธ์เชิงฟังก์ชันที่ไม่ธรรมดาทุกความสัมพันธ์จะเริ่มต้นด้วยซูเปอร์คีย์ (รูปแบบที่เข้มงวดกว่าของ 3NF) | ไม่มีข้อมูล | ||||||||||
| ความสัมพันธ์แบบหลายค่าที่ไม่ธรรมดาทุก ความสัมพันธ์ เริ่มต้นด้วยซูเปอร์คีย์ | ไม่มีข้อมูล | ||||||||||
| การพึ่งพาการเข้าร่วมทุกรายการจะมีส่วนประกอบซูเปอร์คีย์[ 8 ] | ไม่มีข้อมูล | ||||||||||
| การเชื่อมต่อแบบพึ่งพาแต่ละรายการจะมีเฉพาะส่วนประกอบซูเปอร์คีย์เท่านั้น | ไม่มีข้อมูล | ||||||||||
| ข้อจำกัดทุกข้อล้วนเป็นผลมาจากข้อจำกัดของโดเมนและข้อจำกัดหลัก | |||||||||||
| ความสัมพันธ์แบบ join dependency ทุกอย่างนั้นไม่สำคัญ |
ตัวอย่าง
การทำให้เป็นรูปแบบปกติ (Normalization) เป็นเทคนิคการออกแบบฐานข้อมูล ซึ่งใช้ในการออกแบบ ตาราง ฐานข้อมูลเชิงสัมพันธ์จนถึงรูปแบบปกติที่สูงขึ้น[ 9 ]กระบวนการนี้เป็นไปอย่างต่อเนื่อง และจะไม่สามารถบรรลุระดับการทำให้เป็นรูปแบบปกติของฐานข้อมูลที่สูงขึ้นได้ เว้นแต่จะบรรลุระดับก่อนหน้าแล้ว[ 10 ]
นั่นหมายความว่า หากเรามีข้อมูลในรูปแบบที่ไม่เป็นมาตรฐาน (มาตรฐานน้อยที่สุด) และต้องการบรรลุระดับมาตรฐานสูงสุด ขั้นตอนแรกคือการทำให้ข้อมูลเป็นไปตามรูปแบบมาตรฐานที่หนึ่งขั้นตอนที่สองคือการทำให้ข้อมูลเป็นไปตามรูปแบบมาตรฐานที่สองและดำเนินการต่อไปตามลำดับที่กล่าวมาข้างต้น จนกว่าข้อมูลจะเป็นไปตาม รูป แบบ มาตรฐานที่หก
อย่างไรก็ตาม รูปแบบปกติที่เกินกว่า4NFส่วนใหญ่เป็นที่สนใจในเชิงวิชาการ เนื่องจากปัญหาที่รูปแบบเหล่านี้มีไว้เพื่อแก้ไขนั้นแทบจะไม่ปรากฏในการปฏิบัติจริง[ 11 ]
ข้อมูลในตัวอย่างต่อไปนี้ถูกออกแบบมาโดยเจตนาให้ขัดแย้งกับรูปแบบมาตรฐานส่วนใหญ่ ในทางปฏิบัติ มักเป็นไปได้ที่จะข้ามขั้นตอนการทำให้เป็นมาตรฐานบางขั้นตอน เนื่องจากข้อมูลได้รับการทำให้เป็นมาตรฐานในระดับหนึ่งแล้ว การแก้ไขการละเมิดรูปแบบมาตรฐานหนึ่งรูปแบบ มักจะแก้ไขการละเมิดรูปแบบมาตรฐานที่สูงกว่าด้วย ในตัวอย่างนี้ มีการเลือกตารางหนึ่งตารางสำหรับการทำให้เป็นมาตรฐานในแต่ละขั้นตอน ซึ่งหมายความว่าในท้ายที่สุด ตารางบางตารางอาจยังไม่ได้รับการทำให้เป็นมาตรฐานอย่างเพียงพอ
ข้อมูลเบื้องต้น
ให้มีตารางฐานข้อมูลที่มีโครงสร้างดังต่อไปนี้ ซึ่งอธิบายถึงหนังสือเล่มหนึ่ง: [ 10 ]
| ชื่อ | ผู้เขียน | สัญชาติของผู้เขียน | รูปแบบ | ราคา | เรื่อง | หน้า | ความหนา | สำนักพิมพ์ | ประเทศผู้จัดพิมพ์ | รหัสประเภท | ชื่อประเภท | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แชด รัสเซลล์ | อเมริกัน | ปกแข็ง | 49.99 |
| 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
ในตัวอย่างนี้ สมมติว่าหนังสือแต่ละเล่มมีผู้เขียนเพียงคนเดียว
ตารางที่สอดคล้องกับแบบจำลองเชิงสัมพันธ์จะมีคีย์หลักซึ่งระบุแถวแต่ละแถวได้อย่างไม่ซ้ำกัน ในตัวอย่างของเรา คีย์หลักเป็นคีย์ผสมของ{Title, Format}ซึ่งแสดงโดยการขีดเส้นใต้:
| ชื่อ | ผู้เขียน | สัญชาติของผู้เขียน | รูปแบบ | ราคา | เรื่อง | หน้า | ความหนา | สำนักพิมพ์ | ประเทศผู้จัดพิมพ์ | รหัสประเภท | ชื่อประเภท | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แชด รัสเซลล์ | อเมริกัน | ปกแข็ง | 49.99 |
| 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
ความพึงพอใจ 1NF
ในรูปแบบปกติแรกฟิลด์แต่ละฟิลด์จะมีค่าเดียว ฟิลด์ไม่สามารถมีชุดค่าหรือเรคอร์ดซ้อนกันได้หัวข้อ มีชุดค่าของหัวข้อ ซึ่งหมายความว่าไม่เป็นไปตามข้อกำหนด เพื่อแก้ปัญหานี้ หัวข้อจะถูกแยกออกมาเป็นตาราง หัวข้อแยกต่างหาก: [ 10 ]
| ชื่อ | ผู้เขียน | สัญชาติของผู้เขียน | รูปแบบ | ราคา | หน้า | ความหนา | สำนักพิมพ์ | ประเทศผู้จัดพิมพ์ | รหัสประเภท | ชื่อประเภท |
|---|---|---|---|---|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แชด รัสเซลล์ | อเมริกัน | ปกแข็ง | 49.99 | 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
| ชื่อ | ชื่อวิชา |
|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | MySQL |
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ฐานข้อมูล |
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ออกแบบ |
แทนที่จะมีตารางเดียวในรูปแบบที่ไม่เป็นมาตรฐานตอนนี้มีสองตารางที่สอดคล้องกับรูปแบบมาตรฐานที่ 1 (1NF)
ความพึงพอใจ 2NF
โปรดจำไว้ว่า ตาราง Bookด้านล่างมีคีย์ผสมคือ{Title, Format}ซึ่งจะไม่ตรงตามเงื่อนไข 2NF หากเซตย่อยบางส่วนของคีย์นั้นเป็นดีเทอร์มิแนนต์ ในขั้นตอนนี้ของการออกแบบคีย์ ดัง กล่าวยังไม่ได้ถูกกำหนดให้เป็นคีย์หลักดังนั้นจึงเรียกว่าคีย์ผู้สมัครพิจารณาตารางต่อไปนี้:
| ชื่อ | รูปแบบ | ผู้เขียน | สัญชาติของผู้เขียน | ราคา | หน้า | ความหนา | สำนักพิมพ์ | ประเทศผู้จัดพิมพ์ | รหัสประเภท | ชื่อประเภท |
|---|---|---|---|---|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ปกแข็ง | แชด รัสเซลล์ | อเมริกัน | 49.99 | 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | อีบุ๊ก | แชด รัสเซลล์ | อเมริกัน | 22.34 | 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | อีบุ๊ก | อีเอฟค็อดด์ | ชาวอังกฤษ | 13.88 | 538 | หนา | แอดดิสัน-เวสลีย์ | สหรัฐอเมริกา | 2 | วิทยาศาสตร์ยอดนิยม |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | ปกอ่อน | อีเอฟค็อดด์ | ชาวอังกฤษ | 39.99 | 538 | หนา | แอดดิสัน-เวสลีย์ | สหรัฐอเมริกา | 2 | วิทยาศาสตร์ยอดนิยม |
คุณลักษณะทั้งหมดที่ไม่ใช่ส่วนหนึ่งของคีย์ผู้สมัครจะขึ้นอยู่กับTitleแต่มีเพียงPrice เท่านั้น ที่ขึ้นอยู่กับFormat ด้วย เพื่อให้สอดคล้องกับรูปแบบ 2NFและกำจัดข้อมูลซ้ำ คุณลักษณะที่ไม่ใช่คีย์ผู้สมัครทุกตัวจะต้องขึ้นอยู่กับคีย์ผู้สมัครทั้งหมด ไม่ใช่แค่บางส่วน
เพื่อให้ตารางนี้เป็นมาตรฐาน ให้กำหนดให้{Title}เป็นคีย์หลัก (คีย์ผู้สมัคร) แบบง่าย เพื่อให้แอตทริบิวต์ที่ไม่ใช่คีย์ผู้สมัครทั้งหมดขึ้นอยู่กับคีย์ผู้สมัครทั้งหมด และย้ายPrice ไป ไว้ในตารางแยกต่างหาก เพื่อรักษาความสัมพันธ์กับFormatไว้:
| ชื่อ | ผู้เขียน | สัญชาติของผู้เขียน | หน้า | ความหนา | สำนักพิมพ์ | ประเทศผู้จัดพิมพ์ | รหัสประเภท | ชื่อประเภท |
|---|---|---|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แชด รัสเซลล์ | อเมริกัน | 520 | หนา | เอเพรส | สหรัฐอเมริกา | 1 | บทช่วยสอน |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | อีเอฟค็อดด์ | ชาวอังกฤษ | 538 | หนา | แอดดิสัน-เวสลีย์ | สหรัฐอเมริกา | 2 | วิทยาศาสตร์ยอดนิยม |
| ชื่อ | รูปแบบ | ราคา |
|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ปกแข็ง | 49.99 |
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | อีบุ๊ก | 22.34 |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | อีบุ๊ก | 13.88 |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | ปกอ่อน | 39.99 |
ขณะนี้ทั้ง ตาราง มูลค่าหนังสือและ ตาราง ราคาเป็นไปตามรูปแบบ 2NFแล้ว
ความพึงพอใจ 3NF
ตารางBookยังคงมีการพึ่งพาเชิงฟังก์ชันแบบส่งต่อ ({Author Nationality} ขึ้นอยู่กับ {Author} ซึ่งขึ้นอยู่กับ {Title}) การละเมิดที่คล้ายกันนี้เกิดขึ้นกับตาราง Publisher ({Publisher Country} ขึ้นอยู่กับ {Publisher} ซึ่งขึ้นอยู่กับ {Title}) และตาราง Genre ({Genre Name} ขึ้นอยู่กับ {Genre ID} ซึ่งขึ้นอยู่กับ {Title}) ดังนั้น ตาราง Bookจึงไม่อยู่ในรูปแบบ 3NF เพื่อแก้ไขปัญหานี้ เราสามารถแยก {Author Nationality}, {Publisher Country} และ {Genre Name} ไปไว้ในตารางของตนเอง ซึ่งจะช่วยขจัดความสัมพันธ์เชิงฟังก์ชันแบบส่งต่อได้
| ชื่อ | ผู้เขียน | หน้า | ความหนา | สำนักพิมพ์ | รหัสประเภท |
|---|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แชด รัสเซลล์ | 520 | หนา | เอเพรส | 1 |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | อีเอฟค็อดด์ | 538 | หนา | แอดดิสัน-เวสลีย์ | 2 |
|
| ผู้เขียน | สัญชาติ |
|---|---|
| แชด รัสเซลล์ | อเมริกัน |
| อีเอฟค็อดด์ | ชาวอังกฤษ |
| สำนักพิมพ์ | ประเทศ |
|---|---|
| เอเพรส | สหรัฐอเมริกา |
| แอดดิสัน-เวสลีย์ | สหรัฐอเมริกา |
| รหัสประเภท | ชื่อ |
|---|---|
| 1 | บทช่วยสอน |
| 2 | วิทยาศาสตร์ยอดนิยม |
ความพึงพอใจ EKNF
รูปแบบคีย์พื้นฐานปกติ (EKNF) อยู่กึ่งกลางระหว่าง 3NF และ BCNF อย่างเคร่งครัด และไม่ค่อยมีการกล่าวถึงในเอกสารทางวิชาการมากนัก จุดประสงค์คือ"เพื่อรวบรวมคุณสมบัติเด่นของทั้ง 3NF และ BCNF"ในขณะที่หลีกเลี่ยงปัญหาของทั้งสอง (กล่าวคือ 3NF นั้น "ยืดหยุ่นเกินไป" และ BCNF นั้น "มีแนวโน้มที่จะซับซ้อนในการคำนวณ") เนื่องจากมีการกล่าวถึงน้อยมากในเอกสารทางวิชาการ จึงไม่ได้รวมไว้ในตัวอย่างนี้
ความพึงพอใจ 4NF
สมมติว่าฐานข้อมูลนี้เป็นของแฟรนไชส์ร้านหนังสือแห่งหนึ่ง ซึ่งมีผู้รับแฟรนไชส์หลายรายที่เป็นเจ้าของร้านในสถานที่ต่างๆ และด้วยเหตุนี้ทางร้านค้าปลีกจึงตัดสินใจเพิ่มตารางที่เก็บข้อมูลเกี่ยวกับการมีหนังสือวางจำหน่ายในแต่ละสาขา:
| รหัสผู้รับสิทธิ์แฟรนไชส์ | ชื่อ | ที่ตั้ง |
|---|---|---|
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แคลิฟอร์เนีย |
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ฟลอริดา |
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | เท็กซัส |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | แคลิฟอร์เนีย |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | ฟลอริดา |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | เท็กซัส |
| 2 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แคลิฟอร์เนีย |
| 2 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | ฟลอริดา |
| 2 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | เท็กซัส |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | แคลิฟอร์เนีย |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | ฟลอริดา |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | เท็กซัส |
| 3 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | เท็กซัส |
เนื่องจากโครงสร้างตารางนี้ประกอบด้วยคีย์หลักแบบผสมจึงไม่มีแอตทริบิวต์ที่ไม่ใช่คีย์ และอยู่ในรูปแบบ BCNF อยู่แล้ว (และด้วยเหตุนี้จึงตรงตาม มาตรฐาน รูปแบบปกติ ก่อนหน้าทั้งหมด ) อย่างไรก็ตาม สมมติว่าหนังสือที่มีอยู่ทั้งหมดมีให้เลือกในแต่ละพื้นที่ชื่อเรื่องจึงไม่ได้ผูกติดกับสถานที่ ใดสถานที่หนึ่งอย่างชัดเจน ดังนั้นตารางจึงไม่ตรงตามมาตรฐาน 4NF
นั่นหมายความว่า เพื่อให้สอดคล้องกับรูปแบบปกติลำดับที่สี่ตารางนี้จำเป็นต้องถูกแยกย่อยด้วยเช่นกัน:
|
|
ตอนนี้ ทุกระเบียนถูกระบุอย่างชัดเจนด้วยซูเปอร์คีย์แล้วดังนั้น4NF จึง เป็นไปตามเงื่อนไข
ความพึงพอใจต่อ ETNF
สมมติว่าผู้รับสิทธิ์แฟรนไชส์สามารถสั่งซื้อหนังสือจากซัพพลายเออร์ที่แตกต่างกันได้ และให้ความสัมพันธ์นี้อยู่ภายใต้ข้อจำกัดต่อไปนี้ด้วย:
- หากซัพพลายเออร์ รายใดรายหนึ่ง จัดหาสินค้าที่มีชื่อเรื่อง ตามที่กำหนด
- และกรรมสิทธิ์จะถูกส่งมอบให้กับผู้รับสิทธิ์แฟรนไชส์
- และผู้รับสิทธิ์แฟรนไชส์ได้รับการจัดหาสินค้าจากซัพพลายเออร์
- จากนั้นผู้จัดจำหน่ายจะมอบกรรมสิทธิ์ให้กับผู้รับแฟรนไชส์[ 12 ]
| รหัสผู้จำหน่าย | ชื่อ | รหัสผู้รับสิทธิ์แฟรนไชส์ |
|---|---|---|
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | 1 |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | 2 |
| 3 | เรียนรู้ SQL | 3 |
ตารางนี้อยู่ในรูปแบบ 4NFแต่รหัสซัพพลายเออร์เท่ากับผลรวมของการฉายภาพ: {{Supplier ID, Title}, {Title, Franchisee ID}, {Franchisee ID, Supplier ID}}ไม่มีส่วนประกอบใดของความสัมพันธ์แบบรวมนั้นเป็นซูเปอร์คีย์ (ซูเปอร์คีย์เดียวคือส่วนหัวทั้งหมด) ดังนั้นตารางจึงไม่ตรงตามมาตรฐานETNFและสามารถแยกย่อยเพิ่มเติมได้: [ 12 ]
|
|
|
การสลายตัวทำให้เกิดการปฏิบัติตามมาตรฐาน ETNF
ความพึงพอใจ 5NF
ในการตรวจสอบว่าตารางใดไม่เป็นไปตามรูปแบบ5NFนั้น โดยปกติแล้วจำเป็นต้องตรวจสอบข้อมูลอย่างละเอียด สมมติว่าเรามีตารางจากตัวอย่าง 4NFที่มีการแก้ไขข้อมูลเล็กน้อย แล้วมาตรวจสอบกันว่ามันเป็นไปตามรูปแบบ5NF หรือไม่:
| รหัสผู้รับสิทธิ์แฟรนไชส์ | ชื่อ | ที่ตั้ง |
|---|---|---|
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แคลิฟอร์เนีย |
| 1 | เรียนรู้ SQL | แคลิฟอร์เนีย |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | เท็กซัส |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | แคลิฟอร์เนีย |
การแยกตารางนี้ออกเป็นส่วนย่อยจะช่วยลดความซ้ำซ้อน ทำให้ได้ตารางสองตารางดังต่อไปนี้:
|
|
การค้นหาข้อมูลโดยใช้ตารางเหล่านี้จะส่งคืนข้อมูลดังต่อไปนี้:
| รหัสผู้รับสิทธิ์แฟรนไชส์ | ชื่อ | ที่ตั้ง |
|---|---|---|
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | แคลิฟอร์เนีย |
| 1 | เรียนรู้ SQL | แคลิฟอร์เนีย |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | แคลิฟอร์เนีย |
| 1 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | เท็กซัส |
| 1 | เรียนรู้ SQL | เท็กซัส |
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | เท็กซัส |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | แคลิฟอร์เนีย |
คำสั่ง JOIN ส่งคืนข้อมูลมากกว่าที่ควรจะเป็นถึงสามแถว การเพิ่มตารางอีกตารางเพื่อแสดงความสัมพันธ์ให้ชัดเจนยิ่งขึ้น ส่งผลให้ได้ตารางแยกกันสามตาราง:
|
|
|
ผลลัพธ์ของการ JOIN จะเป็นอย่างไร? จริงๆ แล้วไม่สามารถรวมตารางทั้งสามนี้ได้ นั่นหมายความว่าไม่สามารถแยกข้อมูลFranchiseee – Book – Location ออก โดยไม่สูญเสียข้อมูลได้ ดังนั้นตารางจึงตรงตามเงื่อนไข5NF อยู่ แล้ว
คำชี้แจง – ข้อมูลที่ใช้แสดงให้เห็นถึงหลักการ แต่ไม่ตรงกับความเป็นจริงเสมอไป ในกรณีนี้ ข้อมูลควรถูกแยกย่อยออกเป็นดังต่อไปนี้ โดยใช้คีย์ทดแทนที่เราจะเรียกว่า 'รหัสร้านค้า':
|
|
คำสั่ง JOIN จะให้ผลลัพธ์ตามที่คาดหวังไว้:
| รหัสร้านค้า | ชื่อ | รหัสผู้รับสิทธิ์แฟรนไชส์ | ที่ตั้ง |
|---|---|---|---|
| 1 | การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | 1 | แคลิฟอร์เนีย |
| 1 | เรียนรู้ SQL | 1 | แคลิฟอร์เนีย |
| 2 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | 1 | เท็กซัส |
| 3 | แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | 2 | แคลิฟอร์เนีย |
CJ Dateได้โต้แย้งว่าฐานข้อมูลในรูปแบบ 5NF เท่านั้นที่ "เป็นมาตรฐาน" อย่างแท้จริง[ 13 ]
DKNF ที่น่าพอใจ
ลองมาดู ตาราง Bookจากตัวอย่างก่อนหน้านี้ และตรวจสอบดูว่ามันตรงตามมาตรฐานรูปแบบโดเมนคีย์หรือไม่ :
| ชื่อ | หน้า | ความหนา | รหัสประเภท | รหัสผู้เผยแพร่ |
|---|---|---|---|---|
| การเริ่มต้นออกแบบและเพิ่มประสิทธิภาพฐานข้อมูล MySQL | 520 | หนา | 1 | 1 |
| แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูล: เวอร์ชัน 2 | 538 | หนา | 2 | 2 |
| เรียนรู้ SQL | 338 | บาง | 1 | 3 |
| คู่มือการทำอาหาร SQL | 636 | หนา | 1 | 3 |
ตามหลักการแล้วความหนาของ หนังสือ จะถูกกำหนดโดยจำนวนหน้า นั่นหมายความว่ามันขึ้นอยู่กับจำนวนหน้าซึ่งไม่ใช่ปัจจัยหลัก เรามาลองกำหนดหลักเกณฑ์ง่ายๆ ว่า หนังสือที่มีจำนวนหน้าไม่เกิน 350 หน้า ถือว่า "บาง" และหนังสือที่มีจำนวนหน้ามากกว่า 350 หน้า ถือว่า "หนา"
ตามหลักการแล้ว ข้อกำหนดนี้เป็นข้อจำกัด แต่ไม่ใช่ข้อจำกัดด้านโดเมนหรือข้อจำกัดด้านคีย์ ดังนั้นเราจึงไม่สามารถอาศัยข้อจำกัดด้านโดเมนและข้อจำกัดด้านคีย์เพื่อรักษาความสมบูรณ์ของข้อมูลได้
กล่าวอีกนัยหนึ่งคือ ไม่มีอะไรขัดขวางไม่ให้เราใส่คำว่า "หนา" สำหรับหนังสือที่มีเพียง 50 หน้า ซึ่งจะทำให้ตารางนั้นขัดกับหลักการ DKNF
เพื่อแก้ไขปัญหานี้ จึงมีการสร้างตารางที่เก็บค่าแบบแจงนับซึ่งกำหนดความหนาและลบคอลัมน์นั้นออกจากตารางเดิม:
|
|
ด้วยวิธีนี้ การละเมิดความสมบูรณ์ของโดเมนจึงหมดไป และตารางจะอยู่ในรูปแบบ DKNF
การทำให้เป็นมาตรฐานไม่ได้ป้องกันกรณีผลลัพธ์ที่เป็นไปไม่ได้/ขัดแย้ง/คาดเดาไม่ได้ทั้งหมด ในตัวอย่างนี้ การกำหนดค่าหน้าขั้นต่ำ/สูงสุดเป็น 1/350 และ 200/999,999,999,999 จะนำไปสู่ผลลัพธ์ที่คาดเดาไม่ได้ ดังนั้นจึงควรระบุและใช้เฉพาะค่าหน้าขั้นต่ำเท่านั้น
ความพึงพอใจ 6NF
คำจำกัดความที่เรียบง่ายและเข้าใจง่ายของรูปแบบปกติลำดับที่หกคือ"ตารางอยู่ใน รูปแบบปกติ ลำดับที่หกเมื่อแถวนั้นมีคีย์หลักและแอตทริบิวต์อื่นไม่เกินหนึ่งรายการ " [ 14 ]
นั่นหมายความว่า ตัวอย่างเช่น ตาราง Publisherที่ออกแบบขณะสร้าง 1NF :
| รหัสผู้เผยแพร่ | ชื่อ | ประเทศ |
|---|---|---|
| 1 | เอเพรส | สหรัฐอเมริกา |
จำเป็นต้องแยกย่อยออกเป็นสองตารางเพิ่มเติม:
|
|
ข้อเสียที่เห็นได้ชัดของ 6NF คือจำนวนตารางที่เพิ่มขึ้นอย่างมากในการแสดงข้อมูลเกี่ยวกับเอนทิตีเดียว หากตารางใน 5NF มีคอลัมน์คีย์หลักหนึ่งคอลัมน์และแอตทริบิวต์ N รายการ การแสดงข้อมูลเดียวกันใน 6NF จะต้องใช้ตาราง N รายการ การอัปเดตหลายฟิลด์ในเรคอร์ดเชิงแนวคิดเดียวจะต้องอัปเดตในหลายตาราง และการแทรกและการลบก็จะต้องดำเนินการในหลายตารางเช่นกัน ด้วยเหตุนี้ ในฐานข้อมูลที่ออกแบบมาเพื่อรองรับ ความต้องการ การประมวลผลธุรกรรมออนไลน์ (OLTP) จึงไม่ควรใช้ 6NF
อย่างไรก็ตาม ในคลังข้อมูลซึ่งไม่อนุญาตให้มีการอัปเดตแบบโต้ตอบ และมีความเชี่ยวชาญสำหรับการสืบค้นข้อมูลปริมาณมากอย่างรวดเร็ว ระบบจัดการฐานข้อมูลบางระบบจะใช้การแสดงข้อมูลแบบ 6NF ภายใน ซึ่งเรียกว่าที่เก็บข้อมูลแบบคอลัมน์ในสถานการณ์ที่จำนวนค่าที่ไม่ซ้ำกันของคอลัมน์มีน้อยกว่าจำนวนแถวในตารางมาก การจัดเก็บข้อมูลแบบคอลัมน์จะช่วยประหยัดพื้นที่ได้อย่างมากผ่านการบีบอัดข้อมูล การจัดเก็บข้อมูลแบบคอลัมน์ยังช่วยให้สามารถดำเนินการสืบค้นแบบช่วงได้อย่างรวดเร็ว (เช่น แสดงระเบียนทั้งหมดที่คอลัมน์เฉพาะอยู่ระหว่าง X และ Y หรือน้อยกว่า X)
อย่างไรก็ตาม ในทุกกรณีเหล่านี้ นักออกแบบฐานข้อมูลไม่จำเป็นต้องทำการทำให้เป็นมาตรฐาน 6NF ด้วยตนเองโดยการสร้างตารางแยกต่างหาก ระบบจัดการฐานข้อมูลบางระบบที่เชี่ยวชาญด้านคลังข้อมูล เช่นSybase IQจะใช้การจัดเก็บแบบคอลัมน์เป็นค่าเริ่มต้น แต่นักออกแบบยังคงเห็นเพียงตารางหลายคอลัมน์เดียว ระบบจัดการฐานข้อมูลอื่นๆ เช่น Microsoft SQL Server 2012 และเวอร์ชันต่อมา อนุญาตให้คุณระบุ "ดัชนีคอลัมน์สโตร์" สำหรับตารางเฉพาะ[ 15 ]
ดูเพิ่มเติม
หมายเหตุและเอกสารอ้างอิง
- ^ "การนำแบบจำลองข้อมูลเชิงสัมพันธ์มาใช้...ทำให้สามารถพัฒนาระบบภาษาย่อยข้อมูลสากลโดยอาศัยแคลคูลัสเชิงประพจน์ประยุกต์ แคลคูลัสเชิงประพจน์ลำดับที่หนึ่งก็เพียงพอแล้วหากชุดความสัมพันธ์อยู่ในรูปแบบปกติ ภาษาดังกล่าวจะเป็นมาตรวัดพลังทางภาษาสำหรับภาษาข้อมูลอื่นๆ ที่เสนอทั้งหมด และตัวมันเองก็จะเป็นตัวเลือกที่แข็งแกร่งสำหรับการฝัง (ด้วยการปรับเปลี่ยนไวยากรณ์ที่เหมาะสม) ในภาษาโฮสต์ต่างๆ (การเขียนโปรแกรม ภาษาคำสั่ง หรือภาษาที่เน้นการแก้ปัญหา)" Codd, "A Relational Model of Data for Large Shared Data Banks" เก็บถาวรเมื่อวันที่ 12 มิถุนายน 2550 ที่ Wayback Machineหน้า 381
- ^ Codd, EF บทที่ 23 "ข้อบกพร่องร้ายแรงใน SQL"ใน The Relational Model for Database Management: Version 2 Addison-Wesley (1990), หน้า 371–389
- ^ Codd, EF "การทำให้แบบจำลองเชิงสัมพันธ์ของฐานข้อมูลเป็นมาตรฐานเพิ่มเติม", หน้า 34
- ^ a b Codd, EF (มิถุนายน 1970). "แบบจำลองเชิงสัมพันธ์ของข้อมูลสำหรับธนาคารข้อมูลขนาดใหญ่ที่ใช้ร่วมกัน"การสื่อสารของ ACM 13 ( 6): 377– 387. doi : 10.1145/362384.362685 . S2CID 207549016 .
- ^ a b c d Codd, EF "การทำให้แบบจำลองเชิงสัมพันธ์ของฐานข้อมูลเป็นมาตรฐานยิ่งขึ้น" (นำเสนอในการประชุมวิชาการ Courant Computer Science Symposia Series 6, "ระบบฐานข้อมูล", นครนิวยอร์ก, 24–25 พฤษภาคม 1971) รายงานการวิจัยของ IBM RJ909 (31 สิงหาคม 1971) ตีพิมพ์ซ้ำใน Randall J. Rustin (บรรณาธิการ), ระบบฐานข้อมูล: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972
- ^ Codd, EF "การวิจัยล่าสุดเกี่ยวกับระบบฐานข้อมูลเชิงสัมพันธ์" รายงานการวิจัยของ IBM RJ1385 (23 เมษายน 1974) ตีพิมพ์ซ้ำใน Proc. 1974 Congress (สตอกโฮล์ม สวีเดน 1974) นิวยอร์ก: North-Holland (1974)
- ^ Date, CJ (1999). บทนำเกี่ยวกับระบบฐานข้อมูล . Addison-Wesley. หน้า 290.
- ^ Darwen, Hugh; Date, CJ; Fagin, Ronald (2012). "รูปแบบมาตรฐานสำหรับการป้องกันทูเปิลที่ซ้ำซ้อนในฐานข้อมูลเชิงสัมพันธ์" (PDF)รายงานการประชุมวิชาการนานาชาติว่าด้วยทฤษฎีฐานข้อมูล ครั้งที่ 15การประชุมร่วม EDBT/ICDT 2012ชุดเอกสารการประชุมวิชาการนานาชาติ ACM สมาคมเครื่องจักรคำนวณหน้า 114. doi : 10.1145/2274576.2274589 ISBN 978-1-4503-0791-8. OCLC 802369023 . เก็บถาวร(PDF)จากต้นฉบับเมื่อวันที่ 6 มีนาคม 2016 . เรียกดูเมื่อวันที่ 22 พฤษภาคม 2018 .
- ^ Kumar, Kunal; Azad, SK (ตุลาคม 2017). "รูปแบบการออกแบบการทำให้เป็นมาตรฐานของฐานข้อมูล". การประชุมวิชาการนานาชาติ IEEE Uttar Pradesh Section ครั้งที่ 4 ด้านวิศวกรรมไฟฟ้า คอมพิวเตอร์ และอิเล็กทรอนิกส์ (UPCON) ประจำปี 2017. IEEE. หน้า 318–322 . doi : 10.1109/upcon.2017.8251067 . ISBN 9781538630044S2CID 24491594
- ^ a b c "การทำให้ฐานข้อมูลเป็นมาตรฐานใน MySQL: สี่ขั้นตอนง่ายๆ" . ComputerWeekly.com . เก็บถาวรจากต้นฉบับเมื่อวันที่ 30 สิงหาคม 2017 . เรียกดูเมื่อวันที่ 23 มีนาคม 2021 .
- ^ "การทำให้ฐานข้อมูลเป็นรูปแบบปกติ: รูปแบบปกติที่ 5 และอื่นๆ" . ฐานความรู้ MariaDB . สืบค้นเมื่อ23 มกราคม 2019 .
- ^ a b Date, CJ (21 ธันวาคม 2015). พจนานุกรมฐานข้อมูลเชิงสัมพันธ์ฉบับใหม่: คำศัพท์ แนวคิด และตัวอย่าง . O'Reilly Media, Inc. หน้า 138. ISBN 9781491951699.
- ^ Date, CJ (21 ธันวาคม 2015). พจนานุกรมฐานข้อมูลเชิงสัมพันธ์ฉบับใหม่: คำศัพท์ แนวคิด และตัวอย่าง . O'Reilly Media, Inc. หน้า 163. ISBN 9781491951699.
- ^ "การ ทำให้เป็นรูปแบบมาตรฐาน – อยากเข้าใจ 6NF พร้อมตัวอย่าง" Stack Overflow สืบค้นเมื่อ23 มกราคม 2019
- ^บริษัท ไมโครซอฟต์. ดัชนีคอลัมน์สโตร์: ภาพรวม. https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview . เข้าถึงเมื่อ 23 มีนาคม 2020.
อ่านเพิ่มเติม
- Date, CJ (1999), An Introduction to Database Systems (ฉบับที่ 8). Addison-Wesley Longman. ISBN 0-321-19784-4.
- Kent, W. (1983) คู่มือฉบับย่อเกี่ยวกับรูปแบบปกติห้าแบบในทฤษฎีฐานข้อมูลเชิงสัมพันธ์ , Communications of the ACM, เล่มที่ 26, หน้า 120–125
- H.-J. Schek, P. Pistor โครงสร้างข้อมูลสำหรับระบบการจัดการฐานข้อมูลและการค้นหาข้อมูลแบบบูรณาการ
ลิงก์ภายนอก
- Kent, William (กุมภาพันธ์ 1983). "คู่มือฉบับย่อสำหรับรูปแบบปกติห้าแบบในทฤษฎีฐานข้อมูลเชิงสัมพันธ์" . Communications of the ACM . 26 (2): 120– 125. doi : 10.1145/358024.358054 . S2CID 9195704 .
- หลักการพื้นฐานของการทำให้ฐานข้อมูลเป็นรูปแบบมาตรฐาน (Database Normalization Basics) เก็บถาวรเมื่อวันที่ 5 กุมภาพันธ์ 2550 ที่Wayback Machineโดย Mike Chapple (About.com)
- บทนำเกี่ยวกับการทำให้ฐานข้อมูลเป็นมาตรฐาน (Database Normalization) เก็บถาวรเมื่อวันที่ 28 กันยายน 2011 ที่Wayback Machine ส่วน ที่2 เก็บถาวรเมื่อวันที่ 8 กรกฎาคม 2011 ที่Wayback Machine
- บทนำสู่การทำให้ฐานข้อมูลเป็นมาตรฐานโดย ไมค์ ฮิลลีเยอร์
- บทความแนะนำเกี่ยวกับรูปแบบปกติ 3 รูปแบบแรกโดย เฟรด คูลสัน
- คำอธิบายพื้นฐานเกี่ยวกับการทำให้ฐานข้อมูลเป็นมาตรฐานโดย Microsoft
- การทำให้เป็นรูปแบบมาตรฐานในระบบจัดการฐานข้อมูล โดย Chaitanya (beginnersbook.com)
- คู่มือทีละขั้นตอนสำหรับการทำให้ฐานข้อมูลเป็นรูปแบบมาตรฐาน (Database Normalization)
- ETNF – Essential tuple normal form เก็บถาวรเมื่อวันที่ 6 มีนาคม 2016 ที่Wayback Machine
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การทำให้ฐานข้อมูลเป็นมาตรฐาน
การทำให้ฐานข้อมูลเป็นรูปแบบมาตรฐาน (Database normalization) คือกระบวนการจัดโครงสร้าง ฐานข้อมูลเชิงสัมพันธ์ ให้สอดคล้องกับ รูปแบบมาตรฐานต่างๆ เพื่อลด ความซ้ำซ้อนของข้อมูล...
วัตถุประสงค์
วัตถุประสงค์พื้นฐานของรูปแบบปกติแรกที่กำหนดโดย Codd ในปี 1970 คือการอนุญาตให้สอบถามและจัดการข้อมูลโดยใช้ "ภาษาย่อยข้อมูลสากล" ที่มีพื้นฐานมาจากตรรกะ ลำดับที่หนึ่ง [ 1 ] ตัวอย่างของภาษาดังกล่าวคือ SQL แม้ว่า Codd จะมองว่า SQL มีข้อบกพร่องร้ายแรงก็ตาม [ 2 ]
ลดการออกแบบใหม่ให้น้อยที่สุดเมื่อขยายโครงสร้างฐานข้อมูล
ฐานข้อมูลที่ได้รับการปรับให้เป็นมาตรฐานอย่างสมบูรณ์จะช่วยให้สามารถขยายโครงสร้างของฐานข้อมูลเพื่อรองรับข้อมูลประเภทใหม่ๆ ได้โดยไม่ต้องเปลี่ยนแปลงโครงสร้างเดิมมากเกินไป ส่งผลให้แอปพลิเคชันที่โต้ตอบกับฐานข้อมูลได้รับผลกระทบน้อยที่สุด
รูปแบบปกติ
Codd ได้นำเสนอแนวคิดเรื่องการทำให้เป็นมาตรฐานและสิ่งที่ปัจจุบันรู้จักกันในชื่อ รูปแบบมาตรฐานแรก (1NF) ในปี พ.ศ. 2513 [ 4 ] Codd ได้กำหนด รูปแบบมาตรฐานที่สอง (2NF) และ รูปแบบมาตรฐานที่สาม (3NF) ในปี พ.ศ. 2514 [ 5 ] และ Codd กับ Raymond F.