首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的MySQL设计是否违反了数据库规则?

我的MySQL设计是否违反了数据库规则?
EN

Stack Overflow用户
提问于 2011-06-27 06:39:07
回答 3查看 151关注 0票数 3

如果我在MySQL数据库做了正确的事情,我需要一个建议。我正在将这个我命名为inventory的数据库连接到一个java应用程序,这个数据库由一个名为item的表组成,下面是详细信息:

  1. id - int(11),AUTO_INCREMENT
  2. item_name - varchar(50)
  3. category - varchar(25)
  4. q_box - int(11)
  5. unit_price_box - double
  6. sub_total_box - double
  7. q_pc - int(11)
  8. unit_price_pc - double
  9. sub_total_pc -double
  10. grand_total - double
  11. recent_date_purchased - date
  12. last_date_modified -时间戳

在开发库存应用程序时,我已经使用它来存储库存,但我现在要做的是添加一个表,该表将存储来自客户的订单。

我打算这样做:

表名:orders

其中包括以下内容:

  1. order_id - int(11),AUTO_INCREMENT
  2. item_name - varchar(50)
  3. category - varchar(25)
  4. q_box - int(11)
  5. unit_price_box - double /这是每个box
  6. sub_total_box - double
  7. q_pc - int(11)
  8. unit_price_pc - double //的零售/批发价格。pc
  9. sub_total_pc - double
  10. grand_total - double
  11. customer_name - varchar(50)
  12. last_date_modified -时间戳的零售/批发价。

我的问题是:由于使用相同的变量,我是否违反了MySQL规则?

或者你有什么建议?如有任何建议,将不胜感激。

(预先谢谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-27 06:46:37

您最好使用items表以及ordersorder_items表。

命令

代码语言:javascript
复制
id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)

order_items

代码语言:javascript
复制
orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)

这样,重复的数据就更少了。

票数 1
EN

Stack Overflow用户

发布于 2011-06-27 06:44:09

您的设计可以使用一些规范化,您有很多重复的数据,这违背了关系数据库(如MySQL )的整个概念。

http://www.devshed.com/c/a/MySQL/An-Introduction-to-Database-Normalization/

票数 2
EN

Stack Overflow用户

发布于 2011-06-27 06:46:20

order表中,您可以拥有Customer_Id并生成那个外键。因为客户应该在您为他/她创建订单之前就在那里。

不,如果使用相同的变量,就不会违反MYSQL的规则,

当您编写一个联接时,您需要使用别名来识别,而不是混淆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6489379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档