【问题标题】:Does my MySQL design violate database rules?我的 MySQL 设计是否违反了数据库规则?
【发布时间】:2011-06-27 06:39:07
【问题描述】:

如果我在 MySQL 数据库中做正确的事情,我需要一个建议。我将这个名为 inventory 的数据库连接到一个 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 - 双倍
  7. q_pc - int(11)
  8. unit_price_pc - 双倍
  9. sub_total_pc - 双倍
  10. grand_total - 双倍
  11. recent_date_purchased - 日期
  12. last_date_modified - 时间戳

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

我打算这样做:

表名:orders

包括以下内容:

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

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

或者你有什么建议吗?任何建议将不胜感激..

提前致谢:)

【问题讨论】:

    标签: mysql mysql-management


    【解决方案1】:

    您的设计可以使用一些规范化,您有大量重复的数据,这与 MySQL 等关系数据库的整体理念背道而驰。

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

    【讨论】:

    • 值得注意的是,严格来说,不,您的设计不违反任何 MySQL 规则,甚至不违反数据库规则。你没有规范你的数据。但是,就避免异常的数据优化而言,您应该重新设计架构。
    【解决方案2】:

    items 表以及 ordersorder_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)
    

    这样重复数据就少了。

    【讨论】:

      【解决方案3】:

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

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

      当你写一个 JOINS 时,你需要使用 Alias 来识别而不是混淆

      【讨论】:

        猜你喜欢
        • 2018-07-03
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 2020-04-11
        • 2012-01-25
        • 1970-01-01
        • 2013-01-01
        相关资源
        最近更新 更多