2015-06-04 99 views
0

我找一個小諮詢如何與我們一直在進口的情況下將數據從其他部門的一個表進行:
複合主鍵與自動遞增主鍵

Id CreationDate    ClosedDate LastUpdateDate   Name         Description   
DE5838 2015-06-02 06:14:11.11  NULL  2015-06-02 06:19:33.33 Look UP : Should be updated ...  Description : This is not a defect…   
DE5834 2015-06-01 16:16:03.03  NULL  2015-06-01 16:24:19.19 Sync error for Ultimate packages... We are getting an error ....   
DE5822 2015-06-01 10:37:10.10  NULL  2015-06-01 10:37:10.10 Terminal subscription has expired... For given terminal serial number…    
DE5818 2015-06-01 09:53:44.44  NULL  2015-06-01 09:53:44.44 No Option Code…      Allie pulled the report....   

相當一段(而且外部部門沒有太多的數據定義),我們一直將ID字段視爲PK - 只是現在我們開始看到其他部門已經在回收這些ID號碼(我知道我有)知道 - 真的是壞主意)。
那麼,我們所留下的數據是他們嘗試導入的數據 - 但由於唯一標識符已分配給案例數據,因此我們的表不會接受它。

我想可能是一個很好的解決辦法是在PK更改爲複合材料ID和CreationDate(我們認爲可能,外面部門創建數據的方式),我也可以添加自動遞增的ID字段,並將其作爲唯一標識符分配給我們已有的所有數據。

但是,由於這是我最近走入的一個遺留混亂,我正在尋找有關如何繼續此操作的任何建議。

+0

我個人會使用身份字段,如果我不知道PK是由我認爲它的列構成的。 –

+0

@TabAlleman,他們一直在使用不同的唯一標識符來處理他們的數據,我非常肯定它沒有影響我使用前進的方向。我想我想知道是否有一個ID風險的選項實施。我的意思是在一個新的ID字段中添加一個列,但是對於複合,我正在改變PK - 對此的想法? –

+0

如果您擁有單個標識列,那麼您可能需要編寫一些特定查詢,這些查詢會更容易。除此之外,我無法真正想到兩者之間的區別。 –

回答

1

創建複合鍵不僅會讓你改變了指數,但它引用主鍵的所有表還必須有其他列添加。我會建議在桌上添加一個標識字段。將您當前的ID字段重命名爲ReferenceNumber。然後更新其他表中的所有外部引用以使用新的ID。然後,您可以將外鍵字段也轉換爲整數字段。這將最終節省數據庫中的空間,並可能在未來加快連接速度。

那麼你也必須確保任何接口更新由ReferenceNumber/dateor新的ID做查找。