我有一个表“link_tabl”,其中我想通过id链接其他三个表。所以在每一行中我都有三元组(id_1,id_2,id_3)。我可以为三元组的每个元素创建一个列,一切都会好的。
但我想要更多:=)
我需要再尊重一个“维度”。有一个Algorthm创建三元组(表之间的链接)。该算法有时会输出不同的链接。
示例:
table_person代表一个人。 table_task表示任务。 table_locreüpresents位置。
所以ids(p,t,l)的三元组意味着:某个人在某个地方做过某事。
算法不会更改元组(人,任务)。给他们。算法输出元组(p,t)的位置l。但有时算法确定这种元组的不同位置。我想在表格中存储每个元组的最后10个三元组(作者,任务)。
最好的方法是什么?
我想到了类似的东西: 如果有一个元组(p,t)ALREADY存储在link_table中,则将该位置的id添加到该行的下一个空闲时隙(列)中。 如果已经有10个值(所有列都已满),则删除第一个值,将每个值从列i移动到列i-1,并将新值存储在最后一列中。 ELSE添加一个新行。
但我不知道这是不是一个好方法,如果是,如何实现......
拥有部分解决方案 我想通了,我可以制作两列。存储作者ID的Onw。一个存储任务ID。并通过
...
UNIQUE INDEX (auth_id, task_id)
...
我可以索引它们。所以现在我只需要弄清楚如何优雅地将值从列i移动到i-1。 =)
亲切的问候 Aufwind
答案 0 :(得分:1)
我会将算法的输出存储在行中,并带有日期指示符。仅考虑最后10条记录的要求听起来相当随意 - 我不会将其列入我的列布局中。它还使一些标准关系工具变得多余 - 例如,查询“人x和位置y存在多少个位置”无法通过“计数”回答,而是通过查看哪个列为空。
所以,我建议像:
personID taskID locationID dateCreated
1 1 1 1 April 20:20:10
1 1 2 1 April 20:20:11
1 1 3 1 April 20:20:12
可以通过在选择查询中使用“前10名”来强制执行“仅10”要求;如果有必要,你甚至可以在视图中嵌入它。