我很困惑,我已经在互联网上阅读了很多,但我还是想不通。在这个设计中,可扩展性对我来说是一项重要的任务。
我正在制作一个门户网站,人们可以在这里出售他们的食物,或者可以去这个门户网站购买食物。
我正在考虑以下 3 个选项:
- 制作 3 个表格。用户、客户、厨师。
- 制作 2 个表格。用户,客户。
- 制作 2 个表格。顾客。做饭
我主要出于安全考虑创建了一个 User 表,因为我不希望 secret 数据驻留在 Customer 或 Cook 表中。
问题是厨师也可以是顾客。
我正在考虑方法 1。如何建模。我是否使用递归方法。递归方法适用于 Employee 和 Manager 的想法(标准教科书示例),但在这里看起来很奇怪。
在方法 2 中,我使用 1 个表,并且不区分厨师和顾客。不区分这一点,在某种程度上似乎是个坏主意。
方法 3 是可行的,但我无法在脑海中思考它是如何工作的
一个用户表是这样的:
一个客户表是这样的:
最佳答案
我建议使用三表方法来分离每个角色的特定数据。
- 用户表包含两个角色共有的数据,例如用户名。
- 其他两个表仅包含特定于角色的数据。
用户和客户(或用户和厨师)之间的关系是一对零或一对一的关系。因此,对于每个用户,可能有一个客户或一个厨师记录,或者如果用户同时满足这两个角色,则两者都有。
此处制作的图表:https://app.quickdatabasediagrams.com/#/schema/t_JngpUcm0-w_dbnW3FzsA [免责声明:我为 QuickDatabaseDiagrams 工作]
关于mysql - 数据库设计模型客户、厨师、用户关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854692/