发表于: 2016-08-07 10:38:39

2 2305


今天完成的事情:

进行任务4



明天计划的事情:

进行任务4



遇到的问题:



收获:

看css task10、task11的页面。参考师兄的日报和官网页面,设计了三个表(感觉好low)


根据 职业列表http://www.jnshu.com/#/skill/occupation/list#1 建立职业表





在设计表的过程中感觉不是很顺畅,所以补了补关系数据库的三个范式、主键、索引相关的知识。补完之后还是不顺畅,询问了下康总关于数据库设计的相关东西。数据库字段命名用下划线,不用驼峰。优秀的软件设计是建立在对业务的充分理解上的。


今天一天都在想着如何把页面数据抽离出来。后端给出去的数据,前端是如何解析的。我觉得解析和数据库的设计相关性很大(先定接口,后写数据库)。和康总聊了下,这种竟然是理想状态,因为一开始并不能完全的把控住项目需求(是这个原因么?),所以一般先数据库,后接口。


看页面(页面即原型?),先分清楚哪些是前端的页面本身内容,哪些是需要前后端交互的内容或者是需要后台存储(即页面需要填写或者显示的内容,重点在于和后台交互)。先拆解出需要前后端交互,可扩展的数据项。


1.创建主键语法

ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);


2.创建外键语法

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;


3.使用组合主键
如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式
①创建时:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改时:alter table tb_name add primary key (字段1,字段2,字段3);

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。



关系数据库的设计范式(三大范式,为了避免数据冗余。)


所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
那么符合第一模式的特点就有
1)有主关键字
2)主键不能为空,
3)主键不能重复,

4)字段不可以再分


第二范式(2NF)要求实体的属性完全依赖于主关键字。(前提先符合第一范式)

满足第一范式的前提下,消除部分函数依赖。


第三范式(3NF)要求每个非关键字列都独立于其他非关键字列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系。

不要用字符作为主键,一般优先使用与业务无关的字段作为关键字。类型建议使用long。



Java数据类型                      Hibernate数据类型          标准SQL数据类型(PS:对于不同的DB可能有所差异)
byte、java.lang.Byte              byte                       TINYINT
short、java.lang.Short            short                      SMALLINT
int、java.lang.Integer            integer                    INGEGER
long、java.lang.Long              long                       BIGINT
float、java.lang.Float            float                      FLOAT
double、java.lang.Double          double                     DOUBLE
java.math.BigDecimal              big_decimal                NUMERIC
char、java.lang.Character         character                  CHAR(1)
boolean、java.lang.Boolean        boolean                    BIT
java.lang.String                  string                     VARCHAR
boolean、java.lang.Boolean        yes_no                     CHAR(1)(‘Y’或‘N’)
boolean、java.lang.Boolean        true_false                 CHAR(1)(‘Y’或‘N’)
java.util.Date、java.sql.Date     date                       DATE
java.util.Date、java.sql.Time     time                       TIME
java.util.Date、java.sql.Timestamp   timestamp               TIMESTAMP
java.util.Calendar                calendar                   TIMESTAMP
java.util.Calendar                calendar_date              DATE
byte[]                            binary                     VARBINARY、BLOB
java.lang.String                  text                       CLOB
java.io.Serializable              serializable               VARBINARY、BLOB
java.sql.Clob                     clob                       CLOB
java.sql.Blob                     blob                       BLOB
java.lang.Class                   class                      VARCHAR
java.util.Locale                  locale                     VARCHAR
java.util.TimeZone                timezone                   VARCHAR
java.util.Currency                currency                   VARCHAR



返回列表 返回列表
评论

    分享到