我的MySQL设计是否违反了数据库规则?
我需要一个建议,如果我在MySQL数据库做正确的事情。我正在将这个名为inventory的数据库连接到一个java应用程序,它由一个名为item的表组成,下面是详细信息:我的MySQL设计是否违反了数据库规则?,mysql,mysql-management,Mysql,Mysql Management,我需要一个建议,如果我在MySQL数据库做正确的事情。我正在将这个名为inventory的数据库连接到一个java应用程序,它由一个名为item的表组成,下面是详细信息: id-int(11),自动递增 项目名称-varchar(50) 类别-varchar(25) q_框-int(11) 单价箱双倍 子项总计框-双倍 q_pc-int(11) 单价/pc双倍 小计总pc双倍 总计双倍 最近购买日期-日期 上次修改日期-时间戳 在库存应用程序的开发中,我已经在使用它来存储库存,但是我现在想做的是
id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)
orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)
其中包括以下内容:
提前感谢:)您的设计可能需要一些规范化,您有大量重复的数据,这与关系数据库(如MySQL)的整体理念背道而驰
在订单表中,您可以拥有客户Id并生成外键。 作为客户,在您为他/她创建订单之前,他/她应该在场 不,如果使用相同的变量,就不会违反MYSQL的规则
编写联接时,需要使用别名来识别,不要混淆您最好使用项目表,以及订单和订单项目表 订单
id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)
orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)
订购商品
id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)
orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)
这样就减少了重复数据。值得注意的是,严格来说,您的设计没有违反任何MySQL规则,甚至没有违反数据库规则。您不必规范化数据。然而,为了避免异常,在数据优化方面,您应该重新设计您的模式。