如何设计数据库中 USER 和 FAVORITE(或 LIKE)模型之间的关系

Posted

技术标签:

【中文标题】如何设计数据库中 USER 和 FAVORITE(或 LIKE)模型之间的关系【英文标题】:How to design the relations between USER and FAVORITE(or LIKE) models in DB 【发布时间】:2010-07-28 06:46:49 【问题描述】:

我有这些模型(表):USERPHOTOBOOKQUESTION 等。 现在我想在网站上添加favoritelike 功能,即用户可以“喜欢”一些照片或书籍或问题,当然一张照片可以被许多用户喜欢。 所以我想问你如何实现这种东西。

显示当前登录用户喜欢的书籍、照片、问题等的页面; 有多少人喜欢这本书。

这是我的想法,简单点。

一个

表:books_users

book_id user_id

表:photos_users

photo_id user_id

表:questions_users

question_id user_id

B

表:users_likes

object_id user_id type

“类型”列设置为保存“书”、“照片”信息。

A 还是 B?

真正困扰我的是在 OOP 中,我们试图在拥有相同内容的对象之间创建继承关系。但是在关系数据库中,将事物保存在一个表中(计划 B)或将它们分开(计划 A)是否很好。我在数据库设计方面没有太多经验,所以请你告诉我利弊?

【问题讨论】:

您希望每个用户能够喜欢多个项目,还是只喜欢一个? 那将是多个项目。 【参考方案1】:

这使用超类型/子类型关系。更多类似的例子和解释see here以及如何create tables

【讨论】:

非常感谢您的图表!非常令人印象深刻!它还提醒我,类别/标签和 Wordpress 中的帖子之间的关系几乎是相同的。我会检查链接。

以上是关于如何设计数据库中 USER 和 FAVORITE(或 LIKE)模型之间的关系的主要内容,如果未能解决你的问题,请参考以下文章

攻防世界: web favorite-number

如何在不刷新 vue.js 的情况下更新页面上的数据?

Spring:如何从联结表中删除条目?

攻防世界 favorite_number mfw[BJDCTF2020]ZJCTF,不过如此

Laravel关联模型

如何在 vue 组件上使用身份验证? (Vue.JS 2)