针对上述需求分析和设计,设计出这些数据表格,主要是bd_video_base(视频基础数据)、bd_video_data(视频数据)、bd_author_date(创作者基础数据)、bd_author_base(创作者数据)、bd_expansion(拓展)、bd_operation_log(日志)、bd_homepage_data(首页数据)、bd_tag(标签数据)、bd_hot_words(热词数据)、bd_user(用户)、bd_leave_message(留言)下面会将针对这些表格内容进行逐一的介绍。

视频(bd_video_base)

视频基础数据表主要是存储B站视频的基础数据,这些数据不会经常性的有变更其中涉及的字段有bv号是视频新的唯一id字段,为字符串、av号视频旧的唯一id字段,为数字、视频标题、视频标签、视频封面、视频描述、视频作者名称、视频作者id、视频发布时间、视频创建时间、视频时长;对应这些数据构建以下表格这些字段、其中特征值是用于拓展使用,以Json字符串的格式进行保存,用于日后新增特殊字段使用,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
bv号 bvid String 唯一、不为空
av号 avid String 唯一、不为空
视频标题 title String
视频标签 tag String
视频封面 picture String
视频描述 description String
视频作者名称 name String
视频作者id mid Long 不为空
视频发布时间 pubdate Date 不为空
视频创建时间 ctime Date 不为空
视频搜索时间 operating_time Date 不为空
特征值 feature Json

视频数据(bd_video_data)

视频数据主要是存储B站视频经常进行变更的数据,也是B站视频互动的主要数据,其中涉及的一些字段为:视频播放量、视频点赞数、视频投币数、视频收藏数、视频分享数、视频弹幕数、视频评论数;对应这些数据构建以下表格这些字段,当中bv号和av号与bd_video_base(视频基础数据)是一一对应的关系,但该表会存储大量的视频数据,所以这两个字段不唯一。当中搜索时间用来记录操作时间点,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
bv号 bvid String 不为空
av号 avid String 不为空
视频播放量 view Long
视频点赞数 like Long
视频投币数 coin Long
视频收藏数 favorite Long
视频分享数 share Long
视频评论数 reply Long
视频弹幕数 danmaku Long
视频搜索时间 operating_time Date 不为空
特征值 feature Json

作者(bd_author_base)

视频基础数据表主要是存储B站创作者的基础数据,这些数据不会经常性的有变更其中涉及的字段有mid号是作者唯一id字段,为数字、作者名称、作者简介、作者头像url、作者性别、作者生日;对应这些数据构建以下表格这些字段、其中特征值是用于拓展使用,以Json字符串的格式进行保存,用于日后新增特殊字段使用,爬取时间用于记录操作时间点,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
作者id mid Long
作者名称 name String
作者描述 description String
作者头像 picture String
作者性别 sex String
作者生日 birthday Date
作者爬取时间 operating_time Date 不为空
特征值 feature Json

作者数据(bd_author_date)

作者数据主要是存储B站作者经常进行变更的数据,也是B站作者排名的主要数据,其中涉及的一些字段为:作者关注数、作者粉丝数、作者视频播放量总数、作者获取的总点赞数、作者投稿视频数据;对应这些数据构建以下表格这些字段,当中mid号与bd_author_base(作者基础数据)是一一对应的关系,但该表会存储大量的视频数据,所以这个字段不唯一。当中搜索时间用来记录操作时间点,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
作者id mid Long
作者关注数 following Long
作者粉丝数 follower Long
作者视频播放量 archive_view Long
作者获点赞数 likes Long
作者投稿视频数 article_view Long
特征值 feature Json
作者爬取时间 operating_time Date 不为空

拓展表(bd_expansion)

拓展表主要是用于拓展使用,用于保存视频或作者数据的拓展数据使用,其中涉及的字段有mid号是作者唯一id字段,为数字、bv号是视频的唯一id字段,为字符串作者名称、拓展字段保存形式为JSON字符串、修改时间、创建时间;对应这些数据构建以下表格这些字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
视频id bvid String
作者id mid Long
拓展字段 feature Json
修改时间 operating_time Date 不为空
创建时间 create_time Date 不为空

