ตารางที่ไม่มีคีย์หลักเป็นมาตรฐานหรือไม่


9

ในการบรรยายอาจารย์ของฉันแสดงให้เราเห็นตารางที่ไม่มีคีย์หลัก เมื่อถามเขาเขากล่าวว่าใน 3NF เมื่อคุณลบการอ้างอิงสกรรมกริยามันก็โอเคที่จะมีตารางที่ไม่มีคีย์หลัก

อย่างไรก็ตามไม่มีคีย์หลักหมายความว่าไม่มีการพึ่งพาการทำงาน - แต่ 3NF คือการลบการพึ่งพาสกรรมกริยาและฉันได้รับการสอนว่าแต่ละตารางต้องมีคีย์หลักสำหรับการทำให้เป็นมาตรฐาน

ฉันรู้ว่ามันเป็นไปได้อย่างสมบูรณ์ในการสร้างตารางโดยไม่มีคีย์หลัก แต่ฐานข้อมูลนั้นถูกพิจารณาว่าเป็นมาตรฐานหากตารางนั้นมีอยู่จริงหรือไม่

ฉันควรเพิ่มตารางไม่มี "คีย์ที่ไม่ซ้ำกัน" ไม่มีหลักไม่มีคอมโพสิตไม่มีต่างชาติ

ตารางที่แสดงมีสามคุณลักษณะโดยไม่มีชื่อใดเป็นชื่อหลักหรือไม่ซ้ำกัน ฉันถามว่ามันเป็นความผิดพลาดหรือไม่และเขาบอกว่าไม่เป็นไร ฉันตั้งข้อสังเกตว่าไม่มีข้อมูลใดในตารางที่สามารถระบุได้โดยไม่ซ้ำใครและเขาอ้างว่ามันโอเคที่จะเป็นเช่นนี้ สิ่งนี้ขัดกับสิ่งที่ฉันสอนเกี่ยวกับการทำให้เป็นมาตรฐาน

คำตอบ:


15

หากความสัมพันธ์ไม่มีคีย์ตัวเลือกใด ๆ (และคีย์หลักเป็นเพียงหนึ่งในคีย์ตัวเลือก) ก็สามารถมีแถวที่ซ้ำกันดังนั้นในความเป็นจริงมันไม่ใช่ความสัมพันธ์! (เนื่องจากความสัมพันธ์ถูกกำหนดไว้เสมอ)

ในกรณีนั้นมันถูกต้องมากกว่าที่จะเรียกมันว่าตารางไม่ใช่ความสัมพันธ์อย่างที่คุณทำในคำถามของคุณและทราบว่า RDBMS หลาย ๆ ตัวสามารถจัดการความสัมพันธ์ที่ไม่เกี่ยวข้องได้ ผิดปกติมากและก่อให้เกิดปัญหา (ความผิดปกติ) เมื่อใช้งานข้อมูล

แต่ในกรณีนี้การพูดคุยเกี่ยวกับรูปแบบปกติไม่เหมาะสม: ทฤษฎีการทำให้เป็นมาตรฐานทั้งหมดตั้งอยู่บนสมมุติฐานพื้นฐานว่าวัตถุที่น่าสนใจคือความสัมพันธ์ไม่ใช่หลายเครือข่าย ในความเป็นจริงทฤษฎีนี้มีพื้นฐานมาจากการสันนิษฐาน (Universal Relation Universal Assumption) ซึ่งสันนิษฐานว่าความสัมพันธ์ทั้งหมดของฐานข้อมูลเป็นส่วนย่อยของการฉายภาพของความสัมพันธ์ดังกล่าวซึ่งมีคุณลักษณะทั้งหมดในทุกความสัมพันธ์ และในความเป็นจริงแล้วความสัมพันธ์ (เช่นชุด) ไม่ใช่มัลติเซ็ต

ความจริงที่ว่าเมื่อพูดถึงข้อมูลของตัวแบบข้อมูลเชิงสัมพันธ์บางครั้งเราแลกเปลี่ยนสองคำตารางและความสัมพันธ์ไม่ได้หมายความว่าพวกเขามีความหมายเหมือนกันจริงและความแตกต่างนี้เป็นพื้นฐานเมื่อเราพูดถึงทฤษฎีการทำให้เป็นมาตรฐาน โปรดจำไว้ว่าในหนังสือเมื่อมีการนำรูปแบบปกติมาใช้จะมีการกล่าวถึงสิ่งต่อไปนี้:

ความสัมพันธ์อยู่ในรูปแบบปกติ xxx ถ้า ...


Isomorphic หลายชุดไม่ใช่ชุดที่คุณเพิ่มcountคุณสมบัติเพิ่มเติมให้กับองค์ประกอบใช่หรือไม่
Barmar

3
@ บาร์บาร์ใช่แล้ว แต่คุณเพิ่มคีย์ผู้สมัครและการพึ่งพาการทำงานที่เกี่ยวข้องทั้งหมดดังนั้นจากมุมมองของทฤษฎีการทำให้เป็นมาตรฐาน
Renzo

1
เมื่อคนดำเนินการเชิงสัมพันธ์บนตารางที่ไม่เกี่ยวข้องพวกเขาคาดหวังผลลัพธ์เชิงสัมพันธ์ เมื่อพวกเขาไม่ได้รับสิ่งเหล่านี้จะปรากฏขึ้นผิดปกติ
Walter Mitty

0

3NF หมายถึงตารางที่สอดคล้องกับกฎ 3 ข้อแรกของการปรับสภาพข้อมูล

  1. การกำจัดกลุ่มซ้ำ
  2. กำจัดข้อมูลที่ซ้ำซ้อน
  3. การกำจัดคอลัมน์ไม่ขึ้นอยู่กับคีย์

กฎข้อที่สามต้องใช้รหัส คุณพูดถูกตารางของอาจารย์ไม่ใช่ 3NF

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.