允许客户端修改表结构会带来几个挑战,而不是最起码的是:如果他们想要改变它们的结构来增加或减少新的字段会发生什么?你如何添加验证码?以及更复杂的安全问题......
一个面向对象的数据库将是一个很好的实现方法,但你 已经表明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 .....
这意味着用户可以添加/删除给定模块的自定义字段的自定义字段。有很多开源的crm应用程序写在php和mysql上,比如'vtiger crm,sugar crm'等等,我正在使用'sqcrm.com',你可以查看更多。 –
@AbhikChakraborty谢谢你的建议,但我尝试了一些不同的东西,所以我想从头开始构建它。 –
这些查询的外观如何? –