数据库表中的主键有什么作用?

 我来答
情场小男人
2018-03-08 · TA获得超过130个赞
知道答主
回答量:0
采纳率:60%
帮助的人:0
展开全部

数据库主键

主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

作用:

1)保证实体的完整性;

2)加快数据库的操作速度

3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

主键的无意义性

在开发过程中,读者可能会看到将一些表使用有意义的字段表示主键,例如“用户登录信息表”将“登录名”(英文名)作为主键,“订单表”中将“订单编号”作为主键,如此设计主键一般都是没什么问题,因为将这些主键基本不具有“意义更改”的可能性。但是,也有一些例外的情况,例如“订单表”需要支持需求“订单可以作废,并重新生成订单,而且订单号要保持原订单号一致”,那将“订单编号”作为主键就满足不了要求了。因此读者在使用具有实际意义的字段作为主键时,需要考虑是否存在这种可能性。

主键的选择

①编号作主键

此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,这在小型的项目中是推荐这样做的,因为这可以使项目比较简单化,但在使用中却可能带来一些麻烦,比如要进行“编号修改”时,可能要涉及到很多相关联的其他表,就像黎叔说的“后果很严重”;还有就是上面提到的“业务要求允许编号重复时”,我们再那么先知,都无法知道业务将会修改成什么?

②自动编号主键

这种方法也是很多朋友在使用的,就是新建一个ID字段,自动增长,非常方便也满足主键的原则,优点是:数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利;数字型的,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录(比如手动录入,或是用其他工具直接在表里插入新记录,或老系统数据导入)时,非常方便,不用担心主键重复问题。

缺点:其实缺点也就是来自其优点,就是因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其他系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的);如果其他系统主键不是数字型那就麻烦更大了,会导致修改主键数据类型了,这也会导致其他相关表的修改,后果同样很严重;就算其他系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个“o”(old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。

七鑫易维信息技术
2024-09-02 广告
一个表只能有一个字段做主键,但如果这个表没有主键,你又想找出惟一的记录,那么你可以使用多个字段组合成为主键来惟一标识一条记录。 你的问题: 一个表中只能有一个主键 (对) 是不是只能有一个字段为主键? (错,主键可由多字段组成)。 Play... 点击进入详情页
本回答由七鑫易维信息技术提供
匿名用户
2013-11-13
展开全部
不一定要的主键
主键一般用以保证数据的唯一性(主键是非空且不能重复的)
一般用在id列
例如学生表(student)里面有三列
name,sex,age
万一有几个同学是同一姓名同一性别,也同一年龄
那怎么区分他们呢
这时候主键的作用就出来了
你可以给表加一个id列
然后设为自动增长
那么个同学都能通过ID区分开来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-11-19 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨诗明大事9715
2018-03-08 · TA获得超过176万个赞
知道顶级答主
回答量:67.3万
采纳率:53%
帮助的人:3.5亿
展开全部
楼上的几位都解释了主键的作用,我主要说下设和不设有啥区别:
比如:
张三的身份证号为123456
李四的身份证号为012345
设置身份证号为主键后,那么数据库就约束你身份证号不能重复,不能为空,那么:
你向数据库表插入王五的身份证号为123456,则提示你主键不能重复之类的错误;
也许你要问,那就是保证不重复吗?主键可以保证不重复,并且不能为空,如果仅仅保证不重复的效果,可以只设置为索引就行了;
最后,主键可以是单字段主键,也可以2个或多个字段合并在一起形成联合主键。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式