在数据库中实现评论和喜欢
我是软件开发人员。我喜欢编写代码,但我讨厌数据库...目前,我正在创建一个网站,允许用户在该网站上将一个实体标记为喜欢(如FB中),对其进行标记和评论。 我在处理此功能的数据库表设计上陷入了困境。如果我们只能对一种类型的事物(例如照片)执行此操作,那么解决方案将是微不足道的。但是我需要为5种不同的功能启用此功能(现在,但我还假设随着整个服务的增长,这个数字可以增长)。 我在这里找到了一些类似的问题,但是没有一个令人满意的答案,所以我再次问这个问题。 问题是,如何正确,有效和弹性地设计数据库,以便它可以存储不同表的注释,喜欢不同表的注释以及它们的标签。一些设计模式作为答案将是最好的;) 详细描述:我有一个表 User与一些用户数据,以及3个表:Photo用照片,Articles用文章,Places用的地方。我想使任何登录的用户能够: 评论这三个表中的任何一个 将其中任何一个标记为喜欢 用标签标记其中的任何一个 我还想计算每个元素的点赞次数以及使用该特定标签的次数。 1 日的做法: a)对于标签,我将创建一个表 Tag [TagId, tagName, tagCounter],然后我会创造很多一对多的关系表为:Photo_has_tags,Place_has_tag,Article_has_tag。 b)评论数相同。 三)我将创建一个表 LikedPhotos [idUser, idPhoto],LikedArticles[idUser, idArticle],LikedPlace [idUser, idPlace]。数喜欢将计算查询(其中,我认为是坏的)。和... 我真的不喜欢这个设计的最后一部分,对我来说很难闻;) 2 次的方法: 我将创建一个表ElementType [idType, TypeName == some table name],该表将由管理员(me)填充,并带有可被喜欢,注释或标记的表的名称。然后我将创建表: a)LikedElement [idLike, idUser, idElementType, idLikedElement]注释和标签的内容相同,每个注释都有正确的列。现在,当我想制作一张喜欢的照片时,我将插入: typeId = SELECT id FROM ElementType WHERE TypeName == 'Photo' …