针对上述需求分析和设计,设计出这些数据表格,主要是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
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 8.0.16 : Database - bdata
*********************************************************************
*/
CREATE DATABASE `bdata`;
USE `bdata`;
/*Table structure for table `bd_author_base` */
DROP TABLE IF EXISTS `bd_author_base`;
CREATE TABLE `bd_author_base` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`mid` int(11) NOT NULL COMMENT '作者id',
`name` varchar(256) DEFAULT NULL COMMENT '作者名称',
`description` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '作者描述',
`picture` varchar(256) DEFAULT NULL COMMENT '作者头像',
`sex` varchar(20) DEFAULT NULL COMMENT '作者性别',
`birthday` varchar(256) DEFAULT NULL COMMENT '作者生日',
`operating_time` bigint(20) NOT NULL COMMENT '作者爬取时间',
`feature` text COMMENT '特征值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_author_base` */
/*Table structure for table `bd_author_date` */
DROP TABLE IF EXISTS `bd_author_date`;
CREATE TABLE `bd_author_date` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`mid` int(11) NOT NULL COMMENT '作者id',
`following` int(11) DEFAULT NULL COMMENT '作者关注数',
`follower` int(11) DEFAULT NULL COMMENT '作者粉丝数',
`archive_view` int(11) DEFAULT NULL COMMENT '作者视频播放量',
`likes` int(11) DEFAULT NULL COMMENT '作者获点赞数',
`article_view` int(11) DEFAULT NULL COMMENT '作者投稿视频数',
`feature` text COMMENT '特征值',
`operating_time` bigint(20) NOT NULL COMMENT '作者爬取时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_author_date` */
/*Table structure for table `bd_expansion` */
DROP TABLE IF EXISTS `bd_expansion`;
CREATE TABLE `bd_expansion` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bvid` varchar(20) DEFAULT NULL COMMENT '视频id',
`mid` int(11) DEFAULT NULL COMMENT '作者id',
`feature` text COMMENT '拓展字段',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_expansion` */
/*Table structure for table `bd_homepage_data` */
DROP TABLE IF EXISTS `bd_homepage_data`;
CREATE TABLE `bd_homepage_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pv` int(11) DEFAULT NULL COMMENT '每日访问数',
`uv` int(11) DEFAULT NULL COMMENT '总访问数',
`home_page_images` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '封面轮播图',
`video_num` int(11) DEFAULT NULL COMMENT '视频总数',
`up_num` int(11) DEFAULT NULL COMMENT 'up主总数',
`feature` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '特征值',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_homepage_data` */
/*Table structure for table `bd_hot_words` */
DROP TABLE IF EXISTS `bd_hot_words`;
CREATE TABLE `bd_hot_words` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hot_words` varchar(256) DEFAULT NULL COMMENT '热词名称',
`feature` text COMMENT '特征值',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_hot_words` */
/*Table structure for table `bd_leave_message` */
DROP TABLE IF EXISTS `bd_leave_message`;
CREATE TABLE `bd_leave_message` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(20) DEFAULT NULL COMMENT 'ip地址',
`content` text COMMENT '留言内容',
`feature` text COMMENT '特征值',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_leave_message` */
/*Table structure for table `bd_operation_log` */
DROP TABLE IF EXISTS `bd_operation_log`;
CREATE TABLE `bd_operation_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bvid` varchar(20) DEFAULT NULL COMMENT '视频id',
`mid` int(11) DEFAULT NULL COMMENT '作者id',
`content` text COMMENT '日志记录内容',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_operation_log` */
/*Table structure for table `bd_tag` */
DROP TABLE IF EXISTS `bd_tag`;
CREATE TABLE `bd_tag` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`tag` varchar(256) DEFAULT NULL COMMENT '标签名称',
`tagid` int(11) DEFAULT NULL COMMENT '标签id',
`feature` text COMMENT '特征值',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_tag` */
/*Table structure for table `bd_user` */
DROP TABLE IF EXISTS `bd_user`;
CREATE TABLE `bd_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`password` text,
`username` varchar(256) DEFAULT NULL COMMENT '用户名称',
`userid` int(11) DEFAULT NULL COMMENT '用户id',
`user_permission` text COMMENT '用户权限',
`feature` text COMMENT '特征值',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_user` */
/*Table structure for table `bd_video_base` */
DROP TABLE IF EXISTS `bd_video_base`;
CREATE TABLE `bd_video_base` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bvid` varchar(20) NOT NULL COMMENT 'bv号',
`avid` int(11) NOT NULL COMMENT 'av号',
`title` varchar(256) DEFAULT NULL COMMENT '视频标题',
`tag` varchar(256) DEFAULT NULL COMMENT '视频标签',
`picture` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '视频封面',
`description` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '视频描述',
`name` varchar(256) DEFAULT NULL COMMENT '视频作者名称',
`mid` int(11) NOT NULL COMMENT '视频作者id',
`pubdate` bigint(20) NOT NULL COMMENT '视频发布时间',
`ctime` bigint(20) NOT NULL COMMENT '视频创建时间',
`operating_time` bigint(20) NOT NULL COMMENT '视频搜索时间',
`feature` text COMMENT '特征值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*Data for the table `bd_video_base` */
/*Table structure for table `bd_video_data` */
DROP TABLE IF EXISTS `bd_video_data`;
CREATE TABLE `bd_video_data` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bvid` varchar(20) DEFAULT NULL COMMENT 'bv号',
`avid` int(11) DEFAULT NULL COMMENT 'av号',
`view` int(11) DEFAULT NULL COMMENT '视频播放量',
`like` int(11) DEFAULT NULL COMMENT '视频点赞数',
`coin` int(11) DEFAULT NULL COMMENT '视频投币数',
`favorite` int(11) DEFAULT NULL COMMENT '视频收藏数',
`share` int(11) DEFAULT NULL COMMENT '视频分享数',
`reply` int(11) DEFAULT NULL COMMENT '视频评论数',
`danmaku` int(11) DEFAULT NULL COMMENT '视频弹幕数',
`operating_time` bigint(20) NOT NULL COMMENT '视频搜索时间',
`feature` text COMMENT '特征值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `bd_video_data` */