gpt4 book ai didi

java - MySQL - 一个字段中的多个值或多对多关系?

转载 作者:行者123 更新时间:2023-11-29 20:09:24 33 4
gpt4 key购买 nike

让我们从上下文开始。我正在为自己编写一个小型应用程序,可用于在 MySQL 数据库中更改和创建产品。

每种产品都至少有一种生产方法,例如“锻造”、“焊接”或“机加工”(我的应用程序中还存在更多方法)。产品的生产方法可以是这些方法的任意组合。

该应用程序当前有一个下拉菜单,其中包含一个复选框列表,可供选择生产方法,并且生产方法通过文本字段显示。当我的应用程序显示生产方法时,我希望它们按字母顺序排序(不是按单击顺序排序,就像您第一次单击“焊接”时,这将是第一个值):

产品:“锻造 - 焊接 - 机加工”
产品 椅子:“焊接 - 锻造 - 机械加工”
产品椅子:“锻造 - 焊接 - 机加工”

当我的应用程序检索产品时,我还想将“锻造”、“焊接”和“机加工”方法检查为 true。

我是否应该使用MySQL产品表中的一个字段来保存方法组合的字符串(如上所示),并让我的应用程序在单击复选框时处理排序并将该字符串保存到产品中的这一字段表,
或者,
我是否应该在数据库中使用多对多关系,其中存在所有生产方法的表,并且我使用连接表将产品 (pID = 2) 与锻造 (mID = 1)、焊接 (= 2) 和加工 (= 3) 就像
pID - mID
2 - 1
2 - 2
2 - 3,
或者,
我应该使用像
这样的表格吗pID - 方法
2 - 锻造
2 - 焊接
2 - 机加工

就性能而言(大量产品和大量方法),什么是最明智的做法?每次应用程序加载不同的产品时执行一堆查询(这种情况经常发生),或者从产品表中执行一个查询并以这种方式加载方法(拆分字符串并将每个方法与 for 循环中的复选框进行比较)?

最佳答案

您应该将数据库设计为规范化的。它不一定是最快的选择,但绝对是最容易管理的。无论如何,您很可能想要生产方法表,因此多对多关系是一个自然的选择。它还使按生产方法过滤等任务变得轻而易举。您确实不想在服务器上解析字符串来实现此目的。

如果您需要更快的响应,您始终可以将这些连接的字符串预先计算到表中。只是不要将它们用作主要数据。

关于java - MySQL - 一个字段中的多个值或多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229513/

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