【发布时间】:2011-09-27 17:32:00
【问题描述】:
我想知道如何为表中的每个 ID 存储 ID 索引列表。这些将有效地形成 ID 之间的“关系”。到目前为止,这是主表:
主表:
id、整数、主键
名称,变量
text_info_1, varchar
text_info_2, varchar
现在对于每一行,都会有一些其他行的 ID 列表,这将告诉我一行与下一行的关系。例如,ID #5 的行可能与 ID 6、7、9、25 等相关。
以下是我考虑过的选项:
创建一个新列作为文本字段并存储这些整数值的序列化列表。然后在我想要它们的时候反序列化。
创建一个名为“relations”的新表,其中包含列relation_id(int 自动增量主键)、name1、name2 [以及指定关系类型的可选其他字段,这很好]。
我觉得选项 1 有点小题大做。我以前做过,它可以工作,但也许选项 2 是更好的设计?
不过我担心速度。使用选项 1,我可以从 main WHERE id = $id 执行 SELECT 关系,然后反序列化结果并让我的数组带有整数索引。但是对于选项 2,我将不得不浏览一个大很多倍(10 倍或更多)的表,然后执行“SELECT name1, name2 FROM 关系”。
速度是我的首要任务。我不确定哪个更适合太空,尽管我很想知道。
那么我应该选择哪个选项?还有其他我没有考虑过的好选择吗?我也很感激关于数据库设计的一些好的一般性指针!
非常感谢。
【问题讨论】:
标签: mysql database arrays database-design