日志表(bd_operation_log)

日志表主要是用于存储日志使用,用于保存系统操作日志使用,其中涉及的字段有mid号是作者唯一id字段,为数字、bv号是视频的唯一id字段,为字符串、日志记录内容,为JSON字符串形式、拓展字段保存形式为JSON字符串、修改时间、创建时间;对应这些数据构建以下表格这些字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
视频id bvid String
作者id mid Long
日志记录内容 content Json
修改时间 operating_time Date 不为空
创建时间 create_time Date 不为空

首页数据(bd_homepage_data)

首页数据表主要是用于保存首页系统数据信息,用于展示系统数据使用,其中涉及的字段有每日访问数、总访问数用户,封面轮播图,为JSON字符串形式、视频总数、up主总数、修改时间、创建时间;对应这些数据构建以下表格这些字段,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
每日访问数 pv Long
总访问数 uv Long
封面轮播图 home_page_images Json
视频总数 video_num Long
up主总数 up_num Long
特征值 feature Json
创建时间 create_time Date 不为空
修改时间 operating_time Date 不为空

标签(bd_tag)

标签数据表主要是用于保存视频标签数据信息,与视频的关系是n:n。其中涉及的字段有标签名称、标签id,、修改时间、创建时间;对应这些数据构建以下表格这些字段,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
标签名称 tag String
标签id tagid Long
特征值 feature Json
创建时间 create_time Date 不为空
修改时间 operating_time Date 不为空

热词(bd_hot_words)

热词数据表主要是用于保存B站热词数据信息、热词分析和推荐。其中涉及的字段有热词名称、标签热词、热词排行、修改时间、创建时间;对应这些数据构建以下表格这些字段,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
热词名称 hot_words String
热词id hotId Int
热词类型 wordType Int
热词排行 pos Int
特征值 feature Json
创建时间 create_time Date 不为空
修改时间 operating_time Date 不为空

用户(bd_user)

用户表主要是用于系统用户的数据信息,以及做相关的登陆权限控制等内容。其中涉及的字段有用户id、用户权限,以JSON的形式存储、用户密码、修改时间、创建时间;对应这些数据构建以下表格这些字段,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
用户名称 username String
用户id userid String
用户权限 user_permission Json
特征值 feature Json
创建时间 create_time Date 不为空
修改时间 operating_time Date 不为空

留言(bd_leave_message)

留言表主要是用于系统保存用户给与的留言数据信息,相当于简易的反馈渠道。其中涉及的字段有留言ip、留言内容,用户id、修改时间、创建时间;对应这些数据构建以下表格这些字段,特征值用于拓展存储特殊字段,id作为主键,自增长。

列名 命名 数据类型 备注
id id Int 唯一、自增
留言ip ip String
留言内容 content Json
特征值 feature Json
创建时间 create_time Date 不为空
修改时间 operating_time Date 不为空

