【问题标题】:How to store multiple items in a database column?如何在一个数据库列中存储多个项目?
【发布时间】:2013-04-28 21:07:40
【问题描述】:

在我的项目中,员工插入一个表格编号,选择客户订购的所有商品并将其保存到数据库中。我有三张桌子:

Employee(empId, firstname, lastname)
Orders(orderId,tableNum,empIDFK,itemIDFK,totalPrice) 
Item(itemId,itemName, itemPrice)

我的问题是,如果员工在订单中放置了多个项目,则只会将最后一个项目保存在 itemIDFK 列中。如何获取员工输入的所有项目的 id?

这里是一些示例代码,大部分按钮都有类似这样的代码:

 private void chickenbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                              
    // TODO add your handling code here:
     try{
     st = connection.createStatement();   
    String query;
    query = "SELECT itemName, itemPrice FROM item WHERE itemID = '14446'";
    String itemName = " ",itemPrice =" ";  

      ResultSet rs = st.executeQuery(query);

       if(rs != null){
        while(rs.next())
        { 
         itemName = rs.getString(1);
         itemPrice = rs.getString(2);
        }
     model.addRow(new Object[]{itemName, itemPrice});
      total+= Double.parseDouble(itemPrice);
       String format = formatter.format(total);
       totalField.setText(format);
       }

       //inserts corresponding item id in itemIDFK 
      String query2 = "Update orders SET itemIDFK = '14446' Where tableNum =  " + tableNum;
      ps= connection.prepareStatement(query2);
      ps.executeUpdate();
         } catch (SQLException ex) {}

【问题讨论】:

    标签: java mysql sql foreign-key-relationship


    【解决方案1】:

    在这种情况下,您要做的是添加另一个表,例如 OrderDetails,该表将具有:

    PK: Id
    FK: OrderId
    FK: ItemId
    

    因此,您可以将多个商品添加到订单中。在OrderOrderDetailsmany-to-many 之间会有一个one-to-manyOrderDetailsItems 之间

    【讨论】:

    • 有没有办法在MySql中指定一对多和多对多的关系?每个外键将引用什么?
    • 看看这篇文章,它展示了一个关于如何创建表关系的详细示例。 stackoverflow.com/questions/260441/…
    【解决方案2】:

    SOfanatic 的答案是正确的方法。如果由于某种原因您不能添加另一个表,那么itemIDFK 将需要保存一个分隔的项目列表,例如itemId;itemId;itemId(或itemiditemIditemId,如果 id 是固定宽度) - 问题在于这是 更难查询

    【讨论】:

      【解决方案3】:

      MySQL 确实有一种数据类型 Serial。因此,还有另一种方法可以实现多商品、不同数量商品的订单。

      可以实现一个Arraylist,序列化和反序列化数据进出单列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        • 1970-01-01
        相关资源
        最近更新 更多