假如你所说的2是最后一条数据,那么可以这样做:用 Max(id)获取"最大的id";
执行ALTER TABLE tbl AUTO_INCREMENT = 最大的id + 1;
然后继续插入数据,id就会如你所想的是连续的数列;
如果你所指的Id不是最后一条,而是数列中间的一个数,那么你要插入数据时,可以循环对比找出不连续的Id,如上修改AUTO_INCREMENT,然后插入数据,并且将AUTO_INCREMENT修改为最大ID。
对于第一种情况,个人认为可以修改,并且性能影响不大,对已第二种情况,由于每次插入都要首先循环找出合适的位置,如果数据量大的情况下效率比较低,你可以根据自己情况进行选择;
如有你问请留言;
数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用,因此我们必须对数据库设计高度重视起来,培养设计良好数据库的习惯,是一个优秀的软件设计师所必须具备的基本素质条件!
那么我们要做到什么程度才是对的呢?下面就说说数据库设计的原则:
1、数据库设计最起码要占用整个项目开发的40%以上的时间
数据库是需求的直观反应和表现,因此设计时必须要切实符合用户的需求,要多次与用户沟通交流来细化需求,将需求中的要求和每一次的变化都要一一体现在数据库的设计当中。如果需求不明确,就要分析不确定的因素,设计表时就要事先预留出可变通的字段,正所谓“有备无患”。
2、数据库设计不仅仅停留于页面demo的表面
页面内容所需要的字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。
3、数据库设计完成后,项目80%的设计开发在你脑海中就已经完成了
每个字段的设计都是有他必要的意义的,你在设计每一个字段的同时,就应该已经想清楚程序中如何去运用这些字段,多张表的联系在程序中是如何体现的。换句话说,你完成数据库设计后,程序中所有的实现思路和实现方式在你的脑海中就已经考虑过了。如果达不到这种程度,那当进入编码阶段后,才发现要运用的技术或实现的方式数据库无法支持,这时再改动数据库就会很麻烦,会造成一系列不可预测的问题。
4、数据库设计时就要考虑到效率和优化问题
一开始就要分析哪些表会存储较多的数据量,对于数据量较大的表的设计往往是粗粒度的,也会冗余一些必要的字段,已达到尽量用最少的表、最弱的表关系去存储海量的数据。并且在设计表时,一般都会对主键建立聚集索引,含有大数据量的表更是要建立索引以提供查询性能。对于含有计算、数据交互、统计这类需求时,还要考虑是否有必要采用存储过程。
5、添加必要的(冗余)字段
像“创建时间”、“修改时间”、“备注”、“ *** 作用户IP”和一些用于其他需求(如统计)的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,比如黑客攻击,篡改了数据,我们便就可以根据修改时间和 *** 作用户IP来查找定位。
6、设计合理的表关联
若多张表之间的关系复杂,建议采用第三张映射表来关联维护两张表之间的关系,以降低表之间的直接耦合度。若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽可能避免。
7、设计表时不加主外键等约束性关联,系统编码阶段完成后再添加约束性关联
这样做的目的是有利于团队并行开发,减少编码时所遇到的问题,表之间的关系靠程序来控制。编码完成后再加关联并进行测试。不过也有一些公司的做法是干脆就不加表关联。
8、选择合适的主键生成策略
from user_cons_columns
where constraint_name =
(select constraint_name
from user_constraints
where table_name = 'BST_FAVORITE' and constraint_type ='P');
定义:能够唯一标识一个记录的字段或字段集。
特点:一个表中只能有一个
可以由一个或多个列组成
主键
的列不允许设为空(NULL)
表中各数据行在主键列不能取重复数据
Image和text类型的列不能设为主键
可以。策略就是sequence。
使用sequence。数据库要有这个sequence才行。
<id name="articleId" type="javalangLong">
<column name="ARTICLE_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_C_T_ARTICLE</param>
</generator>
</id>
以上就是关于mysql主键生成策略 自动增长全部的内容,包括:mysql主键生成策略 自动增长、在系统设计中,对数据库的设计应考虑哪些设计原则、怎么看oracle数据库表的主键的生成策略等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)