小编Arj*_*jun的帖子

社交Web应用程序数据库设计:如何改进此架构?

背景

我正在为诗人和作家开发一个社交网络应用程序,允许他们分享他们的诗歌,收集反馈,并与其他诗人交流.我在数据库设计方面的培训很少,但我一直在阅读书籍,SO和在线数据库设计资源,以确保性能和可扩展性而不会过度设计.

数据库是MySQL,应用程序是用PHP编写的.我不确定我们是否会在应用程序中使用ORM库或从头开始编写SQL查询.除了Web应用程序之外,Solr搜索服务器和某些消息传递客户端将与数据库进行交互.

目前的需求

我在下面拼凑的模式代表了网站第一版的主要组件.最初,用户可以注册该站点并执行以下任何操作:

  • 创建和修改配置文件详细信息和帐户设置
  • 发布,标记和分类他们的写作
  • 阅读,评论和"最喜欢"其他用户的帖子
  • "关注"其他用户以获取其活动的通知
  • 搜索和浏览内容并获取建议的帖子/用户(尽管我们将使用Solr搜索服务器索引数据库数据并运行这些类型的查询)

架构

以下是我在MySQL Workbench上为初始站点提出的建议.我对某些关系数据库事物仍然有点模糊,所以请轻松一点.

架构图像

问题

  1. 一般来说,有什么我做错了或可以改进吗?
  2. 我有什么理由不将ExternalAccounts表合并到UserProfiles表中吗?
  3. 我有什么理由不将PostStats表合并到Posts表中吗?
  4. 我是否应该扩展设计以包含我们在第二个版本中执行的功能,以确保初始架构可以支持它?
  5. 有什么办法可以优化Solr索引/性能/数据库的DB设计吗?
  6. 我应该使用更自然的主键,例如Username而不是UserID,还是zip/area代码而不是Locations表中的代理LocationID?

谢谢您的帮助!

mysql database schema database-design social-networking

11
推荐指数
1
解决办法
6309
查看次数