2016-05-30 65 views
0

我正在研究基於PHP & MySQL的小型CRM應用程序。我正在關注SaaS架構。單一代碼庫和每個客戶都有自己的數據庫。CRM應用程序的數據庫表結構

  • 請記住,所有聯繫信息都應該從CSV導入。

  • 我的目標是讓客戶修改聯繫人表結構。我的意思是每個客戶可以定義他們自己的表結構。

例子:

  • 從攝影行業的一個客戶端,喜歡收集客戶信息如下:

    名稱,地址,城市,州,國家,電話,電子郵件,whatsapp

  • 而另一個從SEO行業客戶,艾克收集客戶信息如下:

    姓氏,姓名,地址,城市,州,國家,電話,電子郵件, 網站,Skype的

會是什麼最好的表格結構來匹配所有需求。

我希望我已經清楚地解釋了我的問題,如果您在理解我的問題時遇到任何困難,請發表評論,我會予以更正。

+0

這意味着用戶可以添加/刪除給定模塊的自定義字段的自定義字段。有很多開源的crm應用程序寫在php和mysql上,比如'vtiger crm,sugar crm'等等,我正在使用'sqcrm.com',你可以查看更多。 –

+0

@AbhikChakraborty謝謝你的建議,但我嘗試了一些不同的東西,所以我想從頭開始構建它。 –

+0

這些查詢的外觀如何? –

回答

1

允許客戶端修改表結構會帶來幾個挑戰,而不是最起碼的是:如果他們想要改變它們的結構來增加或減少新的字段會發生什麼?你如何添加驗證碼?以及更復雜的安全問題......

一個面向對象的數據庫將是一個很好的實現方法,但你 已經表明MySQL是一個需求,所以從體系結構的角度來看這個方法是具有客戶特定模式的表格,客戶鍵映射到可以動態修改的特定表格模式。

表單元數據和關聯的表操作可以存儲在數據庫中,以動態生成輸入字段以及所需的輸入字段。由於表模式應該不經常重新生成,因此這不會產生額外的額外開銷。

使用XML來表示模式,我曾經通過實現基於存儲的 模式生成SQL代碼和HTML表單的函數來實現類似這樣的事情。當添加或更改字段時,應用程序會生成新的XML和關聯的SQL,以便通過XSLT修改表。

E.G.

Schema  DBtoSchema(Database) 
DataBase  SchematoDB(XML_Schema) 
Schema  DBTabletoSchema(Table) 
DBTable  SchemaToDBTable(XML_Schema) 
SuccessCode SchemaAddField(XML_Schema, FieldName, FieldType, FieldValidation) 
SuccessCode SchemaDeleteField(XML_Schema, FieldName) 
SuccessCode NewTable(Schema) 
SQLCode  GenerateInsertSQL(Schema) 
SQLCode  GenerateDeleteSQL(Schema) 
HTMLCode  GenerateForm(Schema, xsltCode) 
... and so on ..... 
+0

謝謝J Carl Zeigler。你的解釋非常好。我將通過添加更多信息來更新我的問題。每個客戶都有自己的數據庫。 –