2013-02-21 72 views
0

我很抱歉,如果這看起來過於簡單。我發現最好問一個愚蠢的問題,並編寫正確的代碼,而不是犯錯誤,花幾個小時試圖找到並修復它。組織一個多用戶數據庫網站

我做了我哥哥一個客戶管理系統(PHP/MySQL的),他的幾個朋友看到了,想一個了。所以我認爲只是建立一個單獨的網站,每個人都有自己的登錄名/密碼是一個好主意。當他們登錄到他們的賬戶時,他們只能看到他們的客戶數據庫。這聽起來像個好主意,但我正在碰到一個心理障礙。

現在我哥的地盤我有兩個表一個用於登錄信息(這樣他就可以給訪問他的球隊),然後實際的數據庫保存所有的客戶信息一個數據庫。如果我遵循這個模型,我仍然只需要一個數據庫和一個表來獲取登錄信息,但是每個用戶都必須爲他們的個人客戶擁有自己的表。所以說我最終得到越來越多的用戶,我擁有一個擁有數百個不同表格的數據庫。可以嗎?他們的安全問題?有沒有更好的方法來解決這個問題?我錯過了一些邏輯?謝謝。

+0

將所有的sql保存在源代碼管理中。使用腳本來創建/修補數據庫。每個租戶使用一個數據庫(mysql數據庫實際上不是通用命名法中的數據庫,它們是模式) – 2013-02-21 20:01:29

回答

1

如果我遵循了這一模式,我仍然只需要登錄信息一個表一個數據庫,但每個用戶必須擁有自己的表,他們的個人客戶。

號你有一個單一的客戶表。其中的一列將是foreign key,它引用用戶表的主鍵(顯示客戶端與哪個用戶相關聯)。

(除非一個客戶端可以與多個用戶,在這種情況下,你可以使用一個junction table關聯)。

+0

我喜歡它!我想我的sql查詢會涉及很多事情,但是有沒有安全漏洞需要我注意,以防止其他用戶看到他們沒有添加的客戶端。我無法想象一個情景,但讓所有的客戶混在一起讓我感到緊張! – 2013-02-21 17:42:46

+0

是的。當任何用戶請求有關客戶端的信息時,請檢查該客戶端是否屬於該用戶。 – Quentin 2013-02-21 17:47:08

+0

這樣的東西:SELECT * FROM clients WHERE userid = 1 AND whatever data want to find – 2013-02-21 20:17:36

0

那麼在beginnig可以實現一個名爲Client或公司(所有客戶端都在表中輸入一排,我的意思是你的弟弟和其他任何人/公司誰/這要使用你的網站)表,並且表中的PK應該添加到數據庫中的所有表中。

但是,如果你的網站的岩石會發生什麼?也許你有10000個客戶端,你應該分析服務器的性能(可能是主機)是否支持這種速率傳輸以及PK/FK工作正常。在那個時候,也許你應該爲每個客戶創建一個數據庫和一個網站。