首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在数据库中支持数量可变的一对多关系

如何在数据库中支持数量可变的一对多关系
EN

Stack Overflow用户
提问于 2014-06-19 06:52:29
回答 1查看 86关注 0票数 0

我正在尝试设计一个人的数据库。要求是一个人可以有一个或多个不同数量的孩子、汽车、工作和房屋。

所以,目前,我设计的方法是:

代码语言:javascript
运行
复制
Person {
   CharField name
   DateField dob
   CharField city
   ...
   # Some standard base person data
}

因为我想支持可变数量的关联,所以我创建了具有一对多关系的单独的表。例如,我有

代码语言:javascript
运行
复制
Home {
    ForeignKey Person
    CharField home_address
    ...
}

Job {
    ForeignKey Person
    CharField company_nme
    CharField office_address
    ...
}

对于其他字段,依此类推。

这很好用,因为我可以让每个人拥有尽可能多或更少的条目。

缺点是,对于每个人,我都会查找5-6个表。我将需要更多的字段,因此查找将增加。

有没有一种范例可以有效地设计这种场景?

如果感兴趣,我会将Django与PostGreSql一起使用。

编辑:

服务器主要从数据库发出REST API响应。浏览器客户端需要一个人的全部数据(以减少网络上的多个请求)。因此,我将不得不一起执行多个连接。

实际上,对于Person表,我真的不需要任何关系内容。我的数据库中的其他表都是高度相关的。我现在考虑这一点的原因是因为我怀疑大量的连接将导致较慢的性能,并且稍后更改设计将是困难的。

我还遇到了PostGreSql的JSONField,我想知道是否应该使用它们来保存“挂起”数据,这样REST调用就不会导致大量的联接。由于这是设计层,我现在正在考虑这个问题,因为我不确定在未来改变这一点是否可行。

非常感谢您的投入。

EN

回答 1

Stack Overflow用户

发布于 2014-06-19 08:02:08

你的设计是正确的。表的数量反映了应用程序的复杂性(或非复杂性)。

“有效地设计这类场景的范例”是关系模型,您正在根据表进行设计,因为您是在该范例中工作。

你关于“缺点”、“查找”和“效率”的概念在没有理由的情况下假设了实现方面。DBMS接受您的声明和更新,并回答您的查询并隐藏方式。实现问题确实会出现,但与您的问题所建议的经验和知识水平相去甚远。

只要做一个简单的设计即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24296242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档