我在数据库中建了两表怎么用联合主键连起来啊

我在数据库中建了两表怎么用联合主键连起来啊,第1张

create table a

(

a int primary key,

b int not null unique

)

;

注:not null unique相当于主键,这样就形成了复合主键

方法一:创建表之后,alter table table_name add primary key(字段1,字段2)

方法二:CREATE TABLE 表名 (字段名1 Int Not Null, 字段名2 nvarchar(13) Not Null 字段名3………… 字段名N…………) GO ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ( [字段名1], [字段名2] ) GO

方法三:建表后,右键-->设计,选中作为符合主键的列,选中之后右击-->设为主键

1表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键。

2、外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键

Reports表的主键 Sno,Tno,Cno

Sno关联StudentsSno,

Tno关联TeachersTno,

Cno关联CoursesCno

可以

第一张表JK_USE用UseId属性作主键

第二张表JK_INFO用UseId属性作外键

这样就可以将这两个表关联上了

第一张表JK_USE定义主键时如下:

PRIMARY

KEY(UseId)

第二张表JK_INFO定义外键时如下:

FOREIGN

KEY(UseId)

REFERENCES

JK_USE(UseId)

一个表只能有一个字段做做主键,但如果这个表没有主键,你又想找出惟一的记录,那么你可以使用多个字段组合成为主键来惟一标识一条记录。

你的问题:

一个表中只能有一个主键 (对)

是不是只能有一个字段为主键 (错,主键可由多字段组成)

联合主键是有着特殊的需求的。

建表的时候创建

Create Table 表名 (字段名1 Int Not Null,

字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),

字段名3…………

字段名N………… )

或者

建表之后修改表结构

ALTER TABLE 表名 WITH NOCHECK ADD

CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED

(

[字段名1],

[字段名2]

)

根据你的提问,我认为你所说的是物理主键和逻辑主键的概念

一般所言的数据库中的主键是物理主键,他可能在系统中由数据库自动生成,比如一个32位长的随机字符串

而逻辑主键一般是用来表示一个包含确切意义的并唯一的键值,使用者可以根据逻辑主键的值清晰的了解到一些信息,但这些信息从物理主键是无法了解的

你上面的表里是打算用逻辑主键当物理主键用这样做可以,但不推荐

一般的做法,尤其在大型项目中建议使用物理主键,该主键交由数据库自动生成并使用自己的逻辑主键,需要在程序中判断自己逻辑主键的唯一性,当然如果要求不高的系统可以不做判断

优点,在数据库迁移等过程中,可最大可能的保护你数据的完整性,比如你从一个ORACLE数据库移动到SEQ SERVER数据库时,可能物理主键会存在这样或那样的问题,这时你可以选择放弃原有的物理主键,只移动数据内容并生成新的物理主键

还有点建议,在程序中使用的时候,建议使用物理主键来关联你的数据内容~

答题完毕,希望对你有所帮助

以上就是关于我在数据库中建了两表怎么用联合主键连起来啊/全部的内容,包括:我在数据库中建了两表怎么用联合主键连起来啊/、如何在sqlserver数据库表中建立复合主键、SQL中一个表中有几个外键,它们共同组成它的主键,这什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9402722.html

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

发表评论

登录后才能评论

评论列表(0条)

保存