java - 主键的多个条目
问题描述
我正在做这个项目,我需要为主键添加多个条目。我知道使用主键只允许一行,但我需要多个条目。例如:-
具有 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 添加一行数据。现在我不能在同一个表的下一行中添加更多数据,因为发生重复错误(由于主键)。
我很抱歉我的问题结构不明确。谢谢你。
我对这个表格的设计
解决方案
我认为您的数据库架构需要重新评估。
您只能有一个客户(客户实体) 一个客户可以有多个订单(订单实体)
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
)
所以一个客户可以有很多订单,一个订单可以有很多商品,而订单商品只能有一个商品/书。
主键必须是唯一的,并且只能在单个表中使用一次,但可以多次引用。
推荐阅读
- c# - 为什么数据不显示?在表中
- arrays - 删除数组的一个元素
- wordpress - google recaptcha v3 恢复密钥
- django - 在 django 3.2.4 中运行 django-simple-buefy
- vue.js - Vue 3 - 如何在设置中分派到 Veux 商店
- crystal-reports - SAP Crystal Report:子报表未显示生产中的数据
- reactjs - React ts:如何检查ttf中的字符是否存在?
- android - 如何在 android studio 应用程序中显示谷歌帐户信息
- node.js - 在 Node.js 12.16.3 中出现错误,但在构建时在 Node.js 12.17.0 中没有。为什么是这样?
- node.js - mapbox 无法验证电子邮件