• 数据库实践---part one


      以前我学的数据库(这里谈的数据库都是指关系型数据库)总以为就是一些二维表和各种关系的集合,今天开始我修了一门课,我觉得老师讲的特别好,他不在于把我们以前学习的数据库关于技术的知识重复,而在于他在一个更高的角度去看数据库,就是哲学的思想,让我受益匪浅,所以以后我上一节课就要赶紧把这节课的一些想法和收获写下来,以后可以回顾。

      首先,数据库这个东西要从哲学上的方法论和认识论来看它,你要问自己两个问题:第一,数据库里放的是什么?放的当然是数据,第二,数据库里放的是谁的数据?老师说是你想描述的客观世界,例如你想描述银行,那这个客观世界就是银行。

      然后,我们从两个入口来看数据库,第一个入口是哲学的入口:客观世界——>“事”或“物”——> 概念(包含两层意义:内涵(性质、特性、属性,就是用来区别于其他概念的东西)和外延(拥有上述特征的个体的集合)) ——>二维表的集合(列:描述内涵;行:描述外延;通过PK来区别个体之间的属性)。第二个入口是技术上的入口:D=D1*D2*...*Dn (R属于D).从客观世界到数据库要经历以下几个步骤:需求分析、概念设计、逻辑设计、物理设计等。

      最后,讲一下软件的设计原则,软件一定要软,我觉得这是很重要的,如果设计的软件要在一定的硬件上去运行,那性能肯定是不好的。软件系统结构分为C/S和B/S。C是表示逻辑,S是事务逻辑,存储过程、触发器属于事务逻辑。

      数据库机构的判定:有三个标准,第一是什么是差的设计,标准是什么;第二是什么是好的设计,标准又是什么?第三是如何做好设计?  差的设计的判定是有四个标准,第一数据冗余;第二是插入异常;第三是删除异常;第四是修改异常;数据冗余的概念是逻辑上一个概念,物理上却放了很多地方;

      好的设计就以范式为标准去看。

      如何做好设计:老师说一个数据库设计的好不好,拼的是结构。

  • 相关阅读:
    彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)
    linux服务器上tcp有大量time_wait状态的解决方法和原因解释
    mysql,既可以自己的字段相乘,也可以乘固定的字段
    vscode 滚动设置字体大小
    nodejs 定时任务 node-schedule 库
    Node.js中的环境变量
    js 打印错误堆栈
    springboot 返回的json中忽略null属性值,不传递
    idea跳转到指定行列快捷键
    Spring boot + MyBatis返回map中null值处理
  • 原文地址:https://www.cnblogs.com/Gabby/p/5049534.html
Copyright © 2020-2023  润新知