数据库课程设计:火车售票管理系统

任务分配情况

1.需求分析

  • 姓名\任务需求概述,角色,内容编写功能建模数据建模行为建模
    王玉
    王雨萌
    陆睿希
    胡雨娟

2.系统设计

1 系统分析

1.1项目背景:

     随着铁路交通网络的快速发展,公众对火车票务服务的便捷性、实时性和公平性需求日益增长。传统票务系统在高峰期常面临高并发访问压力,存在余票更新滞后、支付占座超时、退改签流程繁琐等问题,同时缺乏灵活的票价动态调整机制和高效的候补购票功能,难以满足现代旅客的多样化需求。

     为此,我们设计并开发了一套智能化火车票务管理系统,旨在通过技术创新优化购票全流程,提升用户体验与运营效率。系统以铁路运输业务为核心,覆盖车次查询、余票动态计算、在线支付、退改签服务、候补购票、票价动态调整等核心场景,同时集成多维度风控策略与高并发处理能力,保障系统稳定性与数据安全性。

1.2 系统价值与创新点

  1. 高效票务管理

    • 自动化候补队列按优先级分配余票,提升资源利用率。

  2. 用户体验优化

    • 购票流程简化至“查询-下单-支付”三步,支持第三方支付无缝对接;

    • 退票自动计算手续费并实时恢复余票,改签流程透明化;

    • 用户敏感信息(如身份证号)脱敏显示,保障隐私合规。

  3. 运营智能化

    • 铁路工作人员可灵活调整车次、站点及运营状态,系统自动校验变更安全性;

    • 支付风控模块实时监控交易异常,阻断恶意占票行为;

    • 基于日志监控与数据分析,辅助管理人员优化资源配置。

  4. 技术架构优势

    • 采用分布式架构与数据库分片技术,支持千万级并发访问;

    • 敏感数据加密存储(如BCrypt加密密码),传输过程全链路加密;

    • 通过异步消息队列处理余票更新与通知,确保系统高可用性。

1.3需求分析

1.3.1需求概述

     本系统为乘客提供便捷的火车票购买与管理服务。乘客可通过输入出发站、到达站及日期查询车次信息,系统动态显示列车发车时间、席别、实时票价及余票情况,并支持提交订单与第三方支付。若支付超时或候补订单未匹配成功,系统将自动释放座位并更新订单状态,保障公平性。退票时系统根据发车时间自动计算手续费并恢复余票,改签需先退票后重新购票。运营管理员可维护列车、车站信息等。乘客信息(如身份证号)脱敏显示,候补订单按提交时间优先级处理,超时未支付或候补失败自动通知用户。系统全面覆盖购票、退改、候补、运营管理及风控场景,兼顾效率与合规性。

用户角色
角色主要职责
普通用户购票、退票、改签、订单查询、信息反馈。
管理员系统维护、用户管理、异常处理、日志监控。车次/票价/站点管理、运营状态调整。
支付接口管理员支付渠道配置、风控管理、交易异常处理(第三方服务)。

1.3.2系统功能建模设计

需求清单
乘客
  • 用户注册:乘客可以通过系统进行注册,创建个人账户。
  • 个人信息管理:注册后,乘客可以管理自己的个人信息,如修改密码、更新联系方式等。
  • 在线购票:乘客可以在系统中选择车次并购买车票。
  • 候补购票:如果当前没有可用的车票,乘客可以选择候补购票,等待有其他乘客退票时自动获得车票。
  • 车票查询:乘客可以查询自己已购买的车票信息,包括车次、座位号等。
  • 订单查询:乘客可以查看自己的订单记录,了解购票和支付状态。
  • 支付记录查询:乘客可以查询自己的支付记录,以便对账或解决支付问题。
