我想知道如何在表中存储每个id的id索引列表。这些将有效地在id之间形成“关系”。到目前为止,这里是主桌:
主表:
ID,整数,主键
名称,varchar
文本信息,varchar
文本信息2,varchar
现在,对于每一行,将有一些其他行的id列表,它将显示一行与下一行的关系。例如,id为5的行可能与ids 6、7、9、25等相关。
以下是我考虑过的选择:
创建一个新列作为文本字段,并存储这些整数值的序列化列表。那就在我需要的时候把它们拆开。
创建一个名为“relations”的新表,其中包含列relationshid(int auto increment primary key)、name1、name2,[以及指定关系类型的可选其他字段,这很好]。
我觉得方案一有点老套。我以前做过,而且很管用,但也许选项2是更好的设计?
不过,我担心速度。使用选项1,我可以从main的id=$id中选择关系,然后取消结果的序列化,并使数组具有整数索引。但是对于选项2,我将不得不浏览一个大很多倍(10倍或更多)的表,并执行“从关系中选择name1,name2”。
速度是我的首要任务。我不知道哪一个更适合空间,不过我很想知道。
那么我应该选择哪一个呢?还有其他我没考虑过的好选择吗?我也会感谢一些关于数据库设计的好的通用指针!
多谢。
最佳答案
第二种选择更好。如果你想在数据库设计方面做得更好,你应该阅读数据库规范化。遗憾的是,我使用的所有材料都不是英文的。这个wikipedia link
可能是个开始。
表关系:
relation_id (int auto increment primary key)
id_one (int)
id_two (int)
...
不是在relations表中存储名称,而是存储id。
关于mysql - MySQL数据库设计问题-存储索引列表/数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6564767/