湖南省政府门户网_云开发平台的功能_php短网址生成源码_5g站长工具综合查询
系统设计 - 系统架构设计
音乐网站的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。它强制性的把应用程序的输入、输出和处理全部分开,将其分为三个核心部分,这三个部分分别有不同的功能。
图4-1系统架构图
视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。
模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。由于 Model 的主要内容是数据、方法和行为,其也是 MVVM 中逻辑最为复杂,代码量最多的部分,其中包含了许多应用中需要用到的业务逻辑,因此模型层的开发也变得尤为重要,后期一般不会对模型层进行大规模改动,也是 MVVM最稳定的部分。控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。
-
- 系统总体设计
音乐网站总体分为前台用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。
图4-2 系统功能结构图
-
- 系统功能设计
登录模块:登录模块是进入系统的入口,所有用户必须登录后才能访问系统。登录需要输入用户名和密码,如果多次尝试登录需要输入验证码。登录时需要选择用户的角色,是一般用户还是管理员登录等。登录成功后,会通过数据库获取用户的权限,并跳转至用户的主页面。
歌曲信息模块:可分为浏览、检索、歌曲信息维护三个模块,管理员对歌曲信息有维护的权限,发布新的歌曲等。
音乐资讯管理模块:对发布音乐资讯操作等。
-
- 数据库设计
- 数据需求分析
从前面可以分析到数据库中最重要的是音乐资讯,歌曲信息,音乐论坛,歌曲排行榜,同时存在资讯浏览和音乐搜索。分析可以得到如下数据描述:
平台用户:用于记录用户的各种信息,包括姓名、手机、邮箱、照片等数据项。
管理员:记录管理员的登录信息。包括用户名,密码,权限等数据项。
音乐资讯:存储音乐资讯等数据项。
歌曲信息:系统所有的歌曲信息管理。
音乐论坛:管理用户的论坛信息等数据项。
-
-
- 数据库概念设计
根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。
系统ER图如下图所示。
图4-3 系统ER图
-
-
- 数据库表设计
音乐网站所拥有的数据表有以下:用户信息表,资讯信息表,音乐论坛表,歌曲信息表,音乐排行榜表等。
由于数据表较多,只展示系统主要数据表,如下表所示。
-
- 表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | | 授权ID: |
2 | user_group | varchar | 64 | 0 | Y | N | | 用户组: |
3 | mod_name | varchar | 64 | 0 | Y | N | | 模块名: |
4 | table_name | varchar | 64 | 0 | Y | N | | 表名: |
5 | page_title | varchar | 255 | 0 | Y | N | | 页面标题: |
6 | path | varchar | 255 | 0 | Y | N | | 路由路径: |
7 | position | varchar | 32 | 0 | Y | N | | 位置: |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | | 添加字段: |
14 | field_set | text | 65535 | 0 | Y | N | | 修改字段: |
15 | field_get | text | 65535 | 0 | Y | N | | 查询字段: |
16 | table_nav_name | varchar | 500 | 0 | Y | N | | 跨表导航名称: |
17 | table_nav | varchar | 500 | 0 | Y | N | | 跨表导航: |
18 | option | text | 65535 | 0 | Y | N | | 配置: |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
-
- 表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | | 收藏ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
4 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | | 标题: |
7 | img | varchar | 255 | 0 | Y | N | | 封面: |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
-
- 表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | | 评论ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | | 内容: |
5 | nickname | varchar | 255 | 0 | Y | N | | 昵称: |
6 | avatar | varchar | 255 | 0 | Y | N | | 头像地址:[0,255] |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
10 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
-
- 表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | | 论坛id |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | | 昵称:[0,16] |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | | 标题 |
8 | keywords | varchar | 125 | 0 | Y | N | | 关键词 |
9 | description | varchar | 255 | 0 | Y | N | | 描述 |
10 | url | varchar | 255 | 0 | Y | N | | 来源地址 |
11 | tag | varchar | 255 | 0 | Y | N | | 标签 |
12 | img | text | 65535 | 0 | Y | N | | 封面图 |
13 | content | longtext | 2147483647 | 0 | Y | N | | 正文 |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | | 发帖人头像: |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
-
- 表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | | 分类ID:[0,10000] |
2 | name | varchar | 16 | 0 | N | N | | 分类名称:[2,16] |
3 | description | varchar | 255 | 0 | Y | N | | 描述:[0,255]描述该分类的作用 |
4 | url | varchar | 255 | 0 | Y | N | | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | | 分类图标: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
-
- 表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | | 点赞ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
-
- 表music_classification (音乐分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | music_classification_id | int | 10 | 0 | N | Y | | 音乐分类ID |
2 | music_type | varchar | 64 | 0 | Y | N | | 音乐类型 |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
-
- 表music_sharing (音乐分享)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | music_sharing_id | int | 10 | 0 | N | Y | | 音乐分享ID |
2 | album_name | varchar | 64 | 0 | Y | N | | 专辑名称 |
3 | song_name | varchar | 64 | 0 | Y | N | | 歌曲名称 |
4 | music_type | varchar | 64 | 0 | Y | N | | 音乐类型 |
5 | cover_photo | varchar | 255 | 0 | Y | N | | 封面图片 |
6 | creation_date | date | 10 | 0 | Y | N | | 创作日期 |
7 | name_of_singer | varchar | 64 | 0 | Y | N | | 歌手姓名 |
8 | song_play | varchar | 255 | 0 | Y | N | | 歌曲播放 |
9 | publisher | int | 10 | 0 | Y | N | 0 | 发布人员 |
10 | release_date | date | 10 | 0 | Y | N | | 发布日期 |
11 | song_details | text | 65535 | 0 | Y | N | | 歌曲详情 |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
14 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
15 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
-
- 表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | | 公告id: |
2 | title | varchar | 125 | 0 | N | N | | 标题: |
3 | content | longtext | 2147483647 | 0 | Y | N | | 正文: |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
-
- 表ordinary_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | | 普通用户ID |
2 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
3 | user_gender | varchar | 64 | 0 | Y | N | | 用户性别 |
4 | user_age | varchar | 64 | 0 | Y | N | | 用户年龄 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
-
- 表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | | 点赞ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
-
- 表registered_users (注册用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | | 注册用户ID |
2 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
3 | user_gender | varchar | 64 | 0 | Y | N | | 用户性别 |
4 | user_age | varchar | 64 | 0 | Y | N | | 用户年龄 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
-
- 表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | | 用户ID:[0,8388607]用户获取其他与用户相关的数据 |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | | 所在用户组:[0,32767]决定用户身份和权限 |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | | 用户名:[0,16]用户登录时所用的账户名称 |
8 | nickname | varchar | 16 | 0 | Y | N | | 昵称:[0,16] |
9 | password | varchar | 64 | 0 | N | N | | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 |
10 | email | varchar | 64 | 0 | Y | N | | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | | 头像地址:[0,255] |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
">