2015-06-21 22 views
1

我正在開發一個應用程序,用戶註冊他們的公司並存儲他們的所有信息;除了每個用戶的單獨數據庫以外的任何選項?

  • 公司

    tax_registration_no, name, address, etc 
    
  • 產品

    product_code, description, price, etc. 
    
  • 部門

    department_code, name. 
    
  • 員工

    employee_id, username, password, address 
    
  • 員工個人權限

    employee_can_access_till, employee_can_provide_discount, etc. 
    
  • 客戶

    name, address, orders 
    

每個公司,寄存器將被賦予一個電子表格模板文件,使他們能夠在複製他們的數據和發送它回到我的客戶端進行存儲。

當文件上傳到網站時,我的客戶希望爲每個公司生成一個單獨的數據庫,但我不相信這是一個聰明的方法(這聽起來像是一場維護噩夢)。如果我有多個數據庫要檢查,員工身份驗證等工作會如何工作?

數據將被內部存儲在設備上,因此它只會與服務器一次同步以獲取數據,然後每次更新時都會再次同步。

我最初的想法只是將電子表格存儲在服務器上,並在需要時解析並通過JSON發送給應用程序。這樣它只是一個可以下載,修改和重新上傳的文件。只將員工和公司存儲在單個數據庫中。

有關如何解決這個問題的任何建議?

+2

那不需要。你可以使用一個ID來標識它們。然後爲可以訪問某些公司數據的用戶設置訪問級別 –

+0

您說過「我的客戶想要爲每個用戶分配一個數據庫」。誰是用戶?公司?或者代理管理多家公司? – light

+0

@light - 這將是每個公司 – Sawyer05

回答

2

你絕對不需要需要每個用戶一個單獨的數據庫。很難確切地告訴你「用戶」是什麼意思,但它聽起來像一家公司。

相反,只需在所有適當的表格中包含companyid即可。從您的清單中,除了individual_employee_permissions表格(您可以從join獲得公司的員工)之外,似乎都是這樣。

這是設計這樣一個數據庫的「常規」方法,它有很多優點。您可以輕鬆查詢公司發生的事情 - 每家公司有多少名員工?有多少客戶?哪些員工擁有管理員權限?

另一個優點是在維護方面。如果您需要修復系統或添加功能,則在單個數據庫上執行操作要比在多個數據庫上執行起來要容易得多。同樣,備份和恢復系統對於一個數據庫來說是一個更簡單的過程。

有幾個原因可以將公司存儲在單獨的數據庫中。這些原因超越了上述的便利性。首先是如果每個系統都是公司定製的系統。然後可以爲其中一個公司添加功能而不依賴於其他公司

第二個原因是安全限制要求數據不能與其他公司的數據一起存儲。這有時會發生,出於一個很好的原因不太經常。但是,這樣的要求可能會要求單獨的數據庫,甚至爲每家公司分開服務器

+0

說一家公司要求一個獨特的員工權限,是否有一種方便的方法來在單個數據庫上做到這一點?將它推出給所有用戶並不是最糟糕的事情,只是出於好奇 – Sawyer05

+0

@ Sawyer05。 。 。從某種意義上說,絕對是。你會爲每個人定義權限。只有一家公司會使用它。 –

+0

對不起,我花了這麼長時間來接受這個答案。我使用單一的數據庫計劃,它的工作原理是一種享受! – Sawyer05

相關問題