数据库设计查询

时间:2010-06-04 09:53:23

标签: database database-design

为了研究目的,我设计了一个数据库结构,用于收集有关汽车一段时间的数据。汽车的拥有者每个月都会输入大量关于汽车的相关数据,它的性能等等。但是,我现在必须处理汽车所有权转移的情况(可能不止一次),我想知道什么在数据库中处理这个的最好方法是。

如果转让汽车,之前的车主应该不再能够添加有关汽车的数据,但是他们仍然可以查看他们输入的数据,直到转移日期为止。新的所有者将能够从转移之日起输入有关汽车的数据。出于研究目的,我需要能够在这些转移的汽车记录之间加入数据并将它们合并为一组数据。

目前,数据库中的每个汽车记录都通过Cars表中的外键属于所有者。我现在正在考虑的是在汽车记录之间创建一个递归的父/子关系,其中一个汽车记录可能属于另一个汽车记录(例如car_id作为Car表中的外键)。如果汽车记录属于另一辆汽车记录,则表示转移。这允许我保留每个汽车记录的数据集(特定于其所有者),同时还将相关的汽车记录链接在一起。除此之外,我正在考虑添加一个Car_transfer表来记录有关传输的额外数据(可能只是实际的日期,因为前一个和新的所有者将从Car表中的owner_ids显而易见) - 添加一个date_transferred对于大多数记录,Car记录中的列可能基本上是多余的,所以我不确定这些数据是否值得一个新的关系表。

无论如何,我希望这是有道理的!我一直在寻找合理的解决方案 - 任何建议都会非常感激!

2 个答案:

答案 0 :(得分:2)

我会添加一张汽车所有权表。递归设计不太直观。

答案 1 :(得分:2)

这里不需要递归父/子,只是多对多关系

基本上你需要链接表[cars-owners]:

car_id, owner_id, ownership_date

所以你会有数据:

---------------
1, 2, 2009-01-01
1, 3, 2010-05-01
...

两辆不同日期的人拥有同一辆车。

相关问题