3.1 การทำให้เป็นมาตรฐานของฐานข้อมูล
รูปแบบปกติเป็นคุณสมบัติของความสัมพันธ์ในแบบจำลองข้อมูลเชิงสัมพันธ์ที่แสดงลักษณะเฉพาะในแง่ของความซ้ำซ้อน ซึ่งอาจนำไปสู่ผลลัพธ์ที่ผิดพลาดทางตรรกะของการสุ่มตัวอย่างหรือการเปลี่ยนแปลงข้อมูล แบบฟอร์มปกติถูกกำหนดให้เป็นชุดของข้อกำหนดที่รีเลชัน (ตารางในฐานข้อมูล) จะต้องตอบสนอง
กระบวนการแปลงความสัมพันธ์ของฐานข้อมูลให้เป็นรูปแบบที่สอดคล้องกับรูปแบบปกติเรียกว่าการทำให้เป็นมาตรฐาน การทำให้เป็นมาตรฐานมีวัตถุประสงค์เพื่อทำให้โครงสร้างของฐานข้อมูลเป็นรูปแบบที่ให้ความซ้ำซ้อนทางตรรกะน้อยที่สุดและ ไม่ได้มีวัตถุประสงค์เพื่อลดหรือเพิ่มประสิทธิภาพ หรือ ลด หรือเพิ่มปริมาณจริงของฐานข้อมูล
เป้าหมายสูงสุดของการทำให้เป็นมาตรฐานคือการลดความไม่สอดคล้องกันที่อาจเกิดขึ้นของข้อมูลที่จัดเก็บไว้ในฐานข้อมูล วัตถุประสงค์ทั่วไปของกระบวนการทำให้เป็นมาตรฐานมีดังนี้:
- การยกเว้นความซ้ำซ้อนบางประเภท
- แก้ไขความผิดปกติของการอัปเดตบางอย่าง
- การพัฒนาโครงการฐานข้อมูลที่เป็นตัวแทน "คุณภาพสูง" เพียงพอของโลกแห่งความจริง ใช้งานง่ายและสามารถใช้เป็นพื้นฐานที่ดีสำหรับการขยายตัวในภายหลัง
- ลดความซับซ้อนของขั้นตอนสำหรับการใช้ข้อจำกัดด้านความสมบูรณ์ที่จำเป็น
ความซ้ำซ้อนมักจะถูกกำจัดโดยการแยกย่อยความสัมพันธ์ในลักษณะที่จัดเก็บเฉพาะข้อเท็จจริงหลักในแต่ละความสัมพันธ์ (นั่นคือ ข้อเท็จจริงที่ไม่ได้มาจากข้อเท็จจริงที่เก็บไว้อื่นๆ)
แม้ว่าแนวคิดการทำให้เป็นมาตรฐานจะมีประโยชน์อย่างมากสำหรับการออกแบบฐานข้อมูล แต่ก็ไม่ได้หมายความว่าเป็นวิธีการสากลหรือครบถ้วนสมบูรณ์ในการปรับปรุงคุณภาพของการออกแบบฐานข้อมูล นี่เป็นเพราะความจริงที่ว่ามีข้อผิดพลาดและข้อบกพร่องที่เป็นไปได้มากมายในโครงสร้างฐานข้อมูลซึ่งไม่สามารถกำจัดได้โดยการทำให้เป็นมาตรฐาน
แม้จะมีการพิจารณาเหล่านี้ ทฤษฎีการทำให้เป็นมาตรฐานเป็นความสำเร็จที่มีค่ามากของทฤษฎีเชิงสัมพันธ์และการปฏิบัติ เนื่องจากให้เกณฑ์ทางวิทยาศาสตร์ที่เข้มงวดและสมเหตุสมผลสำหรับคุณภาพของโครงการฐานข้อมูลและวิธีการที่เป็นทางการสำหรับการปรับปรุงคุณภาพนี้ สิ่งนี้ทำให้ทฤษฎีนอร์มัลไลเซชันโดดเด่นกว่าแนวทางการออกแบบเชิงประจักษ์เพียงอย่างเดียวที่มีให้ในแบบจำลองข้อมูลอื่นๆ นอกจากนี้ยังเป็นที่ถกเถียงกันอยู่ว่าในสาขาเทคโนโลยีสารสนเทศทั้งหมดไม่มีวิธีใดในการประเมินและปรับปรุงโซลูชันการออกแบบที่เทียบเคียงได้กับทฤษฎีการปรับฐานของฐานข้อมูลเชิงสัมพันธ์ในแง่ของระดับความเข้มงวดอย่างเป็นทางการ
การทำให้เป็นมาตรฐานบางครั้งถูกวิพากษ์วิจารณ์ว่า "เป็นเพียงสามัญสำนึก" และผู้เชี่ยวชาญที่มีความสามารถจะ "เป็นธรรมชาติ" ออกแบบฐานข้อมูลที่ปรับให้เป็นมาตรฐานอย่างสมบูรณ์โดยไม่ต้องใช้ทฤษฎีการพึ่งพา
อย่างไรก็ตาม ดังที่ศาสตราจารย์คริสโตเฟอร์ ดาเตะ กล่าวไว้การทำให้เป็นมาตรฐานเป็นหลักการของสามัญสำนึกที่ชี้นำนักออกแบบที่เป็นผู้ใหญ่ในความคิดของเขา นั่นคือ หลักการของการทำให้เป็นมาตรฐานเป็นสามัญสำนึกที่เป็นทางการ ในขณะเดียวกัน การระบุและทำให้หลักการของสามัญสำนึกเป็นแบบแผนเป็นงานที่ยากมาก และความสำเร็จในการแก้ปัญหาถือเป็นความสำเร็จที่สำคัญ
3.2 รูปแบบปกติครั้งแรก
First normal form (1NF)เป็นรูปแบบปกติพื้นฐานของความสัมพันธ์ในแบบจำลองข้อมูลเชิงสัมพันธ์
ตัวแปรความสัมพันธ์จะอยู่ในรูปแบบปกติรูปแบบแรกก็ต่อเมื่อในค่าที่ถูกต้องของตัวแปรนั้น แต่ละความสัมพันธ์ทูเพิลมีค่าหนึ่งค่าสำหรับแต่ละแอตทริบิวต์
ในโมเดลเชิงสัมพันธ์ ความสัมพันธ์จะอยู่ในรูปแบบปกติรูปแบบแรกเสมอ ตามนิยามของแนวคิดของความสัมพันธ์
สำหรับตารางต่างๆ อาจไม่ใช่การแสดงความสัมพันธ์ที่ถูกต้อง และอาจไม่อยู่ใน 1NF ตามคำจำกัดความของ Christopher Date สำหรับกรณีดังกล่าว ตารางจะถูกทำให้เป็นมาตรฐาน (เทียบเท่า คืออยู่ในรูปแบบปกติแรก) ก็ต่อเมื่อเป็นการแสดงโดยตรงและเป็นจริงของความสัมพันธ์บางอย่าง โดยเฉพาะอย่างยิ่ง ตารางที่มีปัญหาจะต้องตรงตามเงื่อนไขห้าข้อต่อไปนี้:
- ไม่มีการเรียงลำดับแถวจากบนลงล่าง (กล่าวคือ ลำดับของแถวไม่ได้สื่อถึงข้อมูลใดๆ)
- ไม่มีการเรียงลำดับคอลัมน์จากซ้ายไปขวา (กล่าวคือ ลำดับของคอลัมน์ไม่มีข้อมูล)
- ไม่มีบรรทัดที่ซ้ำกัน
- แต่ละจุดตัดกันของแถวและคอลัมน์มีค่าหนึ่งค่าจากโดเมนที่เกี่ยวข้อง (และไม่มีอย่างอื่น)
- คอลัมน์ทั้งหมดเป็น "ปกติ"
"ความสม่ำเสมอ" ของคอลัมน์ทั้งหมดของตารางหมายความว่าไม่มีส่วนประกอบ "ที่ซ่อนอยู่" ในตารางที่สามารถเข้าถึงได้โดยการเรียกใช้ตัวดำเนินการพิเศษบางตัวเท่านั้น แทนที่จะอ้างถึงชื่อคอลัมน์ปกติ หรือที่นำไปสู่ผลข้างเคียงสำหรับแถว หรือตารางเมื่อเรียกใช้ตัวดำเนินการมาตรฐาน
ตารางต้นฉบับที่ไม่ได้ทำให้เป็นมาตรฐาน (นั่นคือไม่ใช่การแสดงที่ถูกต้องของบางความสัมพันธ์):
พนักงาน | หมายเลขโทรศัพท์ |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
ตารางลดลงเป็น 1NF ซึ่งเป็นตัวแทนที่ถูกต้องของบางความสัมพันธ์:
พนักงาน | หมายเลขโทรศัพท์ |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 รูปแบบปกติที่สอง
ตัวแปรความสัมพันธ์จะอยู่ในรูปแบบปกติที่สองก็ต่อเมื่อมันอยู่ในรูปแบบปกติแรก และทุกแอตทริบิวต์ที่ไม่ใช่คีย์จะขึ้นอยู่กับ (ทุกๆ) คีย์ตัวเลือกของมันอย่างไม่สามารถลดลงได้
การลดไม่ได้หมายความว่าคีย์ที่มีศักยภาพไม่มีชุดย่อยของแอตทริบิวต์ที่เล็กกว่าซึ่งสามารถรับการพึ่งพาการทำงานนี้ได้ สำหรับการพึ่งพาการทำงานที่ลดไม่ได้ มักใช้แนวคิดที่เทียบเท่ากันของ "การพึ่งพาการทำงานเต็มรูปแบบ"
หากคีย์ตัวเลือกนั้นเรียบง่าย กล่าวคือประกอบด้วยแอตทริบิวต์เดียว การพึ่งพาการทำงานใดๆ บนคีย์นั้นจะลดไม่ได้ (สมบูรณ์) ถ้าคีย์ตัวเลือกเป็นคีย์ผสม ตามคำจำกัดความของฟอร์มปกติที่สอง จะต้องไม่มีแอตทริบิวต์ที่ไม่ใช่คีย์ในความสัมพันธ์ที่ขึ้นอยู่กับส่วนหนึ่งของคีย์ตัวเลือกผสม
ตัวอย่างการแปลงความสัมพันธ์เป็นรูปแบบปกติที่สอง
ให้แอตทริบิวต์คู่ {Company branch, Position} เป็นคีย์หลักในความสัมพันธ์ต่อไปนี้:
สาขาบริษัท | ชื่องาน | เงินเดือน | ความพร้อมใช้งานของคอมพิวเตอร์ |
---|---|---|---|
สาขาในทอมสค์ | ทำความสะอาด | 20,000 | เลขที่ |
สาขาในมอสโก | โปรแกรมเมอร์ | 40000 | กิน |
สาขาในทอมสค์ | โปรแกรมเมอร์ | 25000 | กิน |
สมมติว่าเงินเดือนขึ้นอยู่กับสาขาและตำแหน่ง และความพร้อมใช้งานของคอมพิวเตอร์ขึ้นอยู่กับตำแหน่งเท่านั้น
มีการพึ่งพาการทำงาน ตำแหน่ง -> มีคอมพิวเตอร์ซึ่งด้านซ้าย (ดีเทอร์มีแนนต์) เป็นเพียงส่วนหนึ่งของคีย์หลักซึ่งละเมิดเงื่อนไขของรูปแบบปกติที่สอง
หากต้องการลดเป็น 2NF ความสัมพันธ์ดั้งเดิมควรแยกย่อยออกเป็นสองความสัมพันธ์:
สาขาบริษัท | ชื่องาน | เงินเดือน |
---|---|---|
สาขาในทอมสค์ | ทำความสะอาด | 20,000 |
สาขาในมอสโก | โปรแกรมเมอร์ | 40000 |
สาขาในทอมสค์ | โปรแกรมเมอร์ | 25000 |
ชื่องาน | ความพร้อมใช้งานของคอมพิวเตอร์ |
---|---|
ทำความสะอาด | เลขที่ |
โปรแกรมเมอร์ | กิน |
โปรแกรมเมอร์ | กิน |
3.4 รูปแบบปกติที่สาม (3NF)
ตัวแปรสัมพันธ์ R อยู่ใน 3NF ก็ต่อเมื่อเงื่อนไขต่อไปนี้เป็นจริง:
- รอยู่ในรูปแบบปกติที่สอง
- ไม่มีแอตทริบิวต์ที่ไม่ใช่คีย์รไม่ได้ขึ้นอยู่กับฟังก์ชันสกรรมกริยาในคีย์ตัวเลือกร.
คำอธิบายสำหรับคำจำกัดความ:
แอตทริบิวต์ที่ไม่ใช่คีย์ของรีเลชัน R คือแอตทริบิวต์ที่ไม่ได้อยู่ในคีย์ตัวเลือกใดๆ ของ R
การพึ่งพาการทำงานของชุดแอตทริบิวต์ Z บนชุดของแอตทริบิวต์ X (เขียนด้วย X → Z ออกเสียงว่า “x กำหนด z”) เป็นแบบสกรรมกริยาหากมีชุดของแอตทริบิวต์ Y ที่ X → Y และ Y → Z ในเรื่องนี้ กรณีนี้ ไม่มีชุด X, Y และ Z ใดที่ไม่ใช่ชุดย่อยของชุดอื่น เช่น การพึ่งพาการทำงาน X → Z, X → Y และ Y → Z ไม่สำคัญและยังไม่มีการพึ่งพาการทำงาน Y → X
คำจำกัดความของ 3NF เทียบเท่ากับ Codd แต่ใช้คำต่างกัน โดย Carlo Zaniolo ในปี 1982 ตามนั้น ตัวแปรสัมพันธ์จะอยู่ใน 3NF ก็ต่อเมื่อแต่ละการขึ้นต่อกันของฟังก์ชัน X → A ตรงตามเงื่อนไขต่อไปนี้อย่างน้อยหนึ่งข้อ:
- X มี A (นั่นคือ X → A เป็นการพึ่งพาการทำงานเล็กน้อย)
- X - ซูเปอร์คีย์
- A เป็นแอตทริบิวต์ของคีย์ (นั่นคือ A เป็นส่วนหนึ่งของคีย์ตัวเลือก)
คำจำกัดความของ Zaniolo กำหนดความแตกต่างระหว่าง 3NF และ Boyce-Codd Normal Form (BCNF) ที่เข้มงวดกว่าอย่างชัดเจน กล่าวคือ BCNF ไม่รวมเงื่อนไขที่สาม ("A is a key attribute")
บทสรุปที่น่าจดจำและอธิบายตามธรรมเนียมของคำจำกัดความ 3NF ของ Codd นั้นมอบให้โดย Bill Kent: แอตทริบิวต์ที่ไม่ใช่คีย์แต่ละรายการ "ควรให้ข้อมูลเกี่ยวกับคีย์ คีย์แบบเต็ม และไม่มีอะไรนอกจากคีย์ "
เงื่อนไขของการขึ้นอยู่กับ "คีย์เต็ม" ของแอตทริบิวต์ที่ไม่ใช่คีย์ทำให้แน่ใจได้ว่าความสัมพันธ์นั้นอยู่ในรูปแบบปกติที่สอง และเงื่อนไขสำหรับพวกเขาที่จะขึ้นอยู่กับ "ไม่มีอะไรนอกจากกุญแจ" คือพวกเขาอยู่ในรูปแบบปกติที่สาม
Chris Date พูดถึงบทสรุปของ Kent ว่าเป็น "คุณลักษณะที่น่าสนใจโดยสัญชาตญาณ" ของ 3NF และสังเกตว่า การปรับเปลี่ยนเล็กน้อยยังสามารถใช้เป็นคำจำกัดความของรูปแบบปกติของ Boyce-Codd ที่เข้มงวดขึ้น: "แอตทริบิวต์แต่ละรายการต้องให้ข้อมูลเกี่ยวกับคีย์ , คีย์แบบเต็มและไม่มีอะไรนอกจากคีย์
คำจำกัดความ 3NF เวอร์ชันของ Kent นั้นเข้มงวดน้อยกว่าสูตรของ Data เวอร์ชันรูปแบบปกติของ Boyce-Codd เนื่องจากเวอร์ชันก่อนหน้าระบุเพียงว่าแอตทริบิวต์ที่ไม่ใช่คีย์ขึ้นอยู่กับคีย์
แอตทริบิวต์หลัก (ซึ่งเป็นคีย์หรือบางส่วนของคีย์) ไม่จำเป็นต้องขึ้นอยู่กับการทำงานเลย แต่ละคนให้ข้อมูลเกี่ยวกับคีย์โดยระบุคีย์เองหรือบางส่วน โปรดทราบว่ากฎนี้ใช้ได้กับแอตทริบิวต์ที่ไม่ใช่คีย์เท่านั้น เนื่องจากการใช้กฎนี้กับแอตทริบิวต์ทั้งหมดจะปิดใช้คีย์ทางเลือกที่ซับซ้อนทั้งหมดโดยสมบูรณ์ เนื่องจากแต่ละองค์ประกอบของคีย์ดังกล่าวจะละเมิดเงื่อนไข "คีย์เต็ม"
พิจารณาตัวแปรสัมพันธ์ R1 เป็นตัวอย่าง:
พนักงาน | แผนก | โทรศัพท์ |
---|---|---|
กริชิน | การบัญชี | 11-22-33 |
วาซิลิเยฟ | การบัญชี | 11-22-33 |
เปตรอฟ | จัดหา | 44-55-66 |
พนักงานแต่ละคนเป็นสมาชิกของแผนกเดียวเท่านั้น แต่ละแผนกมีโทรศัพท์เครื่องเดียว แอตทริบิวต์พนักงานเป็นคีย์หลัก พนักงานไม่มีโทรศัพท์ส่วนตัว และหมายเลขโทรศัพท์ของพนักงานจะขึ้นอยู่กับแผนกเท่านั้น
ในตัวอย่าง มีการพึ่งพาการทำงานต่อไปนี้: พนักงาน → แผนก, แผนก → โทรศัพท์, พนักงาน → โทรศัพท์
ตัวแปรความสัมพันธ์ R1 อยู่ในรูปแบบปกติที่สอง เนื่องจากแต่ละแอตทริบิวต์มีการพึ่งพาการทำงานที่ลดไม่ได้บนคีย์ที่มีศักยภาพ พนักงาน
ความสัมพันธ์พนักงาน → โทรศัพท์เป็นแบบสกรรมกริยา ดังนั้นความสัมพันธ์นี้จึงไม่ได้อยู่ในรูปแบบปกติที่สาม
การแยก R1 ออกเป็นตัวแปรสัมพันธ์สองตัวที่อยู่ใน 3NF:
แผนก | โทรศัพท์ |
---|---|
การบัญชี | 11-22-33 |
จัดหา | 44-55-66 |
พนักงาน | แผนก |
---|---|
กริชิน | การบัญชี |
วาซิลิเยฟ | การบัญชี |
เปตรอฟ | จัดหา |
หากจำเป็น ความสัมพันธ์เริ่มต้น R1 นั้นสามารถรับได้อย่างง่ายดายอันเป็นผลมาจากการดำเนินการเข้าร่วมความสัมพันธ์ R2 และ R3