为了账号安全,请及时绑定邮箱和手机立即绑定

使用静态语言将数据库表中的对象分离与合并

使用静态语言将数据库表中的对象分离与合并

Go
慕容森 2021-08-16 20:19:14
考虑在数据库中有一个名为users的表和一个名为 的表wallets。除其他外,用户有 0 个、1 个或多个钱包。这种关系是一对多的,这意味着钱包有一个指向用户的外键。现在的问题如下:在为一个人构建结构或类时,我看到两种可能性:1) 用户没有钱包的迹象。有一个函数将用户作为参数并获取钱包数组。2) 用户拥有一个包含钱包的数组作为成员,并且在创建对象/结构时获取钱包。我认为第一种方法可能更好,因为它更加模块化——在第二种方法中,用户依赖于钱包,即使用户没有钱包。不过,我不确定哪种方法更好,所以我正在寻找两种方法的比较。
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

在应用程序级别,您可能有这样的用户类型(Go 符号):


type User interface {

    Wallets() []Wallet

}

在下面,有一个数据库,在您的情况下是 SQL。这应该不会是通过看你的应用程序很明显,想。


对超出它们以接口契约形式保证的依赖项做出假设会使组件不可逆转地耦合。


这意味着,如果您根据数据库的模式对应用程序进行建模,那么您就做错了,因为您的整个应用程序现在与所述数据库紧密耦合,并且对其任何部分的任何更改都会产生巨大的、不可预测的影响。


一个常见的解决方案是使用所谓的ORM 层,它位于您的数据库驱动程序和实体模型之间。它将处理以下内容:


应该如何以及何时取出钱包?

钱包的信息存储在数据库中的哪个位置?

当你删除一个用户时,钱包也应该被删除吗?

除其他事项外。


PS:此答案适用于静态和动态类型语言。


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信