[英]Database table structure for a food and restaurant searching/filtering application
[英]Database Table structure for CRM application
我正在基于PHP和MySQL的小型CRM应用程序上工作。 我正在遵循SaaS体系结构。 单一代码库和每个客户端都有自己的数据库。
请记住,所有联系信息都应从CSV导入。
我的目标是允许客户修改联系表结构。 我的意思是每个客户端都可以定义自己的表结构。
例:
摄影行业的客户喜欢收集以下客户信息:
名称,地址,城市,州,国家/地区,电话,电子邮件,whatsapp
鉴于SEO行业的另一个客户ike收集了以下客户信息:
名,姓,地址,城市,州,国家/地区,电话,电子邮件,网站,skype
满足所有需求的最佳表结构是什么?
希望我已经清楚地解释了我的问题,如果您在理解我的问题时遇到任何困难,请发表评论,我会予以纠正。
允许客户修改表结构提出了几个挑战,至少不是:如果他们想更改其结构以增加或减少新字段会发生什么? 您如何添加验证码? 以及更复杂的安全问题...
面向对象的数据库将是实现此目标的一种好方法,但是您已指出MySQL是必需的,因此从体系结构的角度解决此问题的一种方法是拥有一张客户特定模式表,其中客户密钥映射到特定客户可以动态修改的表架构。
表单元数据和关联的表操作可以存储在数据库中,以动态生成输入字段以及所需的输入字段。 由于应该不经常重新生成表模式,因此这没有太多额外的开销。
使用XML表示模式,我曾经通过实现基于存储的模式生成SQL代码和HTML表单的函数来实现类似的功能。 添加或更改字段时,应用程序会生成新的XML和相关的SQL,以通过XSLT修改表。
例如
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 .....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.