我在数据库中有条目和关系,例如,我有一个与驾驶员关系的Vehicle数据库。当驱动器隶属于车辆时,它会在车辆历史记录中使用vehicle_id
和driver_id
创建一个会话。
但是当我删除这辆车时,我们要承认它是vehicle_id = 4
,它是最后一辆车,如果我创建其他车,它将自动将4归因于新车,因此旧车之间的所有关系现在将归因于新的...我不知道我是否足够清楚
那么,您认为我是否必须将车辆保留在数据库中,即使为了保留ID数而将其删除还是您有特定的解决方法?
谢谢
答案 0 :(得分:2)
将车辆ID设置为自动递增,因此当您有新车辆时,它将具有新ID。在表中为vehicle_active创建一个新列,并将其设置为1或0。
答案 1 :(得分:2)
如果ID列由数据库自动递增,则不会发生这种情况。
如果您是自己进行ID管理(例如new_id = highest_id + 1
),那不应该!
此外,您还应该研究数据库系统如何进行外键引用,这样就不能删除其他行所引用的行(这样就不会发生这种情况)。
答案 2 :(得分:1)
如果有机会再次使用该车辆,而不是删除该车辆,则可以选择保留该行并实现一个状态列。当用户“删除”车辆时,您可以更新状态。这也可以方便地报告,因为您不需要清除数据。
想象一个场景,您想知道本月哪些司机换了车。作为一个粗略的示例,您可以执行以下操作:
SELECT * FROM vehicles WHERE deleted_date BETWEEN xxx AND xxx AND vehicle_status = 'DELETED';
在现有查询中,您只需选择状态列!='已删除'的所有内容即可。
唯一的缺点是您必须存储其他数据,但是可以实施一个系统,在设定的时间段后从数据库中清除旧记录。