Database-Design

如何規範化具有多個值的多個單元格的表格?

  • February 27, 2021

因此,我正在執行一項任務,在維基百科上獲取大量(30,000 多部)電影列表,其中包含多個列(例如電影名稱、流派、演員、情節等),並將其上傳到 Elasticsearch。但是,在這樣做之後,我現在想使表格至少處於 1NF 中。我在數據庫設計方面並沒有真正的經驗,我最後一次用 Normal Form 做任何事情是在幾年前。所以我看著這張表並在想,我怎麼能把它放到 1NF 中。例如,如果只有 1 列具有多個值,這很容易,但是當有多個具有多個值的列時,您會怎麼做,如下所示。

難道你只需要做這樣的事情……

ETC?在將具有多個具有多個值的單元格的表格轉換為 1NF 時,我肯定會遺漏一些非常簡單的東西,但我不確定是什麼。

謝謝。

因此,當有多個欄位時,實際上很容易標準化,其中一些欄位在同一行的單個欄位中具有不同數量的數據點。只需遵循此規則:在同一行的列中具有多個數據點的任何列都應該成為它自己的表。因此,在您的範例中,可能是Castand Genre。很明顯,這兩列表示多對多關係,因為在同一行的單個列中儲存了多個值。

正如 nbk 提到的,您需要一個連結/橋接表來儲存該多對多關係。因此,雖然您的新Cast表可能有CastId(primary key)、FirstName和等列LastName,但您在and之間的連結表將被命名為類似並且具有帶有外鍵引用的欄位(來自您的表),並且它也將具有帶有表的外鍵引用。然後,該連結表中的每一行都將代表一個特定的個人。Cast``Film``FilmCast``FilmId``Film``CastId``Cast``FilmCast Cast``Film

您將為Films表中的每一列重複相同的意識形態,每行有多個數據點。一旦您為每個規範化列提供了適當的表,您就無需再將這些數據儲存在主Film表中,並且可以從中刪除這些列。

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