创建连接表问题!

Posted

技术标签:

【中文标题】创建连接表问题!【英文标题】:creating a join table problem! 【发布时间】:2011-06-04 01:26:57 【问题描述】:

我有 3 张桌子

客户、菜单和订单。

订单表假设连接客户表和菜单表,并包含两者的主键。这是我尝试在 phpmyadmin 上创建订单表的方法。

create table order(
customerID int not null,
itemID int not null,
primary key (customerID, itemID),
foreign key(customerID) reference customer(ID),
foreign key(itemID) reference menu(itemID)
) 

这不起作用。我做错了什么?!!

【问题讨论】:

您能继续发布所有三个表的 DDL 吗? 【参考方案1】:

order是保留字,换个名字试试,或者引用,比如

create table `order`( 
    customerID int not null,
    itemID int not null,
    primary key (customerID, itemID),
    foreign key(customerID) reference customer(ID),
    foreign key(itemID) reference menu(itemID) ) 

【讨论】:

如果我认为你想要,我建议使用非保留名称。 mysql 对此提供了引用解决方法,但并非所有 SQL 方言都提供。 哇,非常感谢你——成功了。我改用“购买”。此外,参考应该是“参考”。再次,非常感谢!【参考方案2】:

抱怨order 是保留关键字。用反引号包裹它,因为@TokenMacGuy 告诉你解决你的问题。 Here is a list of them

此外,作为一般规则,您可以像这样转换实体以避免出现问题,尤其是使用保留关键字时:-

a) 实体总是(在纸上)建模为单一的,因为它代表现实世界或问题域中的概念/资产/人。例如。订单、支票、学生、汽车

b) 它转换成的相应数据库表总是可以使用复数命名。逻辑是该表将包含该实体的许多实例。因此,订单、支票、学生、汽车

【讨论】:

以上是关于创建连接表问题!的主要内容,如果未能解决你的问题,请参考以下文章

生成迁移 - 创建连接表

在连接三个表时创建的视图,一个表与另一个表相似

如何使用 JPA 注释创建连接表?

如何在连接多个必须是 PIVOT 的表时创建临时表

PDman怎么连接数据库创建表

Oracle创建用户和表空间后在Navicat中看不到,也不能连接