首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Postgresql继承的数据库设计

基于Postgresql继承的数据库设计
EN

Database Administration用户
提问于 2016-02-24 13:34:39
回答 2查看 974关注 0票数 5

我正在开发一个简单的保姆应用程序,它有两种类型的用户:“家长”和“保姆”。我使用postgresql作为我的数据库,但是我很难完成我的数据库设计。

“父”和“保姆”实体具有可概括的属性,例如:用户名、密码、电子邮件、.这些属性可以放在名为“User”的父实体中。他们都有自己的特点,例如:保姆->年龄。

在OOP方面,对我来说非常清楚,只需扩展用户类就可以了,但是在DB设计中,情况就不同了。在发布这个问题之前,我在网上闲逛了一个星期,想了解一下这个“问题”。我确实找到了很多信息,但是

在我看来,有很多分歧。以下是我读过的一些帖子:

https://stackoverflow.com/questions/190296/how-do-you-effectively-model-inheritance-in-a-database:每种表类型(TPT)、表每层结构(TPH)和表每混凝土(TPC)与“强制RDb进入基于类的需求”是完全不正确的。

多用户类型- DB设计建议

代码语言:javascript
复制
Table: `users`; contains all similar fields as well as a `user_type_id` column (a foreign key on `id` in `user_types`
Table: `user_types`; contains an `id` and a `type` (Student, Instructor, etc.)
Table: `students`; contains fields only related to students as well as a `user_id` column (a foreign key of `id` on `users`)
Table: `instructors`; contains fields only related to instructors as well as a `user_id` column (a foreign key of `id` on `users`)
etc. for all `user_types`

如何对两个表的继承建模

https://stackoverflow.com/questions/3074535/when-to-use-inherited-tables-in-postgresql:正如最初的海报所指出的,postgresql中的继承并不像我和其他一群用户所期望的那样工作。

我真的很困惑该采取哪种方法。类表继承(https://stackoverflow.com/tags/class-table-inheritance/info)在我的OOP思想中似乎是最正确的,但我非常欣赏和更新DB的观点。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2016-02-24 14:38:55

单表继承还是类表继承确实取决于您的具体情况。无论哪种方式,性能优势都可以。在一张桌子上放置大量的空档所带来的困难从琐碎的到压倒性的。这取决于您的数据是什么样子,以及您打算做什么。

这个问题主要是由于对象建模和关系建模之间的不匹配造成的。

如果您使用UserID作为父级和临时保姆的主键,并将其声明为外键,您将获得一些好处,而当您插入新用户时,会付出一些小的编程代价。这种技术被称为共享主键,它也是在SO上呈现的.

票数 3
EN

Database Administration用户

发布于 2016-02-24 18:52:52

由于@Walter Mitty,我现在正在使用共享的主键技术,它导致了以下设计(http://www.tutorialspoint.com/jpa/jpa_进阶_mappings.htm,JPA加入了继承):

不要介意奇怪的FK名称,它是自动生成的。

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

https://dba.stackexchange.com/questions/130313

复制
相关文章

相似问题

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