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

时间:2011-06-27 06:39:08

标签: mysql mysql-management

如果我在MySQL数据库中做正确的事,我需要一个建议。我将这个名为库存的数据库连接到一个java应用程序,它包含一个名为 item 的表,这里有详细信息:

  1. id - int(11),AUTO_INCREMENT
  2. item_name - varchar(50)
  3. 类别 - varchar(25)
  4. q_box - int(11)
  5. unit_price_box - 双
  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 - 日期
  12. last_date_modified - 时间戳
  13. 我已经在库存应用程序的开发中使用它来存储库存,但我现在要做的是添加一个表来存储客户的订单。

    我打算这样做:

    表格名称:订单

    由以下内容组成:

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

      我的问题是:我是否违反任何MySQL规则,因为我使用相同的变量?

    13. 你有什么建议吗?任何建议都将受到高度赞赏..

      提前致谢:)

3 个答案:

答案 0 :(得分:3)

您的设计可能会使用一些规范化,您有大量重复的数据,这违背了MySQL等关系数据库的整体思路。

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

答案 1 :(得分:1)

订单表格中,您可以拥有Customer_Id并制作该外键。 在您为他/她创建订单之前,客户应该在那里。

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

当您编写JOINS时,您需要使用Alias来识别并且不要使用CONFUSED

答案 2 :(得分:1)

使用商品表格以及订单 order_items 表格可能会更好。

订单

id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)

<强> ORDER_ITEMS

orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)

这样可以减少重复的数据。