0

我的DataTable有3列:A,B和C.無保證具有唯一條目,在非平凡的情況下,每列都有非唯一條目。使用兩列主鍵和另一列對錶格進行歸一化處理

{A,B} 的組合是保證是唯一的。因爲ADO.NET DataTable允許使用多列作爲主鍵,所以我使用A和B作爲主鍵。

A vs B表示一個0作爲默認值的矩陣,所以我可以保證B的條目來自一個有限的池,對於A的每個條目,每個可能的{A,B}都會出現(即,表格中將有確切的number of unique A values * number of unique B values行)。

我的問題有兩個部分:

1)如何規範這使我有一個關鍵,沒有更新異常(我不知道,但我想我要一個3NF)? (除非我錯了,只是添加一個額外的「ID」列與非冗餘整數將允許更新異常)

2)如何設置它(在C#中使用ADO.NET庫),以便每當我想要要添加一行,我指定了B和C的條目,然後它會自動生成一個合適的A值,以便我可以「在{A,B}處插入C」? A可以是整數或字符串。

這兩者是相關的,因爲你對2的回答可能影響1,反之亦然。

+1

你不會學習讓別人做你的功課。 – ChrisBint

+0

@ChrisBint你爲什麼認爲它功課? – Superbest

回答

1

關鍵不一定是滿足3NF的單個列。它可以是多列(在本例中爲(A,B)),也可以是您提供的維基百科鏈接中的示例。

但是,如果你想有一列鍵,那麼您可以創建一個自動生成的ID(如:IDENTITY(1,1)在SQL服務器)的新列,創建列的唯一索引(A,B)

相關問題