发表于: 2017-12-13 23:26:39

1 686


今天完成的事

学习范式概念  也在知乎上摘了些笔记


范式:实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别

数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。
关系模式”和“关系”的区别,类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,你可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。
码:关系中的某个属性或者某几个属性的组合,用于区分每个元组
可以把“元组”理解为一张表中的每条记录,也就是每一行
设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为。在实际中我们通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。(实际应用中为了方便,通常选择其中的一个码作为主码
1NF的定义为:符合1NF的关系中的每个属性都不可再分。
例如:

反例:
函数依赖
我们可以这么理解(但并不是特别严格的定义):若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y也就是说,在数据表中,不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。这也就是“函数依赖”名字的由来,类似于函数关系 y = f(x),在x的值确定的情况下,y的值一定是确定的。
完全函数依赖
在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ' → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X F→ Y。(那个F应该写在箭头的正上方,没办法打出来……,正确的写法如图1
                                                                    
部分函数依赖
假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记作 X P→ Y,如图2
                                                                  
传递函数依赖
假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (感谢
@百达

指出的错误,这里改为:『Y 不包含于 X,且 X 不函数依赖于 Y』这个前提),那么我们就称 Z 传递函数依赖于 X ,记作 X T→ Z,如图3

                                                       

                                      

                        

第二范式 根据2NF的定义,判断的依据实际上就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF的要求,若不存在,则符合2NF的要求。
第三范式(3NF) 3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。


作者:刘慰

来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



总结原型图中的字段写成表 刚上手比较生  搞得比较慢

直接按照wiki的格式

一 架构说明
方案:
架构
web
service
core
cache
memcache
DB
mysql关系型数据库

二 表的简单说明
1)tabl_account_info  用户账户信息 
用来储存 用户基本账户信息  
CLOUMNCOMMENTREMARKS
id自增ID
user_name昵称账户
user_phone_number用户手机号
user_password用户密码加密
user_account用户账户
user_wechat_account用户微信账户
user_status用户状态
user_picture用户头像链接
user_email用户邮箱
create_by创建者
update_by更新者
create_at创建时间
update_at更新时间
2)用户学习信息
tabl_user_study_info    用户学习信息
用来储存用户课程和学习相关数据
CLOUMNCOMMENTREMARKS
id自增ID
user_phone_number用户手机
user_account用户账户
study_star学习星
grade年级
course课程
study_time学习天数
course_time已学课时
create_by创建者
update_by更新者
create_at创建时间
update_at更新时间
3)课程信息
tabl_course
用来储存课程信息   
CLOUMNCOMMENTREMARKS
id课程ID
course_title课程标题
course_intro课程介绍
grade所属年纪
subject所属科目
course_time_sum课时总数
document_number资料数
course_price课程价格
course_start解锁课程星数
course_status课程状态
award_start奖励星星
need_pay是否付费
create_by创建者
update_by更新者
create_at创建时间
update_at更新时间
4)任务信息
tabl-task

CLOUMNCOMMENTREMARKS
id任务id
task_name任务名称
need_tips提示状态
tips_sort提示种类
tips_info提示信息
tips_time提示时间
create_by

update_by

create_at

update_at

就弄了这么些 已经上手了  剩下的明天弄出来


下午抽空看了下腾讯公开课讲的JVM   稍微总结了一下

讲的不是特别深  边听边做了些笔记

为什么要学JVM ?
要学习JVM怎么管理内存
JVM运行时数据区
what?

程序计数器:

指向当前线程正在执行的字节码指令的地址 行号

虚拟机栈:
存储当前线程运行方法所需要的数据,指令,返回地址

本地方法栈:
方法区:
类信息,常量,静态变量,JIT等
堆:
学了有什么用?

看穿代码运行的套路


JVM内存模型 JMM  存储在堆heap中   概念模型

1.8取消了   永久代

meta space :
可以扩容A  来解决永久栈溢出    但仍然会挤压内存   可以定义和限定大小
  java 监视管理控制台   
命令行启动  jconsole  这个以后可能会用到

遇到的问题

范式还是不太理解  在博客上找了几篇写的通俗易懂的   没来的及总结笔记

先放上链接吧

http://blog.jobbole.com/92442/


表和表之间的关系没太弄清楚   还需要再捋一下


明天的计划:

把字段挖完   听需求讲解  


收获:范式初步认识   JVM初步了解  大概概念清楚了 以后学着没那么难  


任务进度:复盘评审通过  开始DB设计

开始时间:2017.12.12

预计评审时间:12.20

禅道:http://task.ptteng.com/zentao/project-task-276.html



返回列表 返回列表
评论

    分享到