2016-05-30 98 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。你的解释非常好。我将通过添加更多信息来更新我的问题。每个客户都有自己的数据库。 –

相关问题