我的客户在注册我的申请时会使用以下其中一项:
> Foo API(需要“auth_key”,“密码”,“电子邮件”)
> Acme API(需要“secure_code”,“用户名”,“密码”)
> Bar API(需要“xyz_code”,“pass_key”)
(假名,为简单起见省略了15个)
我不希望在我的数据库中只有10-15个表用于我提供的不同API集成选项(特别是当它们全部用于相同的事情并且他们只从整个列表中选择1时).
我的解决方案是:
使用名为api_name的列创建api_configuration表,该列包含特定API的代码(例如“foo_api”)
创建一个名为credentials_attribute的表,使用外键返回api_configuration,名为name的列和名为value的列.
然后我构建了一个用于选择API的UI.如果他们选择Acme API,它将要求“secure_code”,“username”和“password”,并在credentials_attribute中为每个名称/值对创建一行.
在我的api_configuration的ORM模型上,我可以创建一个方法,根据当前的api_name查找credentials_attribute值.
如果你不得不为这个问题建模解决方案,这个解决方案是否正确,或者是否有另一种方法可以做到?请解释你的理由(即,更好的表现等)
解决方法
如果我理解正确的情况,它看起来像gen-spec设计模式的另一种情况.查找“泛化专业化关系建模”.
对象建模的教程通常涵盖gen-spec,但关于关系建模的教程通常不会.但它很好理解,网上有一些优秀的文章.