创建连接表问题!
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) 它转换成的相应数据库表总是可以使用复数命名。逻辑是该表将包含该实体的许多实例。因此,订单、支票、学生、汽车
【讨论】:
以上是关于创建连接表问题!的主要内容,如果未能解决你的问题,请参考以下文章