CRM应用程序的数据库表结构

时间:2016-05-30 12:38:26

标签: php mysql database database-design database-schema

我正在开发一个基于PHP和PHP的小型CRM应用程序。 MySQL的。我正在关注SaaS架构。单一代码库和每个客户端都有自己的数据库。

  • 请注意,所有联系信息都应从CSV导入。

  • 我的目标是允许客户修改联系人表结构。我的意思是每个客户端都可以定义自己的表结构。

示例:

  • 来自摄影行业的客户,喜欢按以下方式收集客户信息:

    姓名,地址,城市,州,国家,电话,电子邮件,whatsapp

  • 来自SEO行业的另一位客户,请按以下方式收集客户信息:

    名字,姓氏,地址,城市,州,国家,电话,电子邮件, 网站,Skype

满足所有需求的最佳表格结构。

我希望我已经清楚地解释了我的问题,如果您在理解我的问题时遇到任何困难,请发表评论,我会更正。

1 个答案:

答案 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 .....