主键有多个条目

时间:2018-10-02 13:19:19

标签: java mysql database

我正在研究这个项目,其中我需要为一个主键添加多个条目。我知道使用主键只允许一行,但是我需要多个条目。例如:-

具有customer_id(主键)001的客户希望一次购买两本书的“ _”数量。由于customer_id是主键,因此后端有三列:customer_id,book_name,数量。我该如何实现? 该表如下所示:

customer_id book_name qty

001 Java 2

输入第一行详细信息后,由于出现重复的主键错误,我无法输入第二行。

我的错误与餐厅管理系统中的错误相关,因为我无法从table_no接受多个订单,因为table_no是主键。

共有三个表:起动器,主菜,饮料。

table_no(通用属性),开胃菜/主菜/饮料,数量。

table_no是入门表中的主键,而main_course和Drinks表中的外键。我只能在每个表中为table_no说1添加一行数据。 现在我不能在同一表的下一行中添加更多数据,否,因为发生重复错误(由于主键)。

对于我的问题结构不明确,我感到抱歉。谢谢。

我对此表单的设计

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您的数据库架构需要重新评估。

您只能有一个客户(客户实体) 一个客户可以有多个订单(订单实体)

customer(
   customer_id PRIMARY KEY auto_increment,
   customer_name VARCHAR
   /* OTHER CUSTOMER SPECIFIC DETAILS */
)

book(
   book_id PRIMARY KEY auto_increment,
   book_name VARCHAR,
   book_isbn VARCHAR
   /* OTHER BOOK SPECIFIC DETAILS */
)

customer_order(
    order_id PRIMARY KEY auto_increment,
    customer_id FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
)

customer_order_items(
    item_id PRIMARY KEY auto_increment,
    customer_order FOREIGN KEY(customer_id) REFERENCE customer_order(order_id)
    book_id FOREIGN KEY(book_id) REFERENCE book(book_id)
    quantity INT
)

因此,一个客户可以有很多订单,一个订单可以有很多项目,而订单项只能有一个项目/每本书。

主键必须唯一,并且只能在一个表中使用一次,但是可以多次引用。