1
您能否給我提供一篇文章,其中提供了一個3NF但不包含在BCNF中的數據庫設計示例,然後說明如何將其轉換爲BCNF?我看到的所有試圖解釋BCNF的文章都給出了1NF中的表格的示例,然後將它們轉換爲BCNF。這並沒有讓我看到3NF和BCNF之間的區別。BCNF標準化
在此先感謝
您能否給我提供一篇文章,其中提供了一個3NF但不包含在BCNF中的數據庫設計示例,然後說明如何將其轉換爲BCNF?我看到的所有試圖解釋BCNF的文章都給出了1NF中的表格的示例,然後將它們轉換爲BCNF。這並沒有讓我看到3NF和BCNF之間的區別。BCNF標準化
在此先感謝
具有謂詞和匹配約束。
|員工(EMP_ID)在發送電子郵件(EMAIL)時,課程(CRS_ID)在年(YR)。
對於每個員工和課程;該員工最多隻參加一次該課程,可能有多名員工參加了該課程。
對於每位員工,該員工只有一封電子郵件。
對於每封電子郵件,只有一名員工擁有該電子郵件。
對於每個員工和課程;該員工在一年內完成了該課程。
對於每個員工和年份;該員工可能在當年參加了一門以上的課程。
對於每個課程和年份;這一年有可能有不止一名員工參加該課程。
R {EMP_ID, EMAIL, CRS_ID, YR} KEY {EMP_ID, CRS_ID} KEY {EMAIL, CRS_ID}
的函數依賴於此的是
FD {EMP_ID, CRS_ID} --> {YR} FD {EMAIL, CRS_ID} --> {YR} FD {EMP_ID} --> {EMAIL} FD {EMAIL} --> {EMP_ID}
因此,考慮這些每一個爲FD X --> Y
它認爲要麼,
,因此R
處於第三NF。
對於BCNF,所述要求是,在任何R
非平凡FD X --> Y
,X是一個超密鑰。
所以,現在我們可以分解這
{EMP_ID, EMAIL} {EMP_ID, CRS_ID, YR} OR {EMP_ID, EMAIL} {EMAIL, CRS_ID, YR}
這將消除這兩個函數依賴於子項。
下面是一個檢查列表2NF到BCNF
--------------------------------------- For each nontrivial | NF FD X --> Y | at least one holds | 2nd 3rd BCNF --------------------------------------- X is a superkey ✔ ✔ ✔ Y is a subkey ✔ ✔ X is not a subkey ✔ --------------------------------------- FD X --> Y is trivial iff Y ⊆ X
的可能的複製[深入淺出3NF和BCNF之間的區別(必須能夠解釋一個8歲)]( http://stackoverflow.com/questions/8437957/difference-between-3nf-and-bcnf-in-simple-terms-must-be-able-to-explain-to-an-8) – sqlvogel