请问 sql 字段 可不可以 即是主键又是外键

请问 sql 字段 可不可以 即是主键又是外键,第1张

可以,这说明这两张表的主键相关联,只是那张是主表(就是该表的主键作为从表的外键),那张是从表(该表的主键同时也是外键),需要自己定义好。

CREATE TABLE `baidispatch_cost` (

`id` varchar(50) NOT NULL COMMENT 'id',

`belong` varchar(15) DEFAULT NULL COMMENT '设计交付日期',

primary key (`id`),

constraint `FK_DISPATCH_ID` foreign key (`id`) references `dispatch_order` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='成本表'

扩展资料:

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

参考资料来源:百度百科-数据库主键

首先明白什么是主键:唯一标示表中的某行数据。

1.无意义性:此处无意义是从用户的角度来定义的。这种无意义在一定程度上也会减少数据库的信息冗余。常常有人称呼主键为内部标识,为什么会这样称呼,原因之一在于“内部”,所谓内部从某种程度上来说就是指表记录,从大的范围来说就是数据库,如果你在设计的时候选择了对用户来说有意义的信息来作为主键,那么迟早会面对用户提出对这块信息进行更新的需求,那么你就违背了它应有的静态。

2.静态性:主键除了唯一地标识一条记录及外键的关联外,应不再考虑其他的意义,最理想的状态就是在产生后不再变动,所以在主键值产生后应考虑不对他进行更新等 *** 作。如果进行了更新 *** 作那么至少说明这块信息对于用户来说是有一定的意义,那么你就违背了应有的无意义性。(对数据进行整合等 *** 作时可能需要对主键进行处理,这样做是为了保证数据库的完整性——记录的唯一,不在此考虑范围之内。)

无意义性往往可以决定其静态性。

3.简短性:既包含主键组成字段数量要少,还包含主键中单个字段存储类型简短,一般采用整形;对于前者主要考虑的是外键关联的因素;对于后者主要考虑的是性能。主键的简短对表的关联便捷性及检索的性能有极大的帮助。

详细出处参考:http://www.jb51.net/article/30907.htm

用sql语句创建时,identity(1,1) 有这条或者类似的那个字段是主键。

或者在窗口中建表时,选择为主键的字段是主键喽

主键是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用于其他表的外键关联,以及本记录的修改与删除。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10828515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存