【旅游景点项目日记 | 第一篇】项目服务架构、数据库表设计

news2024/9/30 0:45:31

在这里插入图片描述

Gitee仓库地址:travel-server:景点旅游项目服务端

文章目录

  • 1.项目服务架构
  • 2.数据库设计
    • 2.1用户服务—travel_ums
      • 2.1.1 ums_user—用户表
    • 2.2景点服务—travel_ams
      • 2.2.1 ams_attraction—景点表
      • 1.2.2 ams_resource_type—资源类型表
    • 2.3票务服务—trabel_bms
      • 2.3.1 bms_ticket—门票表
      • 2.3.2 bms_ticket_type—门票类型表
      • 2.3.3 bms_order—订单表
      • 2.3.4 bms_payment—支付表
      • 2.3.5 bms_comment—评分表
    • 2.4统计服务—travel_sms
      • 2.4.1 sms_statistics—统计表
      • 2.4.2 sms_click—点击表
      • 2.4.3 sms_like—点赞表
      • 2.4.4 sms_collection—收藏表
      • 2.4.5 sms_comment—评论表
      • 2.4.6 sms_sensitive_word—敏感词表
    • 2.5推荐服务 travel_rms
      • 2.5.1 rms_user_attractioin_tag—用户标签表
      • 2.5.2 rms_user_behavior_weight—用户行为权重表
      • 2.5.3 rms_user_attraction_behavior—用户景点行为表
    • 2.6活动服务
    • 2.7搜索服务

1.项目服务架构

经过分析,该个性化景点旅游推荐系统采用微服务架构,分为8大服务:用户服务、景点服务、票务服务、统计服务、推荐服务、活动服务、搜索服务以及第三方服务(OSS阿里云服务)

  1. 用户服务

    • 用户登录、注册

    • 用户每日签到

  2. 景点服务

    • 景点管理
    • 景点点赞、收藏、评论
  3. 票务服务

    • 订门票
    • 支付
    • 评分
  4. 统计服务

    • 排行榜(点击数/点赞数/收藏数/评论数)
    • 敏感词过滤
  5. 推荐服务

  6. 活动服务

    • 特色活动
  7. 搜索服务:

    • 景点的搜索和筛选功能,支持多维度的条件查询

其中,核心业务有

  • 景点的点赞收藏(RabbitMQ、Redis)
  • 购买门票(全局id、分布式锁)
  • 评论内容的敏感词过滤(基于DFA 有穷自动机算法)
  • 排行榜功能实现(Redis)

2.数据库设计

2.1用户服务—travel_ums

2.1.1 ums_user—用户表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
user_idint用户id,自增
usernamevarchar(20)用户名,唯一
phonevarchar(20)手机号码,唯一,非空
passwordvarchar(20)密码,非空
ageint年龄
sexint性别【0-男,1-女】
avatar_imagevarchar(200)头像图片
roleint角色【0-普通用户,1-管理员,2-超级管理员】
add_timedatetime添加时间
update_timedatetime修改时间

2.2景点服务—travel_ams

2.2.1 ams_attraction—景点表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
attraction_idint景点id,自增
attraction_namevarchar(20)景点名称
resource_type_idint景点资源类型id
quality_gradeint景点等级
province_cityvarchar(20)景点所在省份城市
locationvarchar(50)详细位置
open_hourvarchar(50)开放时间
phone电话
introductionvarchar(300)景点介绍
imagesvarchar(200)景点图片列表
stausint状态【1为显示,0为不显示】
add_timedatetime添加时间
update_timedatetime修改时间

1.2.2 ams_resource_type—资源类型表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
resource_type_idint资源类型id,自增
resource_typevarchar(20)资源类型【自然类、人文类、复合类、主题公园、社会类】
introductionvarchar(50)资源类型介绍
add_timedatetime添加时间
update_timedatetime修改时间

2.3票务服务—trabel_bms

2.3.1 bms_ticket—门票表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
ticket_idint门票id,自增
attraction_idint景点id
namevarchar(20)门票名称
type_idint门票类型【0为成人票、1为学生票、2为儿童票 】
introductionvarchar(50)门票介绍
pricedouble价格
statusint上架状态【1为上架,0为下架】
numint门票数量
add_timedatetime添加时间
update_timedatetime修改时间

2.3.2 bms_ticket_type—门票类型表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
ticket_type_idint门票类型id,自增
typevarchar(20)门票类型【成人票、学生票、儿童票 、老人票、团体票】
introductionvarchar(50)门票类型介绍
add_timedatetime添加时间
update_timedatetime修改时间

