2015-04-01 138 views
0

我有一個數據庫,我正在創建,並與Mysql中的另一個表進行了1對1連接,下面是一個屏幕截圖。我的問題是,我可以刪除創建連接時創建的額外列(assembly factory_id)嗎?我只想要單一的(factory_id)這會搞砸我建立的連接嗎?我應該放下(factory_id)並讓連接繼續嗎? 我是小白,謝謝!可以刪除它嗎?

enter image description here

回答

1

我假設您的評論「但我應該刪除表嗎?」真的意味着說「但我應該放棄專欄?」。

簡短的回答:如果安全,您應該刪除該列 - 沒有理由讓它混亂數據庫和未來開發人員的頭腦。如果1)factory_id中的值IS和ALWAYS將與組件factory_id相同,例如它們是彼此的重複值,並且2)沒有其他表或程序是其它的表或程序代碼引用程序集factory_id,則可以安全地刪除程序集factory_id。

但是,如果有任何機會,他們意味着不同的事情(不只是20行左右的樣本),你不能刪除它。請參閱小提琴:http://sqlfiddle.com/#!9/0bf17/1

如果它們總是相同,但數據庫或代碼的某些部分引用程序集factory_id,那麼可以重構那些數據庫或代碼部分來引用factory_id,然後刪除程序集factory_id。

在做這樣的事情時,應該進行測試以驗證更改後的查詢和程序狀態與更改前的狀態相同。

+0

非常感謝!那是我需要的答案!是的,我的意思是專欄,而不是表:) – beau8008 2015-04-01 20:10:10

1

您可以使用ALTER語句刪除多餘的列。

ALTER TABLE table_name DROP COLUMN factory_id; 

您也可以參考http://docs.oracle.com/cd/E18283_01/server.112/e17118/statements_3001.htm#i2103683 (下降特定列條款)

編輯: 至於連接方面,ALTER語句轉儲到一個臨時表,然後在不丟失任何重建連接。請參閱存儲,性能和併發注意事項在此document

+0

但是我應該放下桌子嗎?那是我的問題。 :) – beau8008 2015-04-01 02:19:49

+0

因爲我做了1對1的連接,所以添加了額外的列,如果我擺脫了「factory_id」會改變什麼? – beau8008 2015-04-01 02:20:33