gpt4 book ai didi

mysql - RDBMS、外键合并还是单独表?

转载 作者:行者123 更新时间:2023-11-29 09:04:28 25 4
gpt4 key购买 nike

我有一个 ai_order 表。

CREATE TABLE `ai_order`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL,
`quantity` INT(11) NOT NULL,
`number` VARCHAR(20) NOT NULL,
`addDate` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `orderProduct`(`product_id`,`number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

由于客户的订单包含许多具有数量的产品,这意味着为单个订单插入多行,例如订单包含 50 个产品,导致在 ai_order 表中创建 50 行。现在为了识别单个订单,我给出了一个数字字段,该字段将保存单个订单的唯一订单号(序列号),即它将按 number 字段对 order_id 进行分组。下面的表格演示了如何将数据存储在表中。

ai_order

将会有许多表将从该父表扩展。虽然一切都正确,但我看到的问题是 number 列一次又一次重复该值,考虑到我有 200 产品要列出,对于一个订单,我将不得不重复number 列值在所有 200 行中一次又一次地出现,这给我一种难看的感觉。

现在解决这个危机的方法是将订单编号存储在不同的表中。(虽然无法避免重复,但不是问题)。例如,如何从 ai_order 表中删除 number 列并以这种方式存储它。

CREATE TABLE `ai_order_number`(
`order_id` INT(11) NOT NULL,
`number` VARCHAR(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我想知道您如何处理这种方法?你会选择哪一个?第一个还是后面一个?任何改进建议将不胜感激。

谢谢。

最佳答案

我认为按照您的建议保留一个单独的表不是一个好主意,因为 order_number 与订单直接相关。

如果您仍计划保留不同的表格,请使用“add_date”和数字。我发现“add_date”比订单号更难看。

如果添加订单的精确时间没有用(通常是这种情况),您可以保留一个单独的表,其中包含 customer_idorder_number(主键) , 订单日期

关于mysql - RDBMS、外键合并还是单独表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com