【发布时间】:2021-04-25 20:54:40
【问题描述】:
我正在寻找存储两个字段的组合(不是排列 - 顺序无关紧要)。例如,假设我有两个整数字段:A 和 B。我想存储组合 (1, 2)。这意味着如果我查找“1”,我应该看到 [2],如果我查找“2”,我应该看到 [1]。
我的第一个猜测是创建一个表如下:
CREATE TABLE RelatedIntegers (
A INT,
B INT,
PRIMARY KEY(A, B)
);
INSERT INTO RelatedIntegers VALUES (1, 2)
但是,完全有可能存储 (2, 1) 这将是一个重复的组合,而不是排列。此外,如果我只存储 (1, 2),这意味着我必须对 A 和 B 执行更复杂的查询,以确保获得所有必要的信息。
我看到的唯一方法是我需要存储每个排列,以便我可以对 A 执行快速查找,并让 B 包含我需要的任何值。但是,这也意味着我必须存储冗余信息以确保数据完整性。如果我需要存储冗余信息,建议使用什么方法来确保存储所有组合(并轻松删除)?我在考虑确保使用数据库的应用程序在插入时生成必要的排列。我的另一个想法是在每次插入/删除时使用数据库触发器,但我想这可能会更令人困惑。
【问题讨论】:
-
您是在询问如何查找和删除现有的重复排列或防止添加重复项
-
如何防止重复添加,如何高效查询表。如果不可能,那么最有效的方法是什么?
标签: sql combinations permutation