我正在开发一个简单的保姆应用程序,有两种类型的用户:'家长'和'保姆'。我正在使用postgresql作为我的数据库,但我在解决数据库设计方面遇到了麻烦。
'家长'和'保姆'实体具有可以概括的属性,例如:用户名、密码、电子邮件等。这些属性可以放入名为'用户'的父实体中。它们也都有自己的属性,例如:保姆->年龄。
就面向对象编程而言,对我来说非常清楚,只需扩展用户类即可。但在数据库设计方面,情况是不同的。 在发布这个问题之前,我在互联网上漫游了一个星期,寻找关于这个“问题”的见解。我确实找到了很多信息,但似乎存在很多分歧。以下是我阅读过的一些帖子: 如何有效地在数据库中建模继承?:表-每类型(TPT)、表-每层次(TPH)和表-每混凝土(TPC)VS“将RDb强制转换为基于类的要求是错误的”。
'家长'和'保姆'实体具有可以概括的属性,例如:用户名、密码、电子邮件等。这些属性可以放入名为'用户'的父实体中。它们也都有自己的属性,例如:保姆->年龄。
就面向对象编程而言,对我来说非常清楚,只需扩展用户类即可。但在数据库设计方面,情况是不同的。 在发布这个问题之前,我在互联网上漫游了一个星期,寻找关于这个“问题”的见解。我确实找到了很多信息,但似乎存在很多分歧。以下是我阅读过的一些帖子: 如何有效地在数据库中建模继承?:表-每类型(TPT)、表-每层次(TPH)和表-每混凝土(TPC)VS“将RDb强制转换为基于类的要求是错误的”。
https://dba.stackexchange.com/questions/75792/multiple-user-types-db-design-advice:
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`
何时在PostgreSQL中使用继承表?:如原帖所指出,PostgreSQL中的继承并不像我和其他用户预期的那样有效。
我真的很困惑应该采取哪种方法。类表继承(https://stackoverflow.com/tags/class-table-inheritance/info)似乎是我面向对象思维中最正确的方法,但我非常希望得到更新的数据库思维意见。