网站开发的难点与重点,关于电商网站建设的论文,用phpnow搭建网站的整个流程,竞价托管信息主键#xff1a;用于唯一标识一个表中一行数据。 外键#xff1a;用于建立两个表之间的关系#xff0c;A表中有一列是B表中的主键#xff0c;那么A表中这列的数据就受到B表主键的约束。 那么关于主键应该如何设计呢#xff0c;这里我说下优缺点#xff1a; 1.用自动增长字…主键用于唯一标识一个表中一行数据。 外键用于建立两个表之间的关系A表中有一列是B表中的主键那么A表中这列的数据就受到B表主键的约束。 那么关于主键应该如何设计呢这里我说下优缺点 1.用自动增长字段作为主键这样的主键可以称之为 非业务主键或逻辑主键、或代理主键就是说这列与业务无关仅仅是作为主键而设计。 优点自增长字段往往是integer bigint类型最多占8个字节。索引与外键 所占用的空间连带减少增删改查 效率高。业务变化不影响不需要更新主键。 缺点无法转移数据库比如把表中的一批数据 转移 或 附带到 另一个表中那么由于是自增长字段那么会导致无法转移因为另外一个表可能已经存在部分数据会造成主键冲突。自增长字段的缺陷。 业务数据的完整性无法保证。 2.用全球唯一标识符GUID来做主键。依然是非业务主键。 优点可以转移数据库。业务变化不影响不需要更新主键。 缺点字符串较长占用的空间较多如果用于外键的话会导致连带其它表占用的空间连带增多。A表中有一列是B表中的主键 那么A表中的这列也是需要有个索引的即存储空间会连带增多。效率变低。 即除了正常业务字段外还是弄个字符串字段来专一保存这个全球唯一标识符造成存储浪费。业务数据的完整性无法保证。 3.用业务字段做主键。 优点可以转移数据库最大化节省了空间因为并没有 多增加一个非业务字段做主键。业务数据的完整性可以保证。避免产生垃圾数据银行就是用业务字段做主键的虽然效率低但是安全。 缺点如果业务发生改变有可能需要修改主键举例国家A表用身份证号做主键然后其他很多表中的身份证号这列都是来自 身份证表A中的主键即外键那么如果身份证号升级比如从1代升级到2代那么 那么连带的表的外键 的索引 通通都得发生变化效率极低 因为会连带更新一串用到这个外键的表可见用业务字段做主键的话你得保证 主键不经常变化。 综上用哪种方式做主键还是得看业务需求实际情况实事求是。根据情况选择没有固定的标准。转载于:https://www.cnblogs.com/del88/p/6719176.html