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

news/2024/7/19 5:29:40 标签: 架构, 数据库, 项目

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.niftyadmin.cn/n/5449061.html

相关文章

计算机组成原理 CPU组成与机器指令执行实验

一、实验目的 (1)将微程序控制器同执行部件( 整个数据通路)联机,组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概…

Java研学-SpringBoot(二)

二 Spring Boot 介绍 1 简介 Spring Boot是由Pivotal团队提供的全新框架,主要目标是简化Spring应用程序的配置和部署过程,减少开发者在项目搭建和配置上的工作量,让开发者能够更专注于业务逻辑的实现。它使用特定的方式来进行配置&#xff0…

pytorch 实现线性回归 softmax(Pytorch 04)

一 softmax 定义 softmax 是多分类问题,对决策结果不是多少,而是分类,哪一个。 为了估计所有可能类别的条件概率,我们需要一个有 多个输出的模型,每个类别对应一个输出。为了解决线 性模型的分类问题,我们…

HAL STM32G4 +ADC手动触发采集+各种滤波算法实现

HAL STM32G4 ADC手动触发采集各种滤波算法实现 📍相关篇《HAL STM32G4 TIM1 3路PWM互补输出VOFA波形演示》 ✨本篇内容也是继欧拉电子相关无刷电机驱动控制学习的相关基础内容。仅作为个人笔记记录使用。 📍感谢网友提供的相关内容《基于STM32的ADC采样及…

SAP系统如何使用中间数据库与其它系统进行数据交互

SAP系统与外部系统之间进行数据交换和通信的接口方式有很多种,比如常用的接口技术有RFC、BAPI、ALE、Webservice、RESTful、中间数据库等等,不同的接口形式具有不同的特点和适用场景,可以根据具体需求选择合适的接口形式来实现系统间的数据交互。 前面文章中已介绍Webservi…

android emulator windows bat启动

android emulator windows bat启动 先上结果 // 模拟器路径 -netspeed full -avd 模拟器名称 C:\Users\name\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel_3a_API_34_extension_level_7_x86_64一般来说 windows 如果不做…

每日一题 --- 反转链表[力扣][Go]

反转链表 题目:206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出&a…

数据结构:选择排序,快速排序

1.选择排序 直接遍历数组,找出最大值和最小值,记录下标,将最大值和最小值分别与首位交换 但是由于当begin maxi时,会导致出错,因此需要 if 特殊判断 void Swap(int* a, int* b) {int temp *a;*a *b;*b temp; }void SelectSort(int* a, int n) {int begin 0;int end n …