帮我创建一个用pymysql数据库写的聊天系统全功能包括外键的定义
时间: 2024-04-03 20:37:00 浏览: 109
好的,下面是一个使用 PyMySQL 数据库实现的简单聊天系统的全功能设计:
1. 用户信息表(user_info):
```sql
CREATE TABLE `user_info` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键',
`user_name` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '密码',
`avatar` varchar(255) DEFAULT NULL COMMENT '用户头像',
`status` int(11) DEFAULT '0' COMMENT '在线状态(0:离线,1:在线)',
`last_login_time` datetime DEFAULT NULL COMMENT '最近一次登录时间',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
```
2. 好友列表表(friend_list):
```sql
CREATE TABLE `friend_list` (
`friend_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '好友ID,主键',
`user_id` int(11) NOT NULL COMMENT '用户ID,外键,关联用户信息表',
`friend_user_id` int(11) NOT NULL COMMENT '好友用户ID,外键,关联用户信息表',
PRIMARY KEY (`friend_id`),
KEY `user_id` (`user_id`),
KEY `friend_user_id` (`friend_user_id`),
CONSTRAINT `friend_list_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `friend_list_ibfk_2` FOREIGN KEY (`friend_user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='好友列表表';
```
3. 聊天记录表(chat_record):
```sql
CREATE TABLE `chat_record` (
`record_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
`send_user_id` int(11) NOT NULL COMMENT '发送者ID,外键,关联用户信息表',
`receive_user_id` int(11) NOT NULL COMMENT '接收者ID,外键,关联用户信息表',
`content` varchar(500) NOT NULL COMMENT '聊天内容',
`send_time` datetime NOT NULL COMMENT '发送时间',
`status` int(11) DEFAULT '0' COMMENT '状态(0:未读,1:已读)',
PRIMARY KEY (`record_id`),
KEY `send_user_id` (`send_user_id`),
KEY `receive_user_id` (`receive_user_id`),
CONSTRAINT `chat_record_ibfk_1` FOREIGN KEY (`send_user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `chat_record_ibfk_2` FOREIGN KEY (`receive_user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天记录表';
```
4. 系统通知表(system_notice):
```sql
CREATE TABLE `system_notice` (
`notice_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '通知ID,主键',
`user_id` int(11) NOT NULL COMMENT '用户ID,外键,关联用户信息表',
`content` varchar(500) NOT NULL COMMENT '通知内容',
`create_time` datetime NOT NULL COMMENT '创建时间',
`status` int(11) DEFAULT '0' COMMENT '状态(0:未读,1:已读)',
PRIMARY KEY (`notice_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `system_notice_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统通知表';
```
5. 群信息表(group_info):
```sql
CREATE TABLE `group_info` (
`group_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '群ID,主键',
`group_name` varchar(50) NOT NULL COMMENT '群名称',
`avatar` varchar(255) DEFAULT NULL COMMENT '群头像',
`create_user_id` int(11) NOT NULL COMMENT '创建者ID,外键,关联用户信息表',
`create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`group_id`),
KEY `create_user_id` (`create_user_id`),
CONSTRAINT `group_info_ibfk_1` FOREIGN KEY (`create_user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群信息表';
```
6. 群成员列表表(group_member_list):
```sql
CREATE TABLE `group_member_list` (
`member_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '成员ID,主键',
`group_id` int(11) NOT NULL COMMENT '群ID,外键,关联群信息表',
`user_id` int(11) NOT NULL COMMENT '用户ID,外键,关联用户信息表',
`role` int(11) DEFAULT '0' COMMENT '成员角色(0:普通成员,1:管理员,2:群主)',
PRIMARY KEY (`member_id`),
KEY `group_id` (`group_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `group_member_list_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `group_info` (`group_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `group_member_list_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群成员列表表';
```
注意,以上 SQL 语句中已经定义了外键关系,这样可以保证数据的完整性和一致性。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)