一. 设计表/库

  设计思想就是要分析表每个字段的具体参数,包括但不限于以下几点:

  约束?

    NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY, REFERENCES [ON DELETE CASCADE/ SET NULL/ NO ACTION/ RESTRICT/ SET DEFAULT]

  能否复用?

    使用额外字段tpye加以区分。

  逻辑删除?

    使用status字段,is_delete 反范式,create_time

  一对多(多对多即两个一对多)的表横行纵向互换?

    横变纵:即把这个用户id对应的频道表多加几行。小缺点,id赘余。

    纵变横:反过来,即把用户id对应的表多加几列。小缺点,空间浪费。

  为减少多表查询的次数需要合并表,怎么解决一个字段保存多个值呢?

    用json。

    {'type':3, 'pic':{url1, url2, url3},josn基于longtext类型创建的。 mysql的json这么强大,但用户和频道这种最好不要用json,一个字段对应的数据太大。get。

  大数据时选json还是纵向连表?

    选json:少量多值,不经常变化,需大量查询的。如文章的封面。

    选拆表:不知道有多少的,需大量修改的。比如搜索历史记录的表,比如用户关注你知道关注多少个吗。 关注表里互粉的有两条记录。 数据时代都是逻辑删除。 表的复用。

  三级回复再建表?

    不用用自关联。 为了查询效率,可以做冗余字段设计(空间换时间的思想,属于一种反范式设计)

  看一个人的数据库设计能力?

    用了多少反范式的设计,越多越强大。 粉丝,点赞数,评论数全部横向进去,空间换时间的思想。 根据数据范围选类型,每个字段的每个参数都得考虑,我的天。

  语言性能?

    公司初期用python,后期用go。python能创意快速实现,性能瓶颈地方调用c库。 没有related_name照样能关联查询。

二. 三范式

  1NF:列的原子性,列不可再分。

  2NF:满足1NF;必须有一个主键;非主键字段必须完全依赖于主键,而不能只依赖于主键的一部分。

  3NF:满足2NF;非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。需要把依赖的表拆了。

  2说的是字段完全依赖,3说的是字段直接依赖。

三. E-R模型

  entity-relation,实体关系模型,描述数据库存储数据的结构模型。

  E-R模型的使用场景:建模工具如:power designer,db desinger等这些软件来画出实体-关系模型(E-R模型),然后根据三范式设计数据库表结构。

  实体: 用矩形表示,并标注实体名称 属性: 用椭圆表示,并标注属性名称 关系: 用菱形表示,并标注关系名称 关系也是一种数据,需要通过一个字段存储在表中(多的一方)。

作者留言

  原创不宜,如果觉得本文对你有帮助,记得打赏作者噢O(∩_∩)O,你的一点点爱心是我创作路上最大的动力~

最新文章

  1. angular源码分析:$compile服务——directive他妈
  2. iOS 多语言的切换
  3. mysql集群 MySQL Cluster
  4. eclipse 导入Maven项目的问题
  5. [转载]Java应用程序中的内存泄漏及内存管理
  6. CentOS中vsftp安装与配置
  7. 黄聪:异步加载JS的4种方式(详解)
  8. MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能
  9. CentOS修改SSH默认端口
  10. HDOJ 2089 不要62(打表)
  11. SurfaceView类透明背景设置
  12. zendStudio常用快捷键整理
  13. Ubuntu系统下在Eclipse中使用真实手机运行调试Android应用
  14. 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
  15. es6对象字面量增强
  16. 如何设置默认以管理员权限运行cmd
  17. learning makefile set debug level and build command
  18. 关于cp命令的编写
  19. java并发编程之三--CyclicBarrier的使用
  20. SpringData_JpaRepository接口

热门文章

  1. 设计链表-LeetCode707 基础题
  2. DOM(原生js事件绑定)
  3. MongoDB - 数据模型的设计模式
  4. UVA439 Knight Moves
  5. WCH沁恒 CH37系列芯片选型以及常见问题的处理(CH376/CH378)
  6. 基于Linux下的Ubuntu操作系统常用命令
  7. JS生成下载文件
  8. 【带你读论文】向量表征经典之DeepWalk
  9. ClickHouse ORM 3.x 发布啦
  10. Java学习笔记:2022年1月9日(其二)