這張表真的是第一範式(1NF)嗎?
該表是否符合 1NF,即使CourseNo和StudentNo?
Student(StudentNo, StudentName, Major, CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation, Grade)
如果該關係/表的所有屬性/列始終包含原子值(即,它們只接受對應的簡單域1、每個元組/行的一個值——既沒有值,也沒有兩個或更多,也沒有 NULL 標記) ,那麼是的,該關係/表滿足第一範式(1NF);否則,不,它不在 1NF 中,它是非規範化的。
自然,我不知道相關業務環境的資訊特徵(例如,最終使用者和業務專家賦予每個屬性/列什麼含義,每個屬性/列如何與其他相關聯等),所以誰知道呢。
到目前為止,這個問題缺乏任何樣本值(確定各個領域的最重要因素),缺乏關於手頭業務場景的任何描述,缺乏關於重要數據點如何相互關聯的詳細資訊,等等(是的,屬性/列由某些單詞表示,但同一個單詞在不同的上下文中可能具有不同的含義,因此不相關的讀者無法準確知道它們在所考慮的場景中的含義);因此,就文章而言,不可能正確評估其中包含的關係/表。
如果您開始根據關係範式學習**規範化,那麼問題不包含這種必要資訊的事實是可以理解的,但請注意,在佈置數據庫時進行猜測會適得其反。對此,值得指出的是,在任何專業的數據庫設計項目(當然包括邏輯層的規範化)中,與業務專家的密切合作都是必不可少的。
如果您參與培訓/學校課程,我強烈建議您要求老師對練習進行適當的背景化。相反,如果你是自學,你應該在關係領域尋找可靠的材料來優化你的努力(這個建議現在更合適,因為你已經通過你自己學習的評論澄清了這一點)。
與上述討論一致,可以說關係數據庫設計是一門需要高精度的工藝。
1基本上,域是一組相同類型的值。N個約束可以附加到一個域。數據庫的N個關係/表可以有n 個屬性/列,這些屬性/列從同一域中提取它們的值。反過來,屬性/列可以具有僅適用於其自身的特定約束。
2一個域是簡單的,如果 (a) 它不是由關係/表組成,並且 (b) 它的值不能被數據庫管理系統分解。在描述數據庫時避免非簡單域是有用的,以便充分利用數據子語言的聲明能力,這在實踐中有助於約束和操作操作的實現。