首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

社交网站的数据库设计

设计一个社交网站的数据库是一个复杂的任务,需要考虑多种因素,包括用户管理、好友关系、帖子、评论、点赞、消息等。以下是一个基本的数据库设计示例,涵盖了社交网站的核心功能。

数据库表设计

1. 用户表 (users)

存储用户的基本信息。

代码语言:javascript
复制
CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    profile_picture_url VARCHAR(255),
    bio TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 好友关系表 (friendships)

存储用户之间的好友关系。

代码语言:javascript
复制
CREATE TABLE friendships (
    user_id INT,
    friend_id INT,
    status ENUM('pending', 'accepted', 'declined') DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id, friend_id),
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (friend_id) REFERENCES users(user_id)
);

3. 帖子表 (posts)

存储用户发布的帖子。

代码语言:javascript
复制
CREATE TABLE posts (
    post_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    content TEXT,
    image_url VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

4. 评论表 (comments)

存储用户对帖子的评论。

代码语言:javascript
复制
CREATE TABLE comments (
    comment_id INT AUTO_INCREMENT PRIMARY KEY,
    post_id INT,
    user_id INT,
    content TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (post_id) REFERENCES posts(post_id),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

5. 点赞表 (likes)

存储用户对帖子和评论的点赞。

代码语言:javascript
复制
CREATE TABLE likes (
    like_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    post_id INT,
    comment_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (post_id) REFERENCES posts(post_id),
    FOREIGN KEY (comment_id) REFERENCES comments(comment_id)
);

6. 消息表 (messages)

存储用户之间的私信。

代码语言:javascript
复制
CREATE TABLE messages (
    message_id INT AUTO_INCREMENT PRIMARY KEY,
    sender_id INT,
    receiver_id INT,
    content TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sender_id) REFERENCES users(user_id),
    FOREIGN KEY (receiver_id) REFERENCES users(user_id)
);

数据库设计示例

以下是一个示例,展示如何插入和查询数据。

插入用户

代码语言:javascript
复制
INSERT INTO users (username, email, password_hash, first_name, last_name)
VALUES ('john_doe', 'john@example.com', 'hashed_password', 'John', 'Doe');

插入好友关系

代码语言:javascript
复制
INSERT INTO friendships (user_id, friend_id, status)
VALUES (1, 2, 'accepted');

插入帖子

代码语言:javascript
复制
INSERT INTO posts (user_id, content, image_url)
VALUES (1, 'This is my first post!', 'http://example.com/image.jpg');

插入评论

代码语言:javascript
复制
INSERT INTO comments (post_id, user_id, content)
VALUES (1, 2, 'Nice post!');

插入点赞

代码语言:javascript
复制
INSERT INTO likes (user_id, post_id)
VALUES (2, 1);

插入消息

代码语言:javascript
复制
INSERT INTO messages (sender_id, receiver_id, content)
VALUES (1, 2, 'Hello, how are you?');

查询示例

查询用户的帖子

代码语言:javascript
复制
SELECT * FROM posts WHERE user_id = 1;

查询帖子的评论

代码语言:javascript
复制
SELECT * FROM comments WHERE post_id = 1;

查询用户的好友

代码语言:javascript
复制
SELECT u.* FROM users u
JOIN friendships f ON u.user_id = f.friend_id
WHERE f.user_id = 1 AND f.status = 'accepted';
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共0个视频
网页设计案例分析
易极赞自助建站
定期分享网站设计案例
共17个视频
Oracle数据库实战精讲教程-数据库零基础教程【动力节点】
动力节点Java培训
视频中讲解了Oracle数据库基础、搭建Oracle数据库环境、SQL*Plus命令行工具的使用、标准SQL、Oracle数据核心-表空间、Oracle数据库常用对象,数据库性能优化,数据的导出与导入,索引,视图,连接查询,子查询,Sequence,数据库设计三范式等。
共0个视频
EdgeOne一站式玩转网站加速与防护实战营
学习中心
在数字化时代,网站的性能与安全性直接关系到用户体验和业务连续性,而 EdgeOne 作为腾讯云下一代的 CDN,集加速与安全防护于一身,已广泛应用于电商、金融、游戏等行业。腾讯云开发者社区携手 EdgeOne 团队精心打造《EdgeOne 一站式玩转网站加速与防护实战营》,鹅厂大牛结合超多真实业务场景,手把手带你轻松 get 网站加速与防护的三十六计。
共0个视频
【纪录片】中国数据库前世今生
TVP官方团队
【中国数据库前世今生】系列纪录片,将与大家一同穿越时空,回顾中国数据库50年发展历程中的重要时刻,以及这些时刻如何塑造了今天的数据库技术格局。通过五期节目,讲述中国数据库从1980s~2020s期间,五个年代的演变趋势,以及这些大趋势下鲜为人知的小故事,希望能为数据库从业者、IT 行业工作者乃至对科技历史感兴趣的普通观众带来启发,以古喻今。
共29个视频
【动力节点】JDBC核心技术精讲视频教程-jdbc基础教程
动力节点Java培训
本套视频教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。
共3个视频
嵌入式硬件开发设计学习教程合集
创龙科技Tronlong
本系列视频由广州创龙硬件工程师团队共同录制,主要是面向初学者,介绍硬件设计的软件工具,基础知识及学习方法。视频合集对硬件最基本的知识和电路设计进行讲解,以后会陆续更新更多的内容,抛砖引玉。
共50个视频
动力节点-【CRM客户管理系统】SSM框架项目实战教程-1
动力节点Java培训
这套教程是动力节点最新录制的CRM项目,课程主要针对核心的客户关系管理业务功能进行实现,让你能够深层掌握主流SSM框架、Linux操作系统下部署项目、数据库设计原则和技巧、数据如何通过图表在页面展示、Java对excel文件的处理,学会使用项目管理工具Maven、版本控制工具Git,以及缓存在项目中的运用熟悉前端开发技术及常见的特效等。 通过课程可以了解项目开发流程及项目开发各阶段主要文档及产出物
共50个视频
动力节点-【CRM客户管理系统】SSM框架项目实战教程-2
动力节点Java培训
这套教程是动力节点最新录制的CRM项目,课程主要针对核心的客户关系管理业务功能进行实现,让你能够深层掌握主流SSM框架、Linux操作系统下部署项目、数据库设计原则和技巧、数据如何通过图表在页面展示、Java对excel文件的处理,学会使用项目管理工具Maven、版本控制工具Git,以及缓存在项目中的运用熟悉前端开发技术及常见的特效等。 通过课程可以了解项目开发流程及项目开发各阶段主要文档及产出物
共50个视频
动力节点-【CRM客户管理系统】SSM框架项目实战教程-3
动力节点Java培训
这套教程是动力节点最新录制的CRM项目,课程主要针对核心的客户关系管理业务功能进行实现,让你能够深层掌握主流SSM框架、Linux操作系统下部署项目、数据库设计原则和技巧、数据如何通过图表在页面展示、Java对excel文件的处理,学会使用项目管理工具Maven、版本控制工具Git,以及缓存在项目中的运用熟悉前端开发技术及常见的特效等。 通过课程可以了解项目开发流程及项目开发各阶段主要文档及产出物
共18个视频
动力节点-【CRM客户管理系统】SSM框架项目实战教程-4
动力节点Java培训
这套教程是动力节点最新录制的CRM项目,课程主要针对核心的客户关系管理业务功能进行实现,让你能够深层掌握主流SSM框架、Linux操作系统下部署项目、数据库设计原则和技巧、数据如何通过图表在页面展示、Java对excel文件的处理,学会使用项目管理工具Maven、版本控制工具Git,以及缓存在项目中的运用熟悉前端开发技术及常见的特效等。 通过课程可以了解项目开发流程及项目开发各阶段主要文档及产出物
共6个视频
消息队列专题
jaydenwen123
1.主要介绍消息队列的设计思想(消息队列主体模型、存储方案选型、消费模型、推拉模型等) 2.介绍主流消息队列RabbitMQ、Kafka、RocketMQ、Pulsar等内部原理以及相互之间的差异点彻底吃透消息队列内容
共0个视频
2023云数据库技术沙龙
NineData
2023首届云数据库技术沙龙 MySQL x ClickHouse 专场,在杭州市海智中心成功举办。本次沙龙由玖章算术、菜根发展、良仓太炎共创联合主办。围绕“技术进化,让数据更智能”为主题,汇聚字节跳动、阿里云、玖章算术、华为云、腾讯云、百度的6位数据库领域专家,深入 MySQL x ClickHouse 的实践经验和技术趋势,结合企业级的真实场景落地案例,与广大技术爱好者一起交流分享。
共50个视频
动力节点-SVN控制技术专题精讲教程-上
动力节点Java培训
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
共9个视频
动力节点-SVN控制技术专题精讲教程-下
动力节点Java培训
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
共0个视频
广州巨控GRM230/530/OPC/110学习视频
工控小周
巨控科技是一家专业从事工控自动化产品和解决方案的高科技企业。 公司从2010年开始,提供工业无线通讯自动化软、硬件的开发、设计与应用系统的集成。经过多年的努力,广州巨控已经成为工业无线通讯领域的领跑者,行业内具备极佳声誉。GRM系列无线通讯产品,通讯方式涵盖了4G,有线,WIFI,LORA短信,语音等先进技术。
共45个视频
Vue3项目全程实录#EWShop电商系统前端开发
学习猿地
以一个移动端商城系统为原型,全套课程录制。共计45节课, 20多小时课程, 按Web前端系统使用的功能需求,实现主体业务功能,所有代码全部手敲, 全程无死角讲解一整套项目前端模板的设计、开发、测试、上线、运行的全过程。可以带你身临其境,和讲师一起走一遍项目开发的过程,对项目经验不足,或没有接触过前后端分离的项目开发的新人,课程对你非常用帮助。
领券