MySQL以用户为本 构建SNS网站的核心数据库(1)
1 前言
最近项目开发过程中,遇到数据库设计方面的问题,参考了多个数据库,总结了一些相关的数据库实体及关系的表示 3月份的时候也写过一篇MySQL数据库设计复习笔记及项目实战 ,现在再次进行总结,并添加了在项目中的数据库设计及具体的持久化及cache实现.
数据库作为底层,命名规范和变动都会直接影响到上层,所以在设计上更需要谨慎.
本文从 数据库实体及关系处理,数据持久化及缓存处理,这3个方面来进行阐述
先看下本次 我是买家 开源项目设计软件 采用的是 MySQL Workbench
点击查看详细大图
2 实体及关联处理
筛选实体,从图中我们可以看到,图中主要分成了6个部分
实体表 goods 商品 communicate 群 say 我说 comment 评论 url 站点 brand 品牌 compaign 活动 |
用户表user |
关系表 userandmodel 用户模型关系 modelandmodel 模型模型关系 aactionandmodel 页面实体关系 tags TAG实体关系 |
资源表 image 图片 album 相册 |
群组表 group 小组 topic 话题 post 回复 userandgroup 用户群组关联 |
站点常用表 systemtree 系统树 content 内容 ad 广告 report 举报 district 地区 log 日志 services 客服人员 mail 站内信 |
以用户为中心,user表放在中间,关联其他的实体
实体表 可以进行扩展 添加相关的应用实体
关系表 主要包含4个表
用户和模型关联表 比如: 张三 喜欢 IPOD 李四 想买 IPOD linktype="like/buy"
模型模型关联表 比如商品评论关联 modela 商品 modelb 评论
actionandmodel 页面模型关联表 tag关键字及实体关联表
资源表 主要包含了 image ablum image表包含了系统实体类关联的图片
群组表 包含了group,topic,post userandgroup ,群组作为系统独立模块独立出来
常用表 常有表从实体表中分离出来,放站点需要的表