2.3.3 bms_order—订单表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
order_idint订单id,全局id
user_idint用户id
attraction_idint景点id
ticket_idint门票id
numint购买数量
pricedouble订单价格
statusint订单状态【0为待支付,1为已支付,2为已使用,3为已取消】
add_timedatetime添加时间
update_timedatetime修改时间

2.3.4 bms_payment—支付表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
payment_idint支付记录id,全局id
pricedouble支付金额
statusint支付状态【1为成功,0为失败】
add_timedatetime添加时间
update_timedatetime修改时间

2.3.5 bms_comment—评分表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
comment_idint评论id
order_idint订单记录id
user_idint用户id
attraction_idint景点id
scoreint评分(0-10)
contentvarchar(50)评分内容
imagesvarchar(200)评分图片
add_timedatetime添加时间
update_timedatetime修改时间

2.4统计服务—travel_sms

2.4.1 sms_statistics—统计表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
statistics_idint统计id,自增
attraction_idint景点id
clicksint点击数
likesint点赞数
collectionsint收藏数
commentsint评论数
add_timedatetime添加时间
update_timedatetime修改时间

2.4.2 sms_click—点击表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
click_idint点击id,自增
user_idvarchar(20)用户id
attraction_idint景点id
clicksint点击数
add_timedatetime添加时间
update_timedatetime修改时间

2.4.3 sms_like—点赞表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
click_idint点赞id,自增
user_idvarchar(20)用户id
attraction_idvarchar(200)景点id列表
add_timedatetime添加时间
update_timedatetime修改时间

2.4.4 sms_collection—收藏表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
collection_idint收藏id,自增
user_idvarchar(20)景点名称
attraction_idvarchar(200)景点id列表
add_timedatetime添加时间
update_timedatetime修改时间

2.4.5 sms_comment—评论表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
comment_idint评论id,自增
user_idint用户id
attraction_idint景点id
commentvarchar(50)评论内容
add_timedatetime添加时间
update_timedatetime修改时间

2.4.6 sms_sensitive_word—敏感词表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
sensitive_word_idint敏感词id
sensitive_wordvarchar(200)敏感词
add_timedatetime添加时间
update_timedatetime修改时间

2.5推荐服务 travel_rms

2.5.1 rms_user_attractioin_tag—用户标签表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户标签id,自增
user_idint用户id
tagvarchar(50)标签【用户喜欢的资源类型id、主导功能id、质量等级id】
add_timedatetime添加时间
update_timedatetime修改时间

2.5.2 rms_user_behavior_weight—用户行为权重表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户行为权重id,自增
click_weightdouble点击权重
like_weightdouble点赞权重
collection_weightdouble收藏权重
comment_weightdouble评论权重
now_configint当前配置【1为当前配置,0为不是当前配置】
add_timedatetime添加时间
update_timedatetime修改时间

2.5.3 rms_user_attraction_behavior—用户景点行为表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户景点行为id,自增
user_iddouble用户id
attraction_iddouble景点id
attraction_namedouble景点名称
weightdouble用户对该景点的权重
add_timedatetime添加时间
update_timedatetime修改时间

2.6活动服务

2.7搜索服务

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1550040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能的决策树介绍

决策树模型 决策树基于“树”结构进行决策 每个“内部结点”对应于某个属性上的“测试”每个分支节点对应于该测试的一种可能结果(即属性的某个取值)每个“叶结点”对应于一个“预测结果” 学习过程:通过对训练样本的分析来确定“划分属性”…

如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。

对于刚刚使用jupyter的新手来说,经常不知道如何在其中使用新建的虚拟环境内核,同时,对于默认安装的jupyter,使用jupyter notebook命令启动 jupyter 以后往往默认是C盘的启动路径,如下图所示,这篇教程将告诉…

vector类(一)

文章目录 vector介绍和使用1.vector的介绍2.vector的使用2.1 vector的定义2.2 vector iterator的使用2.3 vector空间增长问题2.4 vector增删查改2.5 vector迭代器失效问题 3.vector 在OJ中的使用 vector介绍和使用 1.vector的介绍 vector是表示 可变大小数组的 序列容器。 就…

Matlab|【免费】面向多微网网络结构规划的大规模二进制矩阵优化算法

目录 1 主要内容 节点故障网络拓扑变化示意 约束条件 目标函数 3 结果一览 4 下载链接 1 主要内容 当前电力系统中微电网逐步成为发展的主力军,微网中包括分布式电源和负荷,单一的微电网是和外部电源进行连接,即保证用电的效益性&#…

手机短信验证码自动转发到服务器

今天写一个自动化处理程序,需要验证码登录,怎么样把手机收到的短信自动转发到服务器接口呢? 利用ios手机快捷指令的功能 打开快捷指令点击中间自动化点击右上角号选择信息信息包含选取,输入验证码选择立即执行点击下一步按下图配…