车站管理员
  • 乘客信息:车站管理员可以访问乘客的信息,用于管理和统计。
  • 车票查询:管理员可以查询车票信息,以便进行管理和调度。
  • 订单查询:管理员可以查看订单记录,监控售票情况。
  • 支付记录查询:管理员可以查询支付记录,确保财务数据的准确性和完整性。
  • 车站信息管理:管理员可以管理车站的基本信息,如地址、联系方式等。
  • 车次停靠管理:管理员可以管理车次的停靠站点和时间,确保列车运行的顺利进行。
  • 票价管理:管理员可以设置和调整票价,根据市场情况和政策要求进行定价。
  • 余票信息调整:管理员可以根据实际情况调整剩余车票的数量,避免资源浪费或供不应求的情况发生。
用例图

 原型图

1.2.3行为建模

业务流程描述
  1. 用户购票流程
    当乘客进入购票页面时,可以通过系统查询车次(输入出发站、到达站、发车日期),然后系统会根据车次停靠表(Train_Schedule)动态计算区间余票(基于余票信息表 Ticket_Inventory),显示车次、席别、票价(匹配票价表 Ticket_Price)、发车时间等信息供乘客选择,乘客选择车次并提交订单后,系统通过扣减余票,生成订单表(Order)记录,并跳转至支付页面。支付成功后,订单状态更新为“已支付”,生成支付记录表(Payment)数据;若支付超时(如30分钟未支付),系统自动释放库存并标记订单为“已取消”。
  2. 退票与改签流程
    乘客需要退票或改签时,可以在订单详情页发起退票,系统查询相应金额并退款(我们这里退款时退全款)后更新订单状态为“已取消”,并且同时恢复对应区间的余票(更新余票信息表 Ticket_Inventory)。记录退款信息至支付记录表(Payment)。改签则需先退票后重新购票,系统禁止直接修改原有订单。
  3. 候补购票流程
    当余票不足时,乘客可提交候补订单表(Wait_Order),指定车次、席别、乘车日期。系统实时监控余票变化:当有余票释放时,按候补下单时间顺序锁定座位,通知用户支付(15分钟内未支付则释放)。若候补失败(发车前24小时仍无票),系统自动取消候补订单并通知用户。
  4. 列车与车站管理流程
    运营管理员可维护列车表(Train)信息(如调整运营状态is_active)、车站表(Station)信息(如新增车站编码station_code)。修改车次停靠表(Train_Schedule)时(如增减停靠站),需校验是否存在未完成的关联订单(通过订单表 Order检查),若有则禁止修改。
  5. 票价动态调整流程
    运营管理员可在票价表(Ticket_Price)中设置不同区间、席别的票价规则(含生效日期effective_date),系统自动匹配当前有效票价。
  6. 支付与风控流程
    支付接口对接第三方(如支付宝、微信),通过transaction_id关联支付流水,确保交易可追溯。若支付失败(如余额不足),系统自动释放座位并标记订单为“支付失败”,防止占票不支付。
  7. 数据安全与高并发流程
    用户密码(password字段)使用BCrypt加密存储,身份证号(id_card)脱敏显示。
     

