非常喜欢这个脚本的帮助...一切顺利:创建数据库并创建Catergory,Product_Has_Suppiers和Product表。当我尝试执行供应商时,创建表格'声明它返回1215错误'无法添加外键约束'。
-- Create database
Create database if not exists FinalExam;
-- Use Database
Use FinalExamReview;
-- Create table
Create table if not exists Category(
Cat_id int primary key,
`name` varchar(50));
Create table if not exists Product_Has_Suppliers(
Product_Product_ID int,
Suppliers_Supplier_Code int,
Constraint PHS_Keys Primary key (Product_Product_ID,
Suppliers_Supplier_Code));
Create table if not exists Product(
Product_ID int auto_increment,
`Name` varchar(25) not null,
Price decimal(4,2) not null,
decription varchar(45),
last_update timestamp not null,
Category_Cat_ID int,
Foreign key (Category_Cat_ID) References Category(Cat_ID),
Foreign key (Product_ID) References
Product_Has_Suppliers(Product_Product_ID));
Create table if not exists Suppliers(
Supplier_Code int auto_increment,
`Name` varchar(45),
city varchar(25),
state char(2),
foreign key (Supplier_Code) References
product_has_suppliers(suppliers_supplier_code));
答案 0 :(得分:0)
这可以解决您的错误:
part1
SQL小提琴是here。
你似乎没有理解什么?
首先,Create table if not exists Categories (
category_id int primary key,
name varchar(50)
);
Create table if not exists Products (
Product_ID int auto_increment primary key,
Name varchar(25) not null,
Price decimal(4,2) not null,
decription varchar(45),
last_update timestamp not null,
category_id int,
Foreign key (category_id) References Categories(category_id)
);
Create table if not exists Suppliers (
Supplier_Id int auto_increment primary key,
Name varchar(45),
city varchar(25),
state char(2)
);
Create table if not exists Product_Has_Suppliers(
Product_ID int,
Supplier_Id int,
Constraint PHS_Keys Primary key (Product_ID,
Supplier_Code),
Foreign key (Product_ID) References
Products(Product_ID),
foreign key (Supplier_Id) References
Suppliers(Supplier_Id)
);
和Suppliers
是实体。实体具有主键,通常是自动递增的值。您将这些列定义为外键。但主键是唯一标识每一行的内容。
其次,Products
是联结表(又名“关联”表)。它将两个表与多对多关系链接起来(产品有多个供应商,供应商提供多个产品。它应该与其他表有外键关系。
当我参与其中时,我做了一些我认为最佳做法的其他更改:
Product_Has_Suppliers
。_id
子句 - 例如。如果您遵循这些规则,那么代码就是自我记录的。您可以查看一个表,只需知道外键所指的名称即可。