Normalization

違反第三範式?

  • August 29, 2016

我有一個照片評論類型的應用程序,客戶希望使用者可以選擇標記照片的問題。因此,例如,可以將照片標記為“模糊”、“顆粒狀”或“其他”。如果選擇“其他”,則需要簡短的文字說明。

我想我應該創建一個包含所有問題類型的表。另一個表將具有與照片 ID 和問題類型 ID 的外鍵關係。如果選擇了“其他”,我認為該表還應該有一個用於“其他”文本的文本類型列,否則該列將為空。

我的困境是,這會違反規範化規則嗎?如果“Other”文本列不為空,則可以假設問題類型 id 將始終是“Other”的那個。所以,這將是一個傳遞依賴,對吧?關於如何在不違反第三範式的情況下實現這一點的任何想法?

如果該列OtherTextnull,則您不知道該列的值IssueType。它可能是模糊的或顆粒狀的。所以IssueType是不依賴的OtherText

您的設計不違反 3NF。

我不會太擔心“範式”。它們是極好的建議,應在適當的情況下予以遵循。但僅限於適當的地方。在這種特殊情況下,正如@Andomar 所說,無論如何您都不會遇到問題,但是我可以多次想到我違反了各種正常形式以提高查詢或報告的性能。

引用自:https://dba.stackexchange.com/questions/45659