如何使用两个外键的两个主键创建表? [英] How do I create a table with a two primary keys of two foreign keys?

查看:308
本文介绍了如何使用两个外键的两个主键创建表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 创建表机器

Machine_ID int主键,
Machine_Name varchar(30)
Machine_Title varchar(30)

创建表Part b $ b(
Part_ID int主键,
Part_Name varchar(30),
Part_Description varchar(30)


//如何制作下面的表格?
创建表Machine-Part

)Machine_ID int外键引用(Machine.Machine_ID),
Part_ID int外键引用(Part.Part_ID)
Factory_Note varchar 30);



mysql抱怨语法有问题?

预期结果:有机器零件表使用机器ID& 'Part_ID'作为两个主键(都是外键)。

如果你分别地声明了这个约束(表级),它更有意义
$ b $ pre $ code创建表机器零件

Machine_ID int NOT NULL,
Part_ID int NOT NULL,
Factory_Note varchar(30)NULL,

PRIMARY KEY(Machine_ID,Part_ID),
UNIQUE INDEX(Part_ID,Machine_ID),
外键(Machine_ID)引用(Machine.Machine_ID),
外键(Part_ID)引用(Part.Part_ID)

链接表几乎总是需要一个反向索引

create table Machine
(
 Machine_ID int primary key,
 Machine_Name varchar(30)
 Machine_Title varchar(30)
)
create table Part
(
 Part_ID int primary key,
 Part_Name varchar(30),
 Part_Description varchar(30)
)

//How do I make this table below?
create table Machine-Part
(
  Machine_ID int foreign key references (Machine.Machine_ID),
  Part_ID int foreign key references (Part.Part_ID)
  Factory_Note varchar(30);
) 

Mysql complains there is a problem with syntax?

Desired Result: have Table 'Machine-Part' use 'Machine_ID' & 'Part_ID' as both primary keys (which are both foreign keys).

解决方案

If you declare the constraint separately (table level), it makes more sense

create table Machine-Part
(
  Machine_ID int NOT NULL ,
  Part_ID int NOT NULL ,
  Factory_Note varchar(30) NULL,

  PRIMARY KEY (Machine_ID, Part_ID),
  UNIQUE INDEX (Part_ID, Machine_ID),
  foreign key (Machine_ID) references (Machine.Machine_ID),
  foreign key (Part_ID) references (Part.Part_ID)
) 

Link tables almost always need a reverse index too

这篇关于如何使用两个外键的两个主键创建表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