2010-02-28 113 views
1

我有兩個表:membersmembers_data
他們都共享相同的唯一自動增量id密鑰和唯一username字段。兩個MySQL表的合併和別名

我想這兩個表合併成一個members表,我使用members & members_data引用〜50個腳本。我還需要某種別名設置,以使我的members_data查詢指向新的members表。

這可能嗎?

回答

1

您可以通過創建一個只從另一個表中執行SELECT *的視圖來有效地將表別名到另一個表。然而,這是不是一個好做的事:

  • 它由具有視圖這實在是另一個表迷將來的代碼維護(他們當然可以,看看源代碼視圖**)
  • 在某些情況下,優化器可能效率不高
  • 這不是正確的重構方式。

然而,取決於它是多麼容易測試這些「50個腳本」,以及如何批判他們(提示:非常關鍵的代碼難以測試可以把有效發展的真正制動器),創建視圖在短期內可能是一件務實的事情(而且短期解決方案通常會在實際應用中保持多年或永遠不變)。

我強烈建議您在任何可行的情況下更改「50腳本」並執行所有必要的測試以發佈此類更改。在我們的團隊中,我們進行了修改(單個版本),這些修改比「50個腳本」更多,但測試當然證明具有挑戰性(或至少耗時)。

隨着應用程序變得越來越大和越來越複雜,迴歸測試變得越來越困難。儘可能多地考慮它至關重要,因爲重構將變得必要(假設應用程序得到開發或維護),並且因爲迴歸是不好的。

**當然,您的所有表格,視圖等都是腳本化的,並在源代碼管理系統中!

+0

從我剛剛閱讀我不能使用視圖,因爲它不會在更新查詢(我會需要更新members_data實際上更新成員後,我已經刪除表)。我想我必須改變腳本,因爲它表示視圖並未優化,而且我不能長時間保留這些腳本! 感謝您的幫助 – Juddling

+0

您應該能夠更新視圖,除非它以更新沒有意義的方式定義。 「SELECT * from t」視圖應該沒問題。 – MarkR

0

它們都共享相同的唯一自動增量ID鍵和唯一的用戶名字段。

這句話是沒有意義的gobbledy-gook。 MySQL中沒有辦法(或者兩個表可以共享列的大多數rDBMS)。

我懷疑你的問題可能有幾個可能的答案,但沒有看到實際的模式很難說。

假設您確實意味着兩個表都有一個用戶名字段,它在這兩個表中都是唯一的且大小相同,並且這兩個表都有一個名爲id的自動增量列,那麼情況會更加清晰 - 在這種情況下創建一個實現兩個基礎表的列的組合表,將數據遷移到其中並將兩個原始表替換爲視圖。

C.

+0

對不起,我不應該說分享,也許如果我告訴你,他們都有相同數量的行,會有所幫助。 – Juddling

+0

行?不,這根本沒有幫助。 – symcbean

+0

每個成員都有一個唯一的ID 每個成員在成員和members_data中都有一行 – Juddling