评论的实施,这有什么最佳做法吗?

Ati*_*din 1 mysql optimization comments

我需要在自定义编码的社交网站上实现评论功能.评论需要在类似于facebook的视频,图片,专辑等各种页面上实现.

实施此操作的最佳做​​法是什么?

使用这样的字段创建一个全局注释表,并根据所需页面上的注释类型获取注释.

commentid int(10)
userid int(10)
comment_type ENUM('video','picture')
comment varchat(200)
parent int(10)
Run Code Online (Sandbox Code Playgroud)

或为每个评论制作单独的表格?

cle*_*tus 5

我不这样做.我会在另一边使用子类型.

  • 创建一个名为(例如)内容的父表;
  • 视频,图片,专辑等是内容的子实体;
  • Comment具有Content ID的外键.

实现子类型有三种基本方案:

  1. 为每个子类型创建一个单独的表;
  2. 使用Conent ID的外键创建一个名为Content的表,其中包含从属表Video,Album等.内容表还有一个内容类型字段,用于指示哪个表与该记录相关; 要么
  3. 将所有内容放入一个名为Content的表中,该表包含一堆可选(可为空)列以覆盖子类型.当存储特定于子类型的信息所需的列几乎没有差异时,这是最合适的.

如果您将"注释"与"视频"或"相册"表关联起来,则可以使用所谓的独占弧.这不是数据建模的推荐做法.

编辑:例如:

  • 用户(id,用户名,给定姓名,姓氏,电子邮件地址)
  • 内容(id,content_type,submitter_id,submitted_date);
  • 图像(id,url,高度,宽度);
  • 视频(id,url,格式,高度,宽度,长度);
  • 专辑(id,name);
  • 相册照片(id,album_id,photo_id);
  • 评论(id,author_id,comment_date,comment,content_id);

一些说明:

  • submitter_id和author_id是User.id的外键;
  • Image.id,Video.id和Album.id都是Content.id的外键;
  • Content.content_type是"Image","Video"或"Album"之一;
  • 相册包含存储在图像中的一张或多张照片;
  • 联接表专辑照片将专辑链接到图像(多对多关系);

希望能搞清楚.