簡體   English   中英

規范化和范式:數據庫

[英]normalization and normal forms: database

基本上很抱歉提出這樣的問題。但是,當我在考試中寫下有關1,2和3范式(條件)的這些定義時,我錯了:

1 NF:

  1. 每列中的數據應為原子數據。否,多個值之間用逗號分隔
  2. 表中不應包含重復的列組
  3. 使用主鍵標識每個記錄。

2 NF:

  • 必須在1 NF中
  • 不得包含冗余數據,如果是,則將其移至單獨的表
  • 使用外鍵創建表

3 NF:

  • 必須在2NF
  • 劑量不包含不完全取決於主鍵的列

我寫錯了嗎?我的老師不同意。

來源視頻。

1NF

一行數據不能包含重復的數據組,即每一列必須具有唯一值。 每行數據必須具有唯一的標識符。

2NF

要標准化為第二范式的表應該滿足第一范式的所有需求,並且主鍵上的任何列都不能有任何部分依賴。 這意味着對於具有串聯主鍵的表,不屬於主鍵的表中的每一列都必須依賴於整個串聯鍵的存在。 如果任何列僅取決於連接鍵的一部分,則表將失敗第二范式

3NF

第三范式適用於表的每個非主屬性必須依賴於主鍵。 傳遞函數的依賴關系應從表中刪除。 該表必須為第二范式。

更多參考:

  1. http://www.studytonight.com/dbms/database-normalization.php
  2. http://holowczak.com/database-normalization

我相信答案是錯誤的。 您不應該使用與規范化相關的術語。 您可以在有關2NF的答案中找到此示例

  • 不得包含冗余數據,如果已將其移到單獨的表中
  • 使用外鍵創建表

什么時候有數據冗余? 您將哪些數據移到單獨的表中? 創建表格是否始終是您獲得2NF表格的第一步?

如果您會說:

  • 所有不屬於主要標識符的屬性都應完全取決於整個主要標識符。

您仍然在說完全相同的一件事,不允許有冗余數據,但是您所說的方式表明您知道標准化的全部內容。

根據您在考試中的答案:

1 NF:

a。每列中的數據應該是原子的。不,多個值之間用逗號分隔(TRUE是因為1NF不支持Composite和Multivalued屬性,更重要的是,默認情況下,此屬性在ER Model到關系模型轉換時處理。)僅此屬性1NF就足夠了。

b。表中不應包含重復的列組。 (不需要)

c。使用主鍵標識每條記錄。 (不需要)

2 NF:

a。必須為1 NF(TRUE)

b。不得包含冗余數據,如果是,請將其移到單獨的表中。 (是的,但是這里我們只關注部分依賴。對於2NF,刪除部分依賴就足夠了。在刪除之后,如果仍然存在一些冗余數據,則對於2NF來說是可以的。)

c。使用外鍵創建表(FALSE,以將表分為兩部分的方式將它們之間的公共屬性用作任何已分解表的候選鍵)示例:R(A,B,C,D),讓我們假設我們要為2NF打破該表,因此分解以(AB)和(BCD)這樣的方式完成,其中(AB)或(AB)中的任何一個的共同屬性(HERE:'B')都充當候選鍵(BCD))。

3 NF:

a。必須在2NF中(不一定是正確的,即使不是2NF也可以使用3NF。當它在3NF中時,它將自動滿足2NF屬性)

b。不包含不完全依賴主鍵的列的方式(編寫方式是錯誤的,您應該寫“在3NF中,不允許傳遞傳遞性(非素數屬性派生素數屬性”))

*請記住:切記,遵循從1NF到2NF,從2NF到3NF,從3NF到BCNF的規則不是慣例。 意味着您可以直接使用BCNF(0%冗余)。

希望這可以幫助。 有關更多詳細信息,您還可以參考: 普通表格的詳細說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM