我正在开发一个应用程序,使用户能够配置网关(如PayPal,Authorize.net等)来处理特定的广告系列,但是,每个网关都有不同的特定字段。
在创建与特定Campaign一起使用的自定义GatewayConfiguration期间,字段的值是用户可以更改的唯一内容。
我read about it,发现这样做的好方法是为字段设置一个表,为这些字段的值设置另一个表。像这样:
------------ -- Gateway Table ------------ id 1 -------- -- GatewayField Table -------- id, gatewayId, name, label 1, 1, 'username', 'Gateway Username' 2, 1, 'password', 'Gateway Password' 3, 1, 'apiurl', 'Gateway Api URL' ----------- -- GatewayConfiguration Table ---------- id, gatewayId 1, 1 ------- -- GatewayFieldValue Table ------- gatewayConfigurationId, fieldId, value 1, 1, 'someUser' 1, 2, 'somePass' 1, 3, 'someUrl'
没有太多的网关,它不会改变太多,因为用户无法添加新的网关,只需使用现有的网关,因此,GatewayField也不会改变。
这样做我不是很复杂吗?将所有网关放在单个表上并使用例如JSON字段来定义此网关接受的自定义字段并且在GatewayConfiguration上使用另一个JSON编码字段来设置自定义字段的值不是更好?有更好的解决方案吗?
答案 0 :(得分:0)
我最终使用了问题中提到的类似EVA的结构,它并不复杂,实际上使用像Doctrine这样的ORM实现起来非常容易。
因为数据量不会以高速率增长,所以我没有看到任何性能影响,如果它出现任何问题,我只会将其移动到像MongoDB这样的东西。
现在它正在发挥作用,这才是真正重要的事情。