日期:2014-05-17  浏览次数:20472 次

菜鸟的问题:什么是联合主键?
小弟在这里请教各位大侠:什么是联合主键(5分)?他是有什么作用的,能举出一个实际应用的例子吗?(10分)怎么建立联合主键在sql2005中(5分)

------解决方案--------------------
联合主键,就是用多个列来做主键.?

作用.
如一个关系模式
 学生成绩(学号,课程号,成绩)
那学号和课程号就可以做为联合主键.
因为学号和课程号决定了成绩.也就是说.你要知道成绩..你就要知道学号,知道学号,但还不能知道某一科的成绩.还要知道课程号.
所以函数依赖关系是{学号,课程号}->{成绩}

alter table tb
add constraint PK_ID primary key(学号,课程号)
go
------解决方案--------------------
一个确定不了唯一,需要多个组合来确定唯一。
------解决方案--------------------
联合主键就是表中2个或者2个以上的字段做为这个表的主键,通常多对多的关系表中使用联合主键.例如有表学生,表课程,另外一个表选课,选课表用来记录每个学生所选的课程,这个选课表就可以用联合主键.
SQL 2005中可以用
SQL code

CREATE TABLE [学生](
    [学生ID]   [int] NOT NULL,
    [学生姓名] [varchar(20)] NULL,
 CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED 
(
    [学生ID]
)
)

CREATE TABLE [课程](
    [课程ID] [int] NOT NULL,
    [课程名称] [varchar(50)] NULL,
 CONSTRAINT [PK_课程] PRIMARY KEY CLUSTERED 
(
    [课程ID]
)
)

CREATE TABLE [选课](
    [学生ID] [int] NOT NULL,
    [课程ID] [int] NOT NULL,
 CONSTRAINT [PK_选课] PRIMARY KEY CLUSTERED 
(
    [学生ID],
    [课程ID]
)
)