业务流程图
  • 用户注册登录核心流程图

  • 作用:用户信息管理流程是整个系统的基础模块,用于创建和维护用户身份标识。通过收集用户账号、用户名等基础信息,配合密码加密技术,确保用户数据安全存储,满足登录认证需求。

  • 列车基础数据录入流程

  • 作用:规范列车基础数据录入流程,确保车次号唯一和时间逻辑正确。关联车站表,为车次停靠表提供基础数据,支持车次路线规划。

  • 车站基础信息管理

  • 作用:统一车站基础信息管理,确保车站编码唯一。方便与列车线路、车次停靠信息进行关联。是否为换乘站的标记功能,支持系统智能规划多线路换乘方案,帮助乘客查询便捷换乘路线,同时也为列车调度提供参考,优化不同线路间的衔接效率。

  • 管理列车停靠站序列

  • 作用:车次停靠信息生成流程基于列车表数据,细化每趟列车的具体运行轨迹。通过为每个途经车站生成停靠记录,明确列车的到站时间、离站时间和停留分钟数,为乘客提供精确的乘车时刻参考,便于安排出行计划。

  • 管理余票库存

  • 作用:余票信息更新流程实现车票库存的动态管理,是保障票务系统正常运行的关键。在列车发车前,系统根据列车总座位数初始化各车次、席别的余票数量;随着用户下单购票或退票操作,实时更新余票数据,确保用户查询到的车票数量真实准确,避免超售或漏售问题。

  • 规范票价设置流程

  • 作用:票价信息管理流程用于制定和维护铁路运输的价格体系,支持灵活的票价策略。通过关联列车编号、出发站、到达站及席别,系统可针对不同线路、车型和座位等级设置差异化票价,并结合生效/失效日期实现动态调价

  • 描述订单生命周期(未支付→已支付→已取消)

  • 作用:订单信息生成流程记录用户购票的完整交易过程,是连接用户、车次和支付环节的纽带。在用户提交购票请求后,系统通过校验余票和票价,确保交易可行性;校验通过后生成唯一订单编号,详细记录用户信息、车次信息、订单金额及订单状态等数据。

  • 管理支付流程

  • 作用:支付记录管理流程负责处理用户购票的资金交易环节,确保支付安全与数据一致性。在用户选择支付方式完成付款后,系统调用第三方支付接口获取交易结果,并将实际支付金额、支付方式、支付时间及第三方交易流水号等信息写入支付记录表。

  • 规范候补购票流程

  • 作用:候补订单流程为余票不足时的用户提供购票候补服务,提升车票资源利用率。当用户提交候补订单后,系统将其需求信息(车次、席别、乘车时间等)写入候补订单表,并加入排队队列。通过定时扫描余票信息,一旦出现退票或新增车票,系统自动将符合条件的候补订单转为正式订单

  • 管理用户常用乘车人信息

  • 作用:乘客信息管理流程用于维护乘车人的身份资料,满足铁路实名制购票要求。用户可添加多个乘客信息,系统通过身份证号验证确保信息真实性和唯一性,防止重复购票或冒用身份。标记默认乘客功能支持用户快速填写常用乘车人信息,简化购票流程,提升操作效率。

  • 总流程

1.2.4数据库需求分析

数据字典
  1. 用户信息,包括用户账号,用户名,加密后的密码,用户真实姓名,身份证号,手机号
  2. 列车表信息,包括列车编号,起始站编号,终点站编号,发车时间,到达终点站时间,总座位数,运营状态
  3. 车站信息,包括车站编号,车站名称,是否为换乘站
  4. 车次停靠信息,包括停靠记录编号,关联列车编号,关联车站编号,停靠顺序,到站时间,离站时间,停留分钟数
  5. 余票信息,包括余票编号,票价,关联列车编号,发车时间,出发站编号,到达站编号,席别,可用余票数量
  6. 票价信息,包括票价编号,关联列车编号,出发站编号,到达站编号,席别,票价,票价生效日期,票价失效日期
  7. 订单信息,包括订单编号,关联用户编号,关联乘客编号,关联列车编号,出发站编号,到达站编号,席别,下单时间,乘车时间,订单金额,订单状态,支付时间,是否退票
  8. 支付记录信息,包括支付记录编号,关联订单编号,关联用户编号,实际支付金额,支付方式,支付时间,第三方交易流水号,支付状态
  9. 候补订单信息,包括候补订单编号,关联用户编号,关联列车编号,出发站编号,到达站编号,席别,乘车时间,候补下单时间,候补状态,候补成功时间
  10. 乘客信息,包括乘客编号,关联用户编号,乘客真实姓名,身份证号,联系电话,是否为默认乘客

数据库概念设计

2 系统设计

2.1数据库逻辑结构设计

用户表(用户账号,用户名,加密后的密码,用户真实姓名,身份证号,手机号)

列车表(列车编号,起始站编号,终点站编号,发车时间,到达终点站时间,总座位数,运营状态)

车站表(车站编号,车站名称,是否为换乘站)

车次停靠表(停靠记录编号,关联列车编号,关联车站编号,停靠顺序,到站时间,离站时间,停留分钟数)

