背景
我正在开发一个面向诗人和作家的社交网络应用程序,允许他们分享自己的诗歌、收集反馈并与其他诗人进行交流。我在数据库设计方面几乎没有正式的培训,但我一直在阅读书籍、SO和在线数据库设计资源,以确保性能和可扩展性而不会过度工程化。
该数据库使用MySQL,应用程序使用PHP编写。我还不确定我们是否会在应用程序中使用ORM库或从头编写SQL查询。除了Web应用程序外,Solr搜索服务器和可能的消息客户端将与数据库交互。
当前需求
我下面提供的模式表示网站第一个版本的主要组件。最初,用户可以注册网站并执行以下任何操作:
- 创建和修改个人资料详情和帐户设置
- 发布、标记和分类自己的作品
- 阅读、评论和“收藏”其他用户的帖子
- “关注”其他用户以获取其活动的通知
- 搜索和浏览内容并获取推荐的帖子/用户 (尽管我们将使用Solr搜索服务器索引DB数据并运行这些类型的查询)
模式
以下是我在MySQL Workbench上为初始网站想出来的内容。我对某些关系型数据库的东西还有点迷糊,所以请多多包涵。
问题
- 总的来说,我是否做错了什么或可以改进?
- 有没有理由不将ExternalAccounts表合并到UserProfiles表中?
- 有没有理由不将PostStats表合并到Posts表中?
- 我应该扩展设计以包括我们在第二个版本中要做的功能,以确保初始模式可以支持它吗?
- 有什么可以优化数据库设计以进行Solr索引/性能/其他方面的操作吗?
感谢您的帮助!