我有一个表,需要每一行存储相同类型的行的有序集合。
例如,我正在想象类似的东西:
class blah
{
float yetMoreData;
};
class foo
{
int data;
String moreData;
blah[] anOrderedCollectionOfBlahClasses;
};
实现此目标的最佳方法是什么?
最佳答案
您希望 Blah
和 Foo
是单独的表,其中 Blah
与 Foo< 具有多对一关系
。 Blah
表中的记录应该有一个外键 foo_id
,标识它们的父 Foo 记录。 Blah
还有一个 index_in_array
属性,允许对结果进行排序。
CREATE TABLE Foo (
id BIGINT,
data INT,
moreData CHAR(50)
);
CREATE TABLE Blah (
id BIGINT,
yetMoreData DOUBLE,
foo_id BIGINT,
index_in_array INT
);
如果你想获取给定 Foo
的所有 Blah
(例如,ID 为 5 的 Foo
),请使用:
SELECT * FROM Blah
WHERE Blah.foo_id = 5
ORDER BY Blah.index_in_array;
如果您要对记录进行排序,通常它不应该是任意的(除非该任意顺序是由用户专门选择的,例如,对待办事项列表中的项目进行排序)。通常,您会根据数据的某些“自然发生的”属性进行排序,例如添加日期或按名称的字母顺序等。
N.B.:这个答案是伪代码 SQL——确保在将它扔到脚本中之前使其适应特定的数据库语法。 (不要忘记添加一些键和索引!)
关于sql - 什么相当于 SQL 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10748098/