余票信息表(余票编号,关联列车编号,发车时间,出发站编号,到达站编号,席别,可用余票数量,票价)

票价表(票价编号,关联列车编号,出发站编号,到达站编号,席别,票价,票价生效日期,票价失效日期)

订单表(订单编号,关联用户编号,关联乘客编号,关联列车编号,出发站编号,到达站编号,席别,下单时间,乘车时间,订单金额,订单状态,支付时间,是否退票)

支付记录信息表(支付记录编号,关联订单编号,关联用户编号,实际支付金额,支付方式,支付时间,第三方交易流水号,支付状态)

候补订单表(候补订单编号,关联用户编号,关联列车编号,出发站编号,到达站编号,席别,乘车时间,候补下单时间,候补状态,候补成功时间)

乘客信息表(乘客编号,关联用户编号,乘客真实姓名,身份证号,联系电话,是否为默认乘客)

2.2数据库物理结构设计

1. 用户表 (User)

字段名类型说明完整性约束
user_idBIGINT用户唯一标识PK
usernameVARCHAR(50)用户名(登录用)UNIQUE, NOT NULL
passwordVARCHAR(100),加密后的密码(使用BCrypt或SHA-256哈希加密)NOT NULL
real_nameVARCHAR(50)用户真实姓名NOT NULL
id_cardVARCHAR(18),身份证号UNIQUE, NOT NULL
phoneVARCHAR(11),手机号UNIQUE, NOT NULL
CREATE TABLE `User` (
  user_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(100) NOT NULL,
  real_name VARCHAR(50) NOT NULL,
  id_card VARCHAR(18) NOT NULL UNIQUE,
  phone VARCHAR(11) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 车站表 (Station)

字段名类型说明完整性约束
station_idINT车站编号主码
station_nameVARCHAR(50)车站名称(如北京南站)NOT NULL
station_codeVARCHAR(10)车站编码(如BJN)UNIQUE, NOT NULL
is_transferBOOLEAN是否为换乘站DEFAULT FALSE
CREATE TABLE `Station` (
  station_id INT AUTO_INCREMENT PRIMARY KEY,
  station_name VARCHAR(50) NOT NULL,
  station_code VARCHAR(10) NOT NULL UNIQUE,
  is_transfer BOOLEAN NOT NULL DEFAULT FALSE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;


3. 列车表 (Train)

字段名类型说明完整性约束
train_idVARCHAR(10)列车编号主码
start_station_idINT起始站ID(外键关联车站表)外码(Station.station_id)
end_station_idINT终点站ID(外键关联车站表)外码(Station.station_id)
departure_timeTIME发车时间NOT NULL
arrival_timeTIME到达终点站时间NOT NULL
total_seatsINT总座位数(按车厢和席别动态计算,非冗余字段)NOT NULL
is_activeBOOLEAN是否运营中DEFAULT TRUE
CREATE TABLE `Train` (
  train_id VARCHAR(10) PRIMARY KEY,
  start_station_id INT NOT NULL,
  end_station_id INT NOT NULL,
  departure_time TIME NOT NULL,
  arrival_time TIME NOT NULL,
  total_seats INT NOT NULL,
  is_active BOOLEAN NOT NULL DEFAULT TRUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

4. 车次停靠表 (Train_Schedule)

字段名类型/约束说明完整性约束
schedule_idBIGINT停靠记录编号主码
train_idVARCHAR(10)关联列车编号外码(Train.train_id)
station_idINT关联车站编号外码(Station.station_id)
sequence_numberINT停靠顺序(从1开始)NOT NULL
arrival_timeTIME到站时间(若为始发站则无值)
departure_timeTIME离站时间(若为终点站则无值)
stop_durationINT停留分钟数
CREATE TABLE `Train_Schedule` (
  schedule_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  train_id VARCHAR(10) NOT NULL,
  station_id INT NOT NULL,
  sequence_number INT NOT NULL,
  arrival_time TIME DEFAULT NULL,
  departure_time TIME DEFAULT NULL,
  stop_duration INT DEFAULT NULL,
  FOREIGN KEY (train_id) REFERENCES Train(train_id),
  FOREIGN KEY (station_id) REFERENCES Station(station_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

5. 余票信息表 (Ticket_Inventory)

字段名类型/约束说明完整性约束
inventory_idBIGINT余票编号主码
train_idVARCHAR(10)关联列车编号外码(Train.train_id)
departure_dateDATETIME发车时间NOT NULL
from_station_idINT出发站编号外码(Station.station_id)
to_station_idINT到达站编号外码(Station.station_id)
seat_typeVARCHAR(10)席别(商务座/一等座/二等座等)NOT NULL
available_countINT可用余票数量NOT NULL
ticket_priceDECIMAL(10,2)票价NOT NULL
CREATE TABLE `Ticket_Inventory` (
  inventory_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  train_id VARCHAR(10) NOT NULL,
  departure_date DATETIME NOT NULL,
  from_station_id INT NOT NULL,
  to_station_id INT NOT NULL,
  seat_type VARCHAR(10) NOT NULL,
  available_count INT NOT NULL,
  ticket_price DECIMAL(10,2) NOT NULL,
  FOREIGN KEY (train_id) REFERENCES Train(train_id),
  FOREIGN KEY (from_station_id) REFERENCES Station(station_id),
  FOREIGN KEY (to_station_id) REFERENCES Station(station_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

6. 票价表 (Ticket_Price)

字段名类型说明完整性约束
price_idBIGINT票价编号主码
train_idVARCHAR(10)关联列车编号外码(Train.train_id)
from_station_idINT出发站编号外码(Station.station_id)
to_station_idINT到达站编号外码(Station.station_id)
seat_typeVARCHAR(10)席别NOT NULL
priceDECIMAL(10,2)票价NOT NULL
effective_dateDATE票价生效日期NOT NULL
expiry_dateDATE票价失效日期(可选,默认为长期有效)
CREATE TABLE `Ticket_Price` (
  price_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  train_id VARCHAR(10) NOT NULL,
  from_station_id INT NOT NULL,
  to_station_id INT NOT NULL,
  seat_type VARCHAR(10) NOT NULL,
  price DECIMAL(10,2) NOT NULL,
  effective_date DATE NOT NULL,
  expiry_date DATE DEFAULT NULL,
  FOREIGN KEY (train_id) REFERENCES Train(train_id),
  FOREIGN KEY (from_station_id) REFERENCES Station(station_id),
  FOREIGN KEY (to_station_id) REFERENCES Station(station_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

7. 订单表 (Order)

字段名类型说明完整性约束
order_idBIGINT订单编号PK
user_idBIGINT关联用户编号FK(User.user_id)
passenger_idBIGINT关联乘客编号FK(Passenger)
train_idVARCHAR(10)关联列车编号FK(Train.train_id)
from_station_idINT出发站编号FK(Station.station_id)
to_station_idINT到达站编号FK(Station.station_id)
seat_typeVARCHAR(10)席别NOT NULL
order_timeDATETIME下单时间NOT NULL
departure_dateDATETIME乘车时间NOT NULL
priceDECIMAL(10,2)订单金额(从票价表同步)NOT NULL
order_statusVARCHAR(20)订单状态(未支付/已支付/已取消/已完成)NOT NULL
payment_timeDATETIME支付时间(仅状态为已支付时有效)
whether_refundBOOLEAN表示是否退退票NOT NULL
CREATE TABLE `Order` (
  order_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  user_id BIGINT NOT NULL,
  train_id VARCHAR(10) NOT NULL,
  from_station_id INT NOT NULL,
  to_station_id INT NOT NULL,
  seat_type VARCHAR(10) NOT NULL,
  order_time DATETIME NOT NULL,
  departure_date DATETIME NOT NULL,
  price DECIMAL(10,2) NOT NULL,
  order_status VARCHAR(20) NOT NULL,
  payment_time DATETIME DEFAULT NULL,
  whether_refund BOOLEAN NOT NULL DEFAULT FALSE,
  FOREIGN KEY (user_id) REFERENCES User(user_id),
  FOREIGN KEY (train_id) REFERENCES Train(train_id),
  FOREIGN KEY (from_station_id) REFERENCES Station(station_id),
  FOREIGN KEY (to_station_id) REFERENCES Station(station_id),
  FOREIGN KEY (passenger_id) REFERENCES Passenger(passenger_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

8. 支付记录表 (Payment)

字段名类型说明完整性约束
payment_idBIGINT支付记录编号主码
order_idBIGINT关联订单编号外码(Order.order_id)
user_idBIGINT关联用户编号外码(User.user_id)
payment_amountDECIMAL(10,2)实际支付金额NOT NULL
payment_methodVARCHAR(20)支付方式(支付宝/微信/银联等)NOT NULL
payment_timeDATETIME支付时间NOT NULL
transaction_idVARCHAR(50)第三方交易流水号,UNIQUE
payment_statusVARCHAR(20)支付状态(成功/失败)NOT NULL
CREATE TABLE `Payment` (
  payment_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  order_id BIGINT NOT NULL,
  user_id BIGINT NOT NULL,
  payment_amount DECIMAL(10,2) NOT NULL,
  payment_method VARCHAR(20) NOT NULL,
  payment_time DATETIME NOT NULL,
  transaction_id VARCHAR(50) UNIQUE,
  payment_status VARCHAR(20) NOT NULL,
  FOREIGN KEY (order_id) REFERENCES `Order`(order_id),
  FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

9. 候补订单表 (Wait_Order)

字段名类型说明完整性约束
wait_order_idBIGINT候补订单编号PK
user_idBIGINT关联用户编号FK(User.user_id)
train_idVARCHAR(10)关联列车编号FK(Train.train_id)
from_station_idINT出发站编号FK(Station.station_id)
to_station_idINT到达站编号FK(Station.station_id)
seat_typeVARCHAR(10)席别NOT NULL
departure_dateDATE乘车日期NOT NULL
create_timeDATETIME候补下单时间NOT NULL
wait_statusVARCHAR(20)候补状态(等待中/成功/失败/取消)NOT NULL
success_timeDATETIME候补成功时间(仅状态为成功时有效)
CREATE TABLE `Wait_Order` (
  wait_order_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  user_id BIGINT NOT NULL,
  train_id VARCHAR(10) NOT NULL,
  from_station_id INT NOT NULL,
  to_station_id INT NOT NULL,
  seat_type VARCHAR(10) NOT NULL,
  departure_date DATE NOT NULL,
  create_time DATETIME NOT NULL,
  wait_status VARCHAR(20) NOT NULL,
  success_time DATETIME DEFAULT NULL,
  FOREIGN KEY (user_id) REFERENCES User(user_id),
  FOREIGN KEY (train_id) REFERENCES Train(train_id),
  FOREIGN KEY (from_station_id) REFERENCES Station(station_id),
  FOREIGN KEY (to_station_id) REFERENCES Station(station_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

10. 乘客信息表 (Passenger)

字段名类型说明完整性约束
passenger_idBIGINT乘客编号PK
user_idBIGINT关联用户编号(添加该乘客的用户)FK(User.user_id)
real_nameVARCHAR(50)乘客真实姓名NOT NULL
id_cardVARCHAR(18)身份证号UNIQUE, NOT NULL
phoneVARCHAR(11)联系电话(可选)
is_defaultBOOLEAN是否为默认乘客(用户常用乘客标记)DEFAULT FALSE
CREATE TABLE `Passenger` (
  passenger_id BIGINT AUTO_INCREMENT PRIMARY KEY,
  user_id BIGINT NOT NULL,
  real_name VARCHAR(50) NOT NULL,
  id_card VARCHAR(18) NOT NULL UNIQUE,
  phone VARCHAR(11) DEFAULT NULL,
  is_default BOOLEAN NOT NULL DEFAULT FALSE,
  FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值