设计表时要考虑主键的设置

今天一同事问我怎么改db中user表的编号,系统中user表是建模生成的,编号设置成不可更改的,user表中主键是一个随机生成的ouid,一般公司为员工的中文拼音来作为编号。现在一客户要改user表中用户的编号(因为中文拼音可能重复,他们想改用号码作为员工编号),由于前台不能改,因此我想从db中直接改,为了不改错数据,我查了一些别的和user相关的表,发现有的表里引用的竟然是user的编号,并不是ouid,这样就有非常严重的问题了,我只改user表里内容的话,那别的表中数据就失效了。这里的严重错误是,别的表引用user应该用user表中的ouid,而不user表中的编号,ouid字段一经建立就不能改动。

上面的错误并不值得一提,但想到我以前做的一个选型系统,生成选型单号,单号以当前时间编码,精确到ms+3位随机数字,因此重复的概率几乎为0,我当时就想,如果我把单号作为主键就可以了,没必要再用系统生成的32位随机字符作为主键,用单号作为主键还有一个好处,就是单号是有时间规律的,我在查询选型单相关表的数据时,人眼可以一眼分辨出单号,而不会对一串32位字符发晕,但是如果要改单号的话,那就会引发一系列问题(当然,这个如果几乎没有存在的一天)。

因此,以后在设计表的时候,尽量不要让在UI上显示的字段来做为主键,如上面说到的用户编号和选型单号,虽然它们改的几率几乎为0,但是万一要改,牵一发而动全身,我建议是每个表用随机生成的字符作为主键,别的表引用时以这串字符作为外键,虽说感觉上数据有点冗余,但谁能保证客户哪天冒出这个需求呢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在创建数据表时,可以使用 "PRIMARY KEY" 关键字来设置主键。例如: ``` CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype, column3 datatype, ... ); ``` 在这个例子中,"column1" 将被设置主键主键通常被放在数据表的第一列,因此它通常会出现在数据表的开头。 如果你想要将多个列设置主键,可以使用如下语法: ``` CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, ... PRIMARY KEY (column1, column2, column3) ); ``` 这将会创建一个复合主键,由多个列组成。 ### 回答2: 在创建数据表时,可以通过指定主键列的位置来将主键设置在前面。主键在数据表中的位置对于数据的组织和访问具有重要的影响,通常将主键设置在前面可以提高数据的查询和索引效率。 创建数据表时,可以使用CREATE TABLE语句来定义数据表的结构。在该语句中,列定义的顺序决定了数据表中列的顺序。为了将主键设置在前面,只需将主键列的定义放在列定义列表的最前面即可。 例如,假设我们要创建一个名为"users"的数据表,包含"ID"、"姓名"和"年龄"三个列,并将"ID"列作为主键。以下是一个设置主键在前面的CREATE TABLE语句示例: CREATE TABLE users ( ID INT PRIMARY KEY, 姓名 VARCHAR(50), 年龄 INT ); 在上述示例中,主键"ID"列被放置在列定义的最前面,这样就将主键设置在前面了。通过这样设置,当我们查询或更新数据时,数据库系统会首先处理主键列,从而提高数据操作的效率。 需要注意的是,数据表的设计应根据实际需求来确定主键的位置和数据列的顺序。将主键设置在前面并不是绝对准则,在某些情况下,根据数据的特点和使用场景可能需要将其他列放在前面。在设计数据表时,需要综合考虑数据的访问性能、查询需求和数据的完整性等因素,以确定最合适的列顺序和主键位置。 ### 回答3: 在创建数据表时,我们可以使用SQL语句来设置主键,并将其放置在字段定义的前面。在大多数数据库管理系统中,主键通常用于唯一标识每个记录,并且它具有特定的约束和属性。 首先,我们需要使用CREATE TABLE语句创建一个新的数据表。在该语句中,我们可以定义数据表的名称以及各个字段的名称、数据类型和属性。 接下来,我们使用PRIMARY KEY关键字来标识一个字段作为主键。通常,我们会将主键设置为自增长的数字,以确保每个记录具有唯一的标识。 在字段定义中,我们可以使用以下示例代码来设置主键在前面: CREATE TABLE 表名 ( 主键列 数据类型 PRIMARY KEY, 字段1 数据类型, 字段2 数据类型, ... ); 在上述示例中,我们将主键列定义在字段定义的前面,并在后面列出其他字段。这样就确保主键设置在前面。 然后,我们可以根据需要继续定义其他字段。每个字段后面都要添加逗号,除了最后一个字段。 通过按照上述步骤创建数据表,我们可以确保主键设置在字段定义的前面。这样做有助于提高数据表的可读性和可维护性,同时遵循良好的数据库设计规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值