zoukankan      html  css  js  c++  java
  • N0---数据库系统

    三权分立

    数据库系统,符合人们使用结构化数据的需求。

    没有它时,人们会用记账本或Excel来满足这一需求;但是设计良好的数据库系统一定是最好用的。

    因为数据库系统系统:准确/灵活/易用。

    这些优点主要靠3权分立来实现:

    数据库,能准确的存取数据。

    后台代码,能灵活的对数据进行计算/分析。

    图形界面,便于数据的展示和用户进行操作。

    -----------------------------------------------------------

    简而言之,数据库系统主要围绕这3大块展开。

    1.数据库操作

    2.UI

    3.后台代码

    核心是业务

    写代码的时候,会感觉数据是核心。

    因为代码总是在操作数据,sql取数据,给后台对象复制,数据拷过来拷过去。

    ----------------------------------------------------------------------------------------

    更深一步的,业务才是核心。

    因为是业务需要,数据才会被搬来搬去。

    -----------------------------------------------------------------------------------------

    对于业务的理解,首先有个粗理解;也就知道了数据的大体流向。

    比如说采购入库。是采购单的数据,往入库单里拷贝。

    再进一步的是一个细节理解;也就知道了某个具体的数据有关的东西。

    比如我需要left join哪些表拿到客户想看到的字段。

    ------------------------------------------------------------------------------------------

    建库建表的困难之处

    数据表分为两种:一种描述【物】,另一种描述【事】.

    描述物的,比如说学生表(姓名,出生日期,性别,班级)。

    描述事的,比如说销售订单主从表(开单日期,单号,商品ID,数量,售价,金额)。

    • 拆分组合

    事和物,都具有可以拆分组合的特点。

    • 属性繁多

    事和物,都具有很多属性。

    ---------------------------------------------------------------------------------

    物的拆分。

    一只猪, 可以拆成头部,脖子,四肢,躯干几部分.

    换一种标准,可以拆成肥肉,瘦肉,骨头几部分.

    说【我喜欢吃猪耳朵,不喜欢吃猪尾巴】时,是按方式一拆分。

    说【我喜欢吃瘦肉,不喜欢吃肥肉】时,是按方式二拆分。

    那我为什要建立如此一个学生表,不去建立学生头部表,学生脖子表……这些呢?因为我在下文中,要讨论,学生的成绩,学生的课程,学生的老师这些话题。但并不想讨论小学生的身体部位。

    -----------------------------------------------------------------------------------

    事的拆分。

    收银这件事,可以拆成收银员点商品算钱,顾客给钱,收银员找钱,这3件小事。

    我们现在从超市买东西,小票会把这些事情记录的清清楚楚。

    但是有一次我去五金店买东西,那个老板只用笔记录了我买了什么东西,数量多少,并没有记录收了多少钱。

    他收我钱了,但是没记录,为什么?

    大概他认为记录卖了多少东西是有必要的,这能方便他算库存,再进货。

    -----------------------------------------------------------------------------------

    物的属性。

    我知道我一口气能喝200ml水,你问我用杯子A能喝几杯.

    假如我不知道杯子A的容积,我就不知道我能喝几杯.

    我前文中需要预先定义好后文需要的属性.

    -------------------------------------------------------------------------------------

    事的属性。

    假如我不知道自己几点吃中午饭。

    只知道吃饭需要10分钟。

    你知道我几点吃完吗?

    --------------------------------------------------------------------------------------

    •  要考虑的东西

    我们建数据表的时候需要考虑两方面:

    我们怎样把一件事物同其他事物划分出来?---要建哪些表

    我们又需要描述一件事物的哪些方面的属性?---要有哪些字段

    •  总的来说

    事物都可以拆分;并且属性繁多。

    究竟怎么建哪些表,建哪些字段,首先是要为业务逻辑服务的。

    总体上,用户关心的事物,就描述。不关心的就不描述。

    ps:数据库设计规范

    有时我们会忘记规范,打破规范。在这里记录下规范。

    ---------------------------------------------------------------------------------

    一对多的表示

    班级对学生,是一对多,即一个班级有多个学生。

    但是一个学生只属于一个班级,从学生角度看是一对一的,所以可以在学生表里加入班级字段。

    所以学生表可以是这样(学生ID,学生Name,班级)

    ---------------------------------------------------------------------------------

    多对多的表示

    学生和课程,是多对多,即一个学生可以选多门课,一门课也可以被多个学生选。

    这时候,加入关系表,是最佳选择。

    关系表可以是这样(选课记录ID,学生ID,课程ID)

  • 相关阅读:
    模式识别 之 BP算法
    仪器开发 之 DICOM 三维重建 HPP
    模式识别 之 BP算法 (二)
    病理分析 之 细胞分析
    脉搏血氧仪 之 算法原理
    模式识别 之 初学
    机器学习 之 模糊神经(失败总结)
    冲刺第二天
    冲刺第三天
    团队项目计划
  • 原文地址:https://www.cnblogs.com/fabao/p/10009340.html
Copyright © 2011-2022 走看看