翻譯|使用教程|編輯:吳園園|2020-03-19 09:24:19.450|閱讀 1175 次
概述:在今天的文章中,我們將學習如何在設(shè)計時和現(xiàn)有數(shù)據(jù)庫中識別重復組,以及如何修復它們。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium是一個可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。
重復組是在整個數(shù)據(jù)庫表中重復的一系列字段/屬性。大型和小型組織都面臨著一個普遍的問題,這個問題可能會帶來多種后果。例如,在不同區(qū)域中存在的同一組信息可能導致數(shù)據(jù)冗余和數(shù)據(jù)不一致。而且,所有這些重復數(shù)據(jù)會占用大量寶貴的磁盤空間,并需要很長時間進行搜索。重復組的問題在小型組織中是可以解決的,但是對于必須管理大量信息的較大組織,重復組可能成為一場噩夢。
在今天的博客中,我們將學習如何在設(shè)計時和現(xiàn)有數(shù)據(jù)庫中識別重復組,以及如何修復它們。由于重復組是一種會影響任何關(guān)系數(shù)據(jù)庫的現(xiàn)象,因此我們將使用Navicat Premium作為我們的數(shù)據(jù)庫開發(fā)工具。
重復組的例子該包含了大量的虛構(gòu)視頻租賃商店數(shù)據(jù)庫實體。盡管其表已標準化為“第三范式”(3NF),但出于本教程的目的,我們將認為電影表包含有關(guān)每部電影中出現(xiàn)的演員的數(shù)據(jù)。這是該表中的行的示例:
您會看到每個參與者都在表中添加了額外的一行。更糟糕的是,演員的名字每次出現(xiàn)時都會重復出現(xiàn)。問題在于演員是與電影分離的獨立實體。
固定重復組
嚴格來講,即使重復組沒有違反第一范式(1NF),將數(shù)據(jù)從非規(guī)范化格式(UNF)轉(zhuǎn)換為1NF的過程也會消除重復組。這是執(zhí)行此操作的步驟:
由于我們已經(jīng)確定了重復組,因此我們重新設(shè)計表,以便省略重復組字段并為其指定自己的表。
Navicat Premium帶有內(nèi)置的Data Modeler。它可以幫助您直觀地設(shè)計高質(zhì)量的概念,邏輯和物理數(shù)據(jù)模型。從那里,您可以從模型生成數(shù)據(jù)庫結(jié)構(gòu)。Data Modeler也可以反向工作,從現(xiàn)有數(shù)據(jù)庫執(zhí)行反向工程。其他功能包括從ODBC數(shù)據(jù)源導入,生成復雜的SQL / DDL以及將模型打印到文件。
這是顯示現(xiàn)有的films_and_actors表的模型:
為了將演員與電影分開,我們需要添加一個新表來托管演員屬性。我們還應該給它一個ID PK字段,該字段將鏈接到原始表中的相同(新FK)字段。
您還需要重命名表以反映電影表僅包含電影,而演員僅存儲演員信息。
鏈接電影和演員表
如何將表鏈接在一起取決于它們之間的特定關(guān)系。在這種情況下,一部電影可能有零個或多個演員,而演員可能出現(xiàn)在一個或多個電影中。這種多對多的關(guān)系將需要一個中介表來鏈接電影和演員。它僅包含電影和演員ID。這是Navicat Modeler中完整的模型:
結(jié)論
在今天的博客中,我們學習了如何使用Navicat Premium強大的Data Modeler 在設(shè)計時和現(xiàn)有數(shù)據(jù)庫中識別重復組,以及如何修復它們。Navicat Premium添加了100多個增強功能,并包括幾個新功能,可為您提供比以往更多的構(gòu)建,管理和維護數(shù)據(jù)庫的方式!
相關(guān)內(nèi)容推薦:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: