表结构目的
我们应该带着什么样的目标, 或者说设计成什么样才算是合理的设计呢?...表设计
如何才能做好表设计呢, 有什么设计依据呢? 通常会参考数据库范式进行设计.
首先数据库设计范式是为了设计出没有冗余以及数据维护异常的数据库结构. 通常从严格要求程度分为三个级别, 也叫三范式....(实际上范式种类很多)
第一范式(1NF): 列不可再分
表中所有属性都不能在分解为更基本的数据单位时, 称为第一范式. 它是表设计的最低要求....这样图书信息表的列长度又变短, 无形中又提高了系统性能.
范式化设计可以尽可能减少冗余, 因为表更小, 所以更新也会更快. 但业务上需要多表联合查询时, 因为随机IO, 又会降低读性能....反范式设计正好是弥补了范式化设计的缺点, 有更好的读性能, 容易用索引优化, 同时提高了写成本.
正如上面所举列子, 要根据实际业务情况才能设计出合理的表结构, 一味的追求范式和反范式都是不合理的.