数据库SQL

  1. /*
  2. SQLyog Ultimate v12.09 (64 bit)
  3. MySQL - 8.0.16 : Database - bdata
  4. *********************************************************************
  5. */
  6. CREATE DATABASE `bdata`;
  7. USE `bdata`;
  8. /*Table structure for table `bd_author_base` */
  9. DROP TABLE IF EXISTS `bd_author_base`;
  10. CREATE TABLE `bd_author_base` (
  11. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  12. `mid` int(11) NOT NULL COMMENT '作者id',
  13. `name` varchar(256) DEFAULT NULL COMMENT '作者名称',
  14. `description` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '作者描述',
  15. `picture` varchar(256) DEFAULT NULL COMMENT '作者头像',
  16. `sex` varchar(20) DEFAULT NULL COMMENT '作者性别',
  17. `birthday` varchar(256) DEFAULT NULL COMMENT '作者生日',
  18. `operating_time` bigint(20) NOT NULL COMMENT '作者爬取时间',
  19. `feature` text COMMENT '特征值',
  20. PRIMARY KEY (`id`)
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  22. /*Data for the table `bd_author_base` */
  23. /*Table structure for table `bd_author_date` */
  24. DROP TABLE IF EXISTS `bd_author_date`;
  25. CREATE TABLE `bd_author_date` (
  26. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  27. `mid` int(11) NOT NULL COMMENT '作者id',
  28. `following` int(11) DEFAULT NULL COMMENT '作者关注数',
  29. `follower` int(11) DEFAULT NULL COMMENT '作者粉丝数',
  30. `archive_view` int(11) DEFAULT NULL COMMENT '作者视频播放量',
  31. `likes` int(11) DEFAULT NULL COMMENT '作者获点赞数',
  32. `article_view` int(11) DEFAULT NULL COMMENT '作者投稿视频数',
  33. `feature` text COMMENT '特征值',
  34. `operating_time` bigint(20) NOT NULL COMMENT '作者爬取时间',
  35. PRIMARY KEY (`id`)
  36. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  37. /*Data for the table `bd_author_date` */
  38. /*Table structure for table `bd_expansion` */
  39. DROP TABLE IF EXISTS `bd_expansion`;
  40. CREATE TABLE `bd_expansion` (
  41. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  42. `bvid` varchar(20) DEFAULT NULL COMMENT '视频id',
  43. `mid` int(11) DEFAULT NULL COMMENT '作者id',
  44. `feature` text COMMENT '拓展字段',
  45. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  46. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  47. PRIMARY KEY (`id`)
  48. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  49. /*Data for the table `bd_expansion` */
  50. /*Table structure for table `bd_homepage_data` */
  51. DROP TABLE IF EXISTS `bd_homepage_data`;
  52. CREATE TABLE `bd_homepage_data` (
  53. `id` int(11) NOT NULL AUTO_INCREMENT,
  54. `pv` int(11) DEFAULT NULL COMMENT '每日访问数',
  55. `uv` int(11) DEFAULT NULL COMMENT '总访问数',
  56. `home_page_images` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '封面轮播图',
  57. `video_num` int(11) DEFAULT NULL COMMENT '视频总数',
  58. `up_num` int(11) DEFAULT NULL COMMENT 'up主总数',
  59. `feature` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '特征值',
  60. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  61. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  62. PRIMARY KEY (`id`)
  63. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  64. /*Data for the table `bd_homepage_data` */
  65. /*Table structure for table `bd_hot_words` */
  66. DROP TABLE IF EXISTS `bd_hot_words`;
  67. CREATE TABLE `bd_hot_words` (
  68. `id` int(11) NOT NULL AUTO_INCREMENT,
  69. `hot_words` varchar(256) DEFAULT NULL COMMENT '热词名称',
  70. `feature` text COMMENT '特征值',
  71. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  72. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  73. PRIMARY KEY (`id`)
  74. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  75. /*Data for the table `bd_hot_words` */
  76. /*Table structure for table `bd_leave_message` */
  77. DROP TABLE IF EXISTS `bd_leave_message`;
  78. CREATE TABLE `bd_leave_message` (
  79. `id` int(11) NOT NULL AUTO_INCREMENT,
  80. `ip` varchar(20) DEFAULT NULL COMMENT 'ip地址',
  81. `content` text COMMENT '留言内容',
  82. `feature` text COMMENT '特征值',
  83. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  84. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  85. PRIMARY KEY (`id`)
  86. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  87. /*Data for the table `bd_leave_message` */
  88. /*Table structure for table `bd_operation_log` */
  89. DROP TABLE IF EXISTS `bd_operation_log`;
  90. CREATE TABLE `bd_operation_log` (
  91. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  92. `bvid` varchar(20) DEFAULT NULL COMMENT '视频id',
  93. `mid` int(11) DEFAULT NULL COMMENT '作者id',
  94. `content` text COMMENT '日志记录内容',
  95. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  96. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  97. PRIMARY KEY (`id`)
  98. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  99. /*Data for the table `bd_operation_log` */
  100. /*Table structure for table `bd_tag` */
  101. DROP TABLE IF EXISTS `bd_tag`;
  102. CREATE TABLE `bd_tag` (
  103. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  104. `tag` varchar(256) DEFAULT NULL COMMENT '标签名称',
  105. `tagid` int(11) DEFAULT NULL COMMENT '标签id',
  106. `feature` text COMMENT '特征值',
  107. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  108. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  109. PRIMARY KEY (`id`)
  110. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  111. /*Data for the table `bd_tag` */
  112. /*Table structure for table `bd_user` */
  113. DROP TABLE IF EXISTS `bd_user`;
  114. CREATE TABLE `bd_user` (
  115. `id` int(11) NOT NULL AUTO_INCREMENT,
  116. `password` text,
  117. `username` varchar(256) DEFAULT NULL COMMENT '用户名称',
  118. `userid` int(11) DEFAULT NULL COMMENT '用户id',
  119. `user_permission` text COMMENT '用户权限',
  120. `feature` text COMMENT '特征值',
  121. `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  122. `operating_time` bigint(20) NOT NULL COMMENT '修改时间',
  123. PRIMARY KEY (`id`)
  124. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  125. /*Data for the table `bd_user` */
  126. /*Table structure for table `bd_video_base` */
  127. DROP TABLE IF EXISTS `bd_video_base`;
  128. CREATE TABLE `bd_video_base` (
  129. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  130. `bvid` varchar(20) NOT NULL COMMENT 'bv号',
  131. `avid` int(11) NOT NULL COMMENT 'av号',
  132. `title` varchar(256) DEFAULT NULL COMMENT '视频标题',
  133. `tag` varchar(256) DEFAULT NULL COMMENT '视频标签',
  134. `picture` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '视频封面',
  135. `description` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '视频描述',
  136. `name` varchar(256) DEFAULT NULL COMMENT '视频作者名称',
  137. `mid` int(11) NOT NULL COMMENT '视频作者id',
  138. `pubdate` bigint(20) NOT NULL COMMENT '视频发布时间',
  139. `ctime` bigint(20) NOT NULL COMMENT '视频创建时间',
  140. `operating_time` bigint(20) NOT NULL COMMENT '视频搜索时间',
  141. `feature` text COMMENT '特征值',
  142. PRIMARY KEY (`id`)
  143. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  144. /*Data for the table `bd_video_base` */
  145. /*Table structure for table `bd_video_data` */
  146. DROP TABLE IF EXISTS `bd_video_data`;
  147. CREATE TABLE `bd_video_data` (
  148. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  149. `bvid` varchar(20) DEFAULT NULL COMMENT 'bv号',
  150. `avid` int(11) DEFAULT NULL COMMENT 'av号',
  151. `view` int(11) DEFAULT NULL COMMENT '视频播放量',
  152. `like` int(11) DEFAULT NULL COMMENT '视频点赞数',
  153. `coin` int(11) DEFAULT NULL COMMENT '视频投币数',
  154. `favorite` int(11) DEFAULT NULL COMMENT '视频收藏数',
  155. `share` int(11) DEFAULT NULL COMMENT '视频分享数',
  156. `reply` int(11) DEFAULT NULL COMMENT '视频评论数',
  157. `danmaku` int(11) DEFAULT NULL COMMENT '视频弹幕数',
  158. `operating_time` bigint(20) NOT NULL COMMENT '视频搜索时间',
  159. `feature` text COMMENT '特征值',
  160. PRIMARY KEY (`id`)
  161. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  162. /*Data for the table `bd_video_data` */

数据库模型

Diagram 1.png
ER图.png