001-数据库设计问题

如何设计一张表?

1、一张表必须有哪些字段?这些字段的作用是什么?必须加上create_time创建时间且添加上索引,modify_time修改时间,remark备注,这三个字段放在最后。如果是后台系统,还需要添加上operator操作人和operate_time 操作时间。

2、字段是否全面?没有该字段会有什么问题?比如订单表,如果没有区分该订单来自app还是web,那么你就无法统计订单来自app和web的情况。

3、字段冗余问题。该冗余的就要冗余,什么是该冗余呢?就是查询性能要求高而数据改动小的那些表,尽可能避免多表连接查询,冗余都是为了解决数据库的性能限制。优点是方便数据的查询统计,因此尽可能减少冗表的冗余字段的更新和删除操作,一个字段冗余得越多,那么该字段修改或删除的代价越大。缺点是,数据一致性维护成本高,需要维护冗余字段的一致性,如果有很多很多张表都携有冗余字段,不仅会使数据库性能降低还会带来数据不一致等一系列问题。如果参照三范式,那我们在设计数据库的时候就必须致力于消灭冗余字段,毕竟如果我们需要更新某条记录,而这条记录又恰好包含了冗余字段,那么我就必须更新所有携有冗余字段的表。如果冗余冗余字段只出现在很少的表中那么这不算什么大问题。以空间换时间的目的

4、字段值不要有null值,建议建表时要default 一个默认值。即加上not null约束,同时给一个default默认值。

5、每个表必须有一个是否启动的字段,该字段用来标识一条记录是否可用/是否作废,但是不想删除该记录。

转载于:https://www.cnblogs.com/igoodful/p/9121951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值