2011-07-31 18 views
0

我目前在我的網站上使用簡單機器論壇,用戶都在我的網站上註冊並使用他們的論壇帳戶登錄。該smf_members表中包含的字段,如:像這樣連接兩個數據庫是個壞主意嗎?如何做呢?

id_member | member_name | date_registered

我現在想要做的是擴展這個以在我的網站上添加更多的自定義字段和連接。我想在許多方面使用id_member字段:

例如,我希望用戶(此smf_members表中的條目)能夠加入團隊。

我要創建一個表具有以下字段:

ID |名稱|說明

和一張桌子TeamMembership具有以下字段:

用戶名| TeamID |角色

正如您所看到的,此表將鏈接成員和團隊,同時僅在各自表中爲用戶或團隊保留特定數據(成功阻止冗餘數據)。這聽起來不錯,對吧?

那麼,我不希望這兩個新表與SMF的東西在同一個數據庫中,因爲它可能會變得混亂。不過,它是最簡單的解決方案嗎?你認爲最簡單的解決方案是在同一個數據庫中創建我的新表,並使用Custom的前綴cst?我不知道如何連接兩個數據庫,所以如果它太複雜了,也許我應該做我的cst解決方案。

我編輯了這篇文章,並有一個額外的問題。

謝謝你的答案。我還有一個問題。假設我想將新變量擴展到成員,但又想避免在SMF論壇成員表中添加新字段。關於這個最簡單的方法是什麼?就像,我想創建一個表名爲UsersExtended,並有領域,如:

-ID(這不是一個自動遞增字段,但是從SMF成員表id_member的值)

- 國家

是很容易與這種結構創建個人資料頁面,並顯示任何相關數據,我從兩個表想,在某種程度上,鏈接兩個,讓他們作爲一個大表?

回答

3

它們完全屬於同一個數據庫。使用一個數據庫並在查詢中加入表格。

您希望爲您的應用程序(除應用程序本身之外)構建唯一數據庫的唯一時間是如果您打算創建一個API,以無偏見的方式將該數據提供給其他項目。這在Solr中非常常見,您可以在其中快速創建API,並且通常不會混入當前的MySQL表中。

+0

謝謝你的幫助。我發佈了一個更新到我最初的問題,因爲我是新來的Stackoverflow.com,我不確定當我編輯我的問題時,我的問題再次碰到頁面的頂部。 – pr0tocol

1

將自定義表放在同一個數據庫中絕對沒有壞處。您不能在關係數據庫系統中定義2個不同數據庫之間的關係。

+0

哦jeez我想你是對的lmao。十分感謝你的幫助。問題,我是否應該加上任何前綴,以便於發現? – pr0tocol

+0

好,這取決於你的喜好。如果我是你,我不會添加任何前綴到我創建的表中。默認情況下創建的表格已經有了前綴smf,所以你知道那些不是由你創建的。我只是讓我的桌子成爲隊而不是cst_teams。這樣,我認爲你寫的查詢更具可讀性。 – shashi

+1

@sassyboy:_你不能在關係數據庫系統中定義2個不同數據庫之間的關係_它取決於數據庫系統,MySQL允許它。 – Vlad

0

你可以試試這個

SELECT * 
from database1.table, database2.table 
where database1.table.id=database2.table.id 
0

您應該只在同一個數據庫中如果任何用戶想要的團隊成員創建兩個表

**smf_members** 

id_member | member_name | date_registered 

**TeamMembership** 

Team_ID | Name | Description | Role | id_member 

的,你可以很容易地操作使用連接查詢的記錄。

1

如果你使用MySQL看看this question的接受答案。請記住,在跨數據庫查詢時,必須爲數據庫名稱添加前綴。

0

不知道簡單機器論壇 - 但我知道大多數應用程序希望成爲鎮上唯一的展會。

我會用自己的表創建一個新的數據庫=也許稱爲「團隊」,並使用NickCL的方式進行跨數據庫連接以在兩個應用程序之間進行連接。

你沒有提到你正在使用的特定數據庫引擎(我認爲它是MySQL),但從邏輯上講,你可以將數據庫視爲命名空間 - 這是一種將屬於同一邏輯地點的東西放在一起的方法。

理想情況下,「人員」/「身份驗證」等應該位於與論壇內容不同的數據庫中 - 但由於您正在使用現成的代碼,因此您沒有那麼奢侈。

根據我的經驗,最好不要亂用現成軟件的數據庫 - 當你想升級時,你不知道自己的桌子會發生什麼,不管他們的名字如何。

相關問題