SpringBoot集成WebSocket实现简单的多人聊天室

上代码—gitee下载地址: https://gitee.com/bestwater/Spring-websocket.git下载代码,连上数据库执行SQL,就可以运行,最终效果

17、GateWay和Sentinel继承实现服务限流

注:本篇文章主要参考周阳老师讲解的cloud进行整理的! 1、需求说明 cloudalibaba-sentinel-gateway9528 保护 cloudalibaba-provider-payment9001 2、启动nacos服务器8848 startup.cmd -m standalone 3、启动sentinel服务器8080 java -jar sentinel-dash…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT,正准备保存的时候电脑没电自动关机了,打开电脑后才发现我的PPT没保存。这可怎么办?还有机会恢复吗?” 在日常办公和学习中,PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示:有页码的操作题 背景需求: 实操课终于全部结束了,把考试内容(docx)都写好了 【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行…

汇编语言学习记录 01

目录 VScode配置调试环境 Debug的主要命令 简单写个Hello World VScode配置调试环境 没有IDE真的蛮难受的 安装插件TASM/MASM 右键扩展设置,选择Assembler:MASM 右键调试即可开始 Debug的主要命令 R-查看和修改寄存器 D-查看内存单元 E-修改内…

Remote Desktop Manager for Mac:远程桌面管理软件

Remote Desktop Manager for Mac,是远程桌面管理的理想之选。它集成了多种远程连接技术,无论是SSH、RDP还是VNC,都能轻松应对,让您随时随地安全访问远程服务器和工作站。 软件下载:Remote Desktop Manager for Mac下载…

Linux虚拟机环境搭建spark

Linux环境搭建Spark分为两个版本,分别是Scala版本和Python版本。 一、 安装Pyspark 本环境以 Python 环境为例。 1、下载spark 下载网址:https://archive.apache.org/dist/spark 下载安装包:根据自己环境选择合适版本,本环境…

【JSON2WEB】11 基于 Amis 角色功能权限设置页面

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

【氮化镓】p-GaN栅极退化的温度和结构相关性

论文总结: 本文献深入研究了带有p-GaN栅极的正常关断型(normally-off)高电子迁移率晶体管(GaN-HEMTs)在恒定电压应力下的时序退化行为。通过直流特性分析和温度依赖性分析,研究了故障时间(TTF)与应力温度和器件几何结构的依赖性。结果显示,p…

4毛5起的国产32位单片机 PY32F002A系列,多种封装可以选择

PY32F002A系列单片机可以说是现在市面上非常火的一款32位单片机了,超低的价格,不错的性能,让很多开发者都选择了它。主频最大24M,有着20Kbytes flash 和 3Kbytes SRAM,很多小产品也是足够用了。PY32F002A的SOP8封装的价…

SQLite中的动态内存分配(五)

返回:SQLite—系列文章目录 上一篇:SQLite中的原子提交(四) 下一篇:SQLite使用的临时文件(二) ​概述 SQLite使用动态内存分配来获得 用于存储各种对象的内存 (例如&#xff1a…

Nacos的搭建和使用——SpringCloud Alibaba

1. 概要说明 在使用Nacos之前,请在你的虚拟机中下载好Nacos,再进行连接本机使用 port:8848 本机访问地址:http://{虚拟机ip}:8848/nacos/ 访问账号密码:nacos/nacos 2. Nacos的作用 2.1 服务发现中心 微服务将自身注册至Nacos&am…

uniapp怎么使用接口返回的iconfont图标

uniapp怎么使用接口返回的iconfont图标 首先在你的项目中添加该图标&#xff0c;名称要对应 实际应用 item.ICONFONT_NAME“tools”; item.ICONFONT_COLOR“FA5151”; <view class"iconfont" :class"icon-item.ICONFONT_NAME" :color"item.ICON…

浅谈电商网络爬虫技术

摘 要 目前网络上存在着海量的数据资料&#xff0c;将这些数据爬取保存下来&#xff0c;并进行进一步操作&#xff0c;即可挖掘出数据的潜在价值。如今的互联网存在的缺陷是用户很难获得有用的数据资料&#xff0c;虽然传统的搜索引擎可以为用户返回大量信息&#xff0c;但是…

MySQL数据库(MySQL主从搭建|Django中实现MySQL读写分离|Django中使用MySQL连接池)

文章目录 一、MySQL主从搭建1.MySQL主从的目的&#xff1f;2.MySQL主从原理3.搭建步骤 二、Django中实现MySQL读写分离1.使用sqlite实现读写分离2.MySQL实现读写分离 三、Django中使用连接池1.使用池的目的2.Django中使用MySQL连接池 一、MySQL主从搭建 1.MySQL主从的目的&…