gpt4 book ai didi

sql - 如何管理数据库中的 "groups"?

转载 作者:行者123 更新时间:2023-12-04 21:55:15 25 4
gpt4 key购买 nike

我问过这个问题here ,但我认为我没有表达我的观点。

假设我有以下表格(所有 PK 都是 IDENTITY 字段):

  • 人员(PersonId (PK)、姓名、SSN 等)
  • 贷款(LoanId (PK)、金额等)
  • 借款人(BorrowerId(PK)、PersonId、LoanId)

假设史密斯先生以自己的名义获得了 2 笔贷款,其中 3 笔与他的妻子联名贷款,1 笔与他的情妇联名贷款。为了申请的目的,我想对人们进行分组,这样我就可以轻松地挑选出史密斯先生与他的妻子共同申请的贷款。

为了实现这一点,我添加了 BorrowerGroup 表,现在我有以下内容(所有 PK 都是 IDENTITY 字段):

  • 人员(PersonId (PK)、姓名、SSN 等)
  • 贷款(LoanId (PK)、金额、BorrowerGroupId 等)
  • 借款人组(GroupId (PK))
  • 借款人(BorrowerId(PK)、GroupId、PersonId)

现在史密斯先生分为 3 个组(他自己、他和他的妻子、他和他的情妇),我可以轻松地查找他在任何组中的事件。

新设计的问题:

生成新的 BorrowerGroup 的唯一方法是在 IDENTITY_INSERT ON 的情况下插入 MAX(GourpId)+1,这感觉不太对。另外,只有 1 列的表格的概念有点奇怪。

我坚信代理键,并且希望尽可能坚持该设计。

此应用程序不关心个人,GROUP被视为个人

是否有更好的方法来针对此应用程序的目的对人员进行分组?

最佳答案

您可以删除表 BorrowerGroups - 它不携带任何信息。此信息已通过 Loans 提供。 People分享 - 我只是假设你有一个 PeopleLoans表。

People          Loans           PeopleLoans
----------- ------------ -----------
1 Smith 6 S1 60 1 6
2 Wife 7 S2 60 1 7
3 Mistress 8 S+W1 74 1 8
9 S+W2 74 1 9
10 S+W3 74 1 10
11 S+M1 89 1 11
2 8
2 9
2 10
3 11

所以你的BorrowerGroups实际上几乎是Loans - 仅史密斯有 6 和 7 个,史密斯和妻子有 8 到 10 个,史密斯和情妇有 11 个。 所以不需要BorrowerGroups首先,因为它们与Loans相同。按涉及者分组People .

但是有效地检索这些信息可能会非常困难,因此您可以考虑添加 GroupId直接联系Loans 。忽略Loans的第二列(只是为了可读性)第三列应该代表您的组。它们是多余的,因此更改它们时必须小心。

如果你找到一个好方法来导出一个独特的GroupId根据相关人员的 ID,您可以将其设为计算列。如果字符串可以作为组 ID,那么您只需订购人员的 ID,然后用分隔符将它们连接起来即可。

群组60与 Smith 一起只会获得 id '1' , 组74将变成1.2 ,和组89将变成1.3 。不是那么聪明,但独特且易于计算。

关于sql - 如何管理数据库中的 "groups"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com