Python 合并地址还是不合并地址?

Python 合并地址还是不合并地址?,python,database,postgresql,merge,Python,Database,Postgresql,Merge,正在处理sqlalchemy python flask postgresql项目,但不确定是否应该将表合并在一起。我在早期的开发阶段首先从公司地址开始,现在我有了另一个地址表 我应该将它们分开还是合并到一个全局地址表中 UserAddress CompanyAddress 如果我将它们合并到一个地址表中,它将类似于以下内容。。。但是从长远来看,我的用户id仍然比公司id多,而且大部分都是空白的 Address -user_id -company_id 公司和用户可以有多个地址。。。所以这就是

正在处理sqlalchemy python flask postgresql项目,但不确定是否应该将表合并在一起。我在早期的开发阶段首先从公司地址开始,现在我有了另一个地址表

我应该将它们分开还是合并到一个全局地址表中

UserAddress
CompanyAddress
如果我将它们合并到一个地址表中,它将类似于以下内容。。。但是从长远来看,我的用户id仍然比公司id多,而且大部分都是空白的

Address
-user_id
-company_id
公司和用户可以有多个地址。。。所以这就是为什么我考虑使用这种方法,但从长远来看。另外,我也不确定这是否是一个好主意,为维护这一点。或者我应该让它们保持原样并单独维护它们


谢谢!如果可能的话,分享你处理类似情况的经验?

回答你的问题相当困难,有几点需要注意:

  • 如果
    UserAddress
    CompanyAddress
    具有完全相同的字段,并且它们可以在用户和公司之间互换,并且您不希望像所有UserAddress或所有CompanyAddress那样进行查询,我的建议是将它们合并到同一地址表中,因为它们在数据库模型中代表相同的实体

  • 如果有一些
    用户地址
    作为
    公司地址
    没有意义,或者如果您要为
    公司地址
    添加
    用户地址
    中不存在的值,我建议您将这些表分开,因为它们不代表同一实体(用户地址与公司地址不同)

  • 如果您要执行“所有地址”之类的操作,或搜索所有地址中的文本,我认为使用继承是有意义的。您可以通过将公共字段保存到一个地址表中,并将单独的用户/公司地址表中的特定字段保存到主地址表中,然后在“用户/公司”选项卡中引用用户/公司地址表来实现这一点分别是莱斯

  • 您的安全选择是将表分开,如果有意义,您可以在以后合并它们,但是如果您真的有信心并且表(并且您认为它们会)完全相同,并且您不会查询用户或公司地址(这将需要大量联接),只需将它们合并到一个表中即可


    希望它能有所帮助,

    用户地址和公司地址可能无法互换。我将按照以下方式查询用户和公司查询的
    select*from address where User\u id=x
    。所以SQLALCHEMY应该类似于
    address.filter(address.User\u id!=None))。all()
    表格列很相似,只是用户id和公司id都必须填写。我担心的是company_id列大部分是空白的,并且是持续的可维护性。因此,我的建议是不要加入这些表。另一个问题:您是否需要查询“所有地址”?在这种情况下,我应该使用继承,将公共字段保存到一个表中,将不同的字段保存在单独的用户/公司地址表中,并将外键保留到主地址表中。要将公共字段保存到一个表中,而将其他表中的不同字段保留在一起吗?它们中的大多数是相似的。唯一真正唯一的列是用户id和公司id。我通常不会查询所有地址。。它通常针对UsRyID或PosiySyID。对于公共字段,我有一个用于地址的抽象模型类。是的,我认为将公共字段保存到一个表中的解决方案是在分割和连接表中间的某个地方…我给你的建议是不要加入表格,因为它们的意思不一样。。。