MySQL 数据库设计:用户管理、食品药品提醒、救生知识、智能问答和区域地图
MySQL 数据库设计:用户管理、食品药品提醒、救生知识、智能问答和区域地图
本文提供一套 MySQL 数据库结构设计,涵盖以下功能:
- 用户登录注册
- 纪录食品 & 药品信息以及过期提醒
- 救生知识阅览,收藏和备注;对这些知识分类并且推荐用户感兴趣的相关知识
- 对设置有时间的事件提醒,包括食品和药品即将过期时反馈一个信息给用户
- 智能问答,用户可以进行提问(人工客服回答或管理员回答)
- 有区域图可以快速锁定最近的医护点,并且获取医院信息;通知紧急联系人
表结构设计:
用户表 (user)
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '密码',
`register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
食品 & 药品信息表 (product)
CREATE TABLE `product` (
`product_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`product_name` varchar(50) NOT NULL COMMENT '商品名称',
`product_type` varchar(50) NOT NULL COMMENT '商品类型',
`expiration_date` date NOT NULL COMMENT '保质期',
`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`user_id` int(11) NOT NULL COMMENT '用户ID',
PRIMARY KEY (`product_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `product_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='食品&药品信息表';
救生知识表 (knowledge)
CREATE TABLE `knowledge` (
`knowledge_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '知识ID',
`knowledge_title` varchar(50) NOT NULL COMMENT '知识标题',
`knowledge_content` text NOT NULL COMMENT '知识内容',
`knowledge_category` varchar(50) NOT NULL COMMENT '知识分类',
PRIMARY KEY (`knowledge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='救生知识表';
收藏表 (collection)
CREATE TABLE `collection` (
`collection_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`knowledge_id` int(11) NOT NULL COMMENT '知识ID',
`collection_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
PRIMARY KEY (`collection_id`),
KEY `user_id` (`user_id`),
KEY `knowledge_id` (`knowledge_id`),
CONSTRAINT `collection_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `collection_ibfk_2` FOREIGN KEY (`knowledge_id`) REFERENCES `knowledge` (`knowledge_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
备注表 (note)
CREATE TABLE `note` (
`note_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '备注ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`knowledge_id` int(11) NOT NULL COMMENT '知识ID',
`note_content` text NOT NULL COMMENT '备注内容',
PRIMARY KEY (`note_id`),
KEY `user_id` (`user_id`),
KEY `knowledge_id` (`knowledge_id`),
CONSTRAINT `note_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `note_ibfk_2` FOREIGN KEY (`knowledge_id`) REFERENCES `knowledge` (`knowledge_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备注表';
提醒表 (reminder)
CREATE TABLE `reminder` (
`reminder_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '提醒ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`product_id` int(11) NOT NULL COMMENT '商品ID',
`reminder_type` varchar(50) NOT NULL COMMENT '提醒类型',
`reminder_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提醒时间',
PRIMARY KEY (`reminder_id`),
KEY `user_id` (`user_id`),
KEY `product_id` (`product_id`),
CONSTRAINT `reminder_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `reminder_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='提醒表';
问答表 (question)
CREATE TABLE `question` (
`question_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '问题ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`question_content` text NOT NULL COMMENT '问题内容',
`answer_content` text COMMENT '回答内容',
`answer_time` timestamp NULL DEFAULT NULL COMMENT '回答时间',
PRIMARY KEY (`question_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `question_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问答表';
区域图表 (map)
CREATE TABLE `map` (
`map_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '地图ID',
`hospital_name` varchar(50) NOT NULL COMMENT '医院名称',
`address` varchar(100) NOT NULL COMMENT '地址',
`contact_number` varchar(50) NOT NULL COMMENT '联系电话',
`longitude` decimal(10,6) NOT NULL COMMENT '经度',
`latitude` decimal(10,6) NOT NULL COMMENT '纬度',
PRIMARY KEY (`map_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区域图表';
SQL 建表语句:
用户表:
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '密码',
`register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
食品 & 药品信息表:
CREATE TABLE `product` (
`product_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`product_name` varchar(50) NOT NULL COMMENT '商品名称',
`product_type` varchar(50) NOT NULL COMMENT '商品类型',
`expiration_date` date NOT NULL COMMENT '保质期',
`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`user_id` int(11) NOT NULL COMMENT '用户ID',
PRIMARY KEY (`product_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `product_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='食品&药品信息表';
救生知识表:
CREATE TABLE `knowledge` (
`knowledge_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '知识ID',
`knowledge_title` varchar(50) NOT NULL COMMENT '知识标题',
`knowledge_content` text NOT NULL COMMENT '知识内容',
`knowledge_category` varchar(50) NOT NULL COMMENT '知识分类',
PRIMARY KEY (`knowledge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='救生知识表';
收藏表:
CREATE TABLE `collection` (
`collection_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`knowledge_id` int(11) NOT NULL COMMENT '知识ID',
`collection_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
PRIMARY KEY (`collection_id`),
KEY `user_id` (`user_id`),
KEY `knowledge_id` (`knowledge_id`),
CONSTRAINT `collection_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `collection_ibfk_2` FOREIGN KEY (`knowledge_id`) REFERENCES `knowledge` (`knowledge_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
备注表:
CREATE TABLE `note` (
`note_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '备注ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`knowledge_id` int(11) NOT NULL COMMENT '知识ID',
`note_content` text NOT NULL COMMENT '备注内容',
PRIMARY KEY (`note_id`),
KEY `user_id` (`user_id`),
KEY `knowledge_id` (`knowledge_id`),
CONSTRAINT `note_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `note_ibfk_2` FOREIGN KEY (`knowledge_id`) REFERENCES `knowledge` (`knowledge_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备注表';
提醒表:
CREATE TABLE `reminder` (
`reminder_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '提醒ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`product_id` int(11) NOT NULL COMMENT '商品ID',
`reminder_type` varchar(50) NOT NULL COMMENT '提醒类型',
`reminder_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提醒时间',
PRIMARY KEY (`reminder_id`),
KEY `user_id` (`user_id`),
KEY `product_id` (`product_id`),
CONSTRAINT `reminder_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `reminder_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='提醒表';
问答表:
CREATE TABLE `question` (
`question_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '问题ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`question_content` text NOT NULL COMMENT '问题内容',
`answer_content` text COMMENT '回答内容',
`answer_time` timestamp NULL DEFAULT NULL COMMENT '回答时间',
PRIMARY KEY (`question_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `question_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问答表';
区域图表:
CREATE TABLE `map` (
`map_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '地图ID',
`hospital_name` varchar(50) NOT NULL COMMENT '医院名称',
`address` varchar(100) NOT NULL COMMENT '地址',
`contact_number` varchar(50) NOT NULL COMMENT '联系电话',
`longitude` decimal(10,6) NOT NULL COMMENT '经度',
`latitude` decimal(10,6) NOT NULL COMMENT '纬度',
PRIMARY KEY (`map_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区域图表';
注意:
- 上述代码仅供参考,实际应用中需要根据具体需求进行调整。
- 为了提高数据库性能,可以考虑添加索引,并对数据类型进行优化。
- 建议使用事务来保证数据一致性。
- 可以根据需求添加额外的表和字段。
- 可以使用 ORM 框架来简化数据库操作。
希望本文能对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/lVY6 著作权归作者所有。请勿转载和采集!