首页 > 解决方案 > 主键的多个条目

问题描述

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

具有 customer_id(primary key) 001 的客户想要一次购买两本书的“_”数量。由于customer_id是主键,后端有三列:customer_id、book_name、quantity。我如何实现这一目标?该表如下所示:

customer_id book_name 数量

001 爪哇 2

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

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

共有三张桌子:starters、main_course、drinks。

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

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

我很抱歉我的问题结构不明确。谢谢你。

我对这个表格的设计

在此处输入图像描述

标签: javamysqldatabase

解决方案


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

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

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
)

所以一个客户可以有很多订单,一个订单可以有很多商品,而订单商品只能有一个商品/书。

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


推荐阅读