当前位置: 首页 > 知识库问答 >
问题:

一个在线视频教育网站的MySQL数据库设计

和魁
2023-03-14

我计划在一个网站上为用户提供多个科目的培训视频,用户可以查看视频,检查他们的查看历史,评论视频,参加相关考试,并获得徽章/证书,如果他们在考试中取得成功。当他们在视频中遇到问题时,他们也可以提交现场问题。此外,还将有一个论坛,用户可以互相帮助,添加朋友,发送信息等。考虑到这个想法,我现在正在设计数据库,但是我以前没有数据库设计的经验,所以请回顾下面的设计,并给我一些关于性能和最佳实践的建议。提前谢谢大家。

用户简介

用户名VARCHAR

ID INT

类型枚举

电子邮件VARCHAR

Date_created时间戳

日期\修改的时间戳

传递变量二进制

名称VARCHAR

证书变二进制

排名积分

ENUM性别

DOB日期

阿凡达

录像带

标题VARCHAR

ID INT

类别ENUM

说明TINYTEXT

Date_created时间戳

Tmp_名称字符

文件名VARCHAR

中等大小

字幕(u url VARCHAR)

你的计数是多少

Shared_countINT

标签ENUM

类别

类别VARCHAR

ID INT

说明TINYTEXT

最近看了

User_idINT

Video_idINT

查看日期时间戳

朋友名单

User_idINT

朋友号

用户问题

User_idINT

问题(i)

问题\标题VARCHAR

问题内容长文本

日期时间戳

视频注释标题VARCHAR

Video_idINT

评论内容长文本

User_idTINYTEXT

Date_created时间戳

用户信息

User_idINT

Message_idINT

信息内容长文本

Sender_idINT

Date_created时间戳

在线考试/评估

id VARCHAR

类型枚举

exam_urlVARCHAR

描述TINYTEXT

Date_created时间戳

用户参加的考试

考试id INT

User_idINT

Exam_resultSMALLINT

日期时间戳

我还有两个问题:1。我想允许用户评论,我将如何设计html" target="_blank">数据库结构?2.一个视频可以属于多个类别,是需要为视频类别创建一个新表,还是只需在视频表的类别字段中放置一系列类别?

共有2个答案

何楷
2023-03-14

整体结构似乎还不错,至少看起来很像我会做的事情。

1.-关于评论的评论:

我想最简单的设计就是给它添加一个parent_comment_id列。但这是一个棘手的问题,因为parent_comment_id或video_id上都会有很多NULL值。因此,另一种解决方法是允许VIDEO_COMMENT上的video_id为NULL值。在这种情况下,当此列中找到NULL时,您将知道您正在收到对用户评论的回复。然后,您必须在第二个表中找到父注释:

USER_COMMENT
user_comment_id (primary key)
video_comment_id (foreign key to VIDEO_COMMENT)
comment (text)
created_date (date)

这绝对不是最可爱的解决方案,但如果您遇到性能问题,那么值得一试。您仍然有相同的VIDEO_COMMENTS表(与以前一样干净,没有html" target="_blank">修改其结构)。用户对上一条评论的评论可能不太频繁,因此您可以将它们放在第二个结构中,而不是放在同一个VIDEO_comments表中。

2.-关于视频类别

在这里,我将创建两个附加表:一个用于视频类别(或标签),另一个用于将每个视频链接到其类别。

VIDEOS

Here I would drop the CATEGORY column


CATEGORIES

category_id (primary key)
title

VIDEO_CATEGORIES

video_category_id
category_id
video_id

在这种情况下,您可以有一个已经存储的类别列表,并且用户只需选择他/她认为对他/她的视频正确的那些。

我不建议您在同一列上放置多个值,因为这确实是一个糟糕的设计问题。您无法向用户提供类别列表(就像我之前提到的那样)。您还会有许多重复的值、错别字等。此外,将多个值存储在同一列中使得编辑变得不必要困难:想想您将如何实现删除类别标签并添加另一个类别标签的用户请求。当然,这并不难,但是如果你只需要删除单个引用,事情就会简单得多。

呼延俊良
2023-03-14

用户评论可以使用自链接表。桌子应该是这样的

Id ---- comments ---- parent_comment_Id
1    root comments         null
2    child comments         1
3    grandchild comments    2 

关于视频类别,最好有一个单独的表,特别是视频类别。然后,您可以在将来缩放类别信息,例如类别名称、描述等。考虑到用户体验,很常见的情况是,用户希望先查看类别列表,然后点击获取所有相关视频。

 类似资料:
  • 如何连接MySQL数据库中的某个表? 我曾经尝试过: 但这给了我一个错误:- 但是我已经创建了一个名为的表。是否有任何PHP代码连接到我的表在同一个数据库中,有多个数据库? 创建多个数据库是否足够明智 完整代码:

  • js怎么根据一个视频的在线url生成一个视频预览图? 相当于要获取该视频的第一秒或者第一帧的图片。

  • 问题内容: 我正在寻找一个具有免费访问权限的公共SQL数据库,在其中可以对一些有意义的数据(而不是item1,item2,item3)免费运行一些查询。你有没有看到?如果它与一些教程一起提供,那就更好了。 供应商关系不大,只要可以使用通用JDBC客户端进行连接即可。 问题答案: 尝试SQL练习 从学习阶段开始

  • 请大佬推荐一个学习数据库的实战教程 1.使用的现实世界做案例 2.用关系型数据库解决这个案例 3.用非关系型数据库解决这个案例 4.两种数据库的使用的对比。 我现在前端,后端都学完了,想要深入了解系统设计,希望大佬能推荐实战教程,书籍/帖子/视频,免费付费皆可,要的就是一个讲得好,讲的透彻,最好要中高级的,不需要入门的。

  • 问题内容: 在大多数查询中,我的表现都非常差。我已经阅读了很多关于stackoverflow的内容,但是仍然有一些问题,也许有人可以帮忙或者给我任何提示吗? 基本上,我正在预订网站上,除其他表格外,还有以下表格: 对象 或在MySQL中: 预约 或在MySQL中: 有几个问题: 1-我没有设置任何其他键(主键除外)-我​​应该在哪里设置,我应该设置哪个键? 2-我已经了解了MyISAM与InnoD

  • 问题内容: 我需要将数据从一个数据库迁移到另一个数据库,两者都在同一本地系统上。 表和列的名称不同,我不能从旧数据库迁移所有列,因此 对我不起作用。 但我只有一个 我的查询中有什么错误,我该如何解决? 提前致谢 问题答案: 您的查询应如下所示: 更新 由于这个答案的关注程度超出了我的预期,因此我应该扩展这个答案。首先,从答案本身看可能并不明显,但各列不必具有相同的名称。因此,以下操作也将起作用(假