2017-05-02 380 views
0

我有一個數據庫和一組表。情景是,兩個不同的部門使用完全相同的表結構和服務器代碼/前端,但部門的數據完全不同。MySQL在同一個數據庫中有多個相同名字的表

最好的事情是有兩個不同的數據庫,具有確切的結構和不同的數據。

但是,如果我試圖在1個數據庫中實現這個功能,是否有可能?我無法更改表名,因爲它需要更改查詢表的整個代碼。有沒有辦法在單個數據庫中創建子文件夾/目錄?

我搜索了,可能沒有。但也許有人可以建議的解決方法?

+0

不,你不能創建子數據庫,使用單獨的數據庫 –

回答

1

閱讀關於Identifier Qualifiers。只有它們位於單獨的數據庫中時,纔可以擁有相同名稱的表,並且可以使用數據庫名稱作爲限定符。

SELECT * FROM db1.sametablename; 
SELECT * FROM db2.sametablename; 

你可以加入跨數據庫表中同一查詢:

SELECT * FROM db1.sametablename JOIN db2.sametablename; 

你甚至可以跨數據庫申報的外鍵約束:

ALTER TABLE db1.sametablename ADD FOREIGN KEY (col1) 
    REFERENCES db2.sametablename (col1); 

數據庫基本上都是針對表命名空間和其他物體。

+1

我同意這個答案。儘管如此,我不是跨數據庫連接或引用的粉絲;他們可以在更長的時間內使可擴展性變得更加困難。例如,假設您確定一個數據庫需要託管在另一臺服務器上,因爲負載太高。現在你有跨服務器連接和引用,這通常很慢。並不是說他們總是不好,只是需要注意。 – Jason

+1

@Jason,謝謝,我同意你的告誡。創建數據庫之間的連接意味着你不能分開它們。與其他許多例子一樣,應儘可能避免耦合。我只是指出數據庫是如何像MySQL中的名稱空間一樣。 –

相關問題