计划
- [x] 学习CRM项目的数据库设计部
- [ ] 阅读Java书籍
- [x] 看crapapi代码,试图修改
- [ ] 写形式与政策的论文
- [ ] 把有mock功能的软件跑起来
执行
09点30分 一直在弄共享剪贴板
10点18分 开始学习
13点46分 开始工作
16点18分 基本看数据表设计部分,还包含复习数据库知识,太恶心了
16点57分 运行有mock功能的项目
17点21分 放弃了,想找找为啥没有注册功能
英语角
The most direct cause of insomnia is because the brain is constantly spinning, thinking about things in life, remembering this and that [2]. To block logical thinking, try reading books in English until you can no longer tell what the page is actually saying and feel sleepy [1][3]. If you read a book before bed, you can also avoid using your phone and make yourself more sleepy [3]. Also, while lying in bed, do not think about anything, keep your heart calm and try to avoid ruminating [1].
知识记录
CRM项目
物理模型设计1
- 需求分析,产品经理,产品进行,确定做成什么样
- 分析与设计
- 架构师,物理架构,逻辑架构,技术选型
- 项目设计:设计表,字段,程序操作的就是表,项目经理。逻辑设计,涉及哪些类,属性方法,程序员自己写,按照功能,功能涉及哪些类。
- 界面设计,算法设计(企业级应用不涉及算法,因为用户群体比较固定;金融方面会涉及)
- 实现某个功能前问项目经理要表和需求
- 具体表结构的分析
- 系统管理的表
- tb_user 用户表
- tb_dic_value 数据字典值的表(任何项目中都有),下拉列表的数据 1
- tbl_dic_type 存储下拉列表的类型 n
- 业务活动的表
- tb_activity 市场活动表,就是创建市场活动时需要的
- tbl_acticity_remark 市场活动备注表
- tbl_clue 线索表
- tbl_clue_remark 线索备注表
- tbl_customer 客户表
- tbl_customer_remark 客户备注表,这些备注表都是对客户查看明细信息,对客户进行备注
- 每个字段都加备注
- 常用字段,重要
- 主键字段:每张表都加id字段,类型和长度由主键值的生成方式。
生成方式
- 自增(借助数据库自身主键生成机制,数值型,长度有数据量决定,多个会发生冲突,加锁则会效率低)
- assighed(程序员自己生成主键值,必须唯一非空,不好写。算法:hi/low,生成数值型,长度由数据量决定。用的最多的算法,UUID,生成字符串的主键值,32位。当id设计成 char 32位,则一般就是UUID生成的)
- 共享主键
- 联合主键
物理模型设计2
- 外键字段;确定表和表之间的关系,不同关系创建不同外键外键class_id
- 只要外键的字段值来自另一个表中的主键值没那么都不会报错
- 表和表之间的关系
- 一对多:一张表A(父表)中的一条记录对应另一张表B中的多条记录,反过来,B(子表)中的一条记录只能对应一张表A中的一条记录
- 在多的表中引入主表的主键做外键
- 添加数据时,先添加父表中被引用的记录,再添加子表中的记录
- 删除时,先删除子表中的记录,再删除父表中的(一个统领多个)
- 查询时,可能进行关联查询
- 内连接,等值连接,把所有符合条件的结果都查出来,且在两张表中都有相对应的结果
- 左外连接,查询所有左侧表中符合条件的记录,哪怕右侧表中没有对应记录
- 全外连接
- 外键不可以为空,优先内连接
- 外键可以为空
- 假如需要查询的另一表中有相对应数据,则使用内连接
- 假如只需要查询左侧所有符合条件的记录,则使用左外连接
join指连接
from后面跟的是主表
- 一对一:设置共享主键(不推荐),条件苛刻,实际中比较少
- 添加时添加先产生的表,后添加后产生的表
- 删除时先删除后产生的表的记录,后删除先产生的表记录
- 查询数据:无需进行连接查询
- 加唯一外键,并进行唯一性约束(特殊的一对多):
- 连接查询,跟一对多的操作一样
- 多对多:
- 借助第三张表,引用两个表中的主键作为外键
- 添加数据时,先添加父表,再添加子表
- 删除时,先删除子表记录,在删除父表记录
- 查询数据时可能会进行关联查询
物理模型设计2
- 关于时间和日期的字段
- date 年月日(mysql中的)
- time 时分秒
- datetime 年月日和时分秒
- Date 是java中的。查询时需要转换,但是没人会去转,都是用字符串来定义日期时间,且是定长的
- 不管什么开发语言,字符串都是统一的
- char(10) yyy-mm-dd
- char(19) yyy-mm-dd hh:mm:ss
- 数据库相当重要,写代码就是在操作表
- utf8几乎是收录了所有国家的语言