我开始设计一个跟踪系统事件的数据库,通过一些在线教程,一些简单的例子首先将自动递增ID指定为主键。我查看了我的数据库,我真的不需要ID。在我的所有列中,时间戳和设备ID是共同标识唯一事件的两列。
我的程序现在所做的是在过去的x分钟内从系统日志中提取一些事件,并将这些事件插入数据库。但是,过去我可能会过多地说事件与数据库中已有的事件重叠。正如我之前提到的,时间戳和设备ID是唯一标识事件的两个字段。我的问题是,我应该使用这两个字段作为我的主键并使用" Insert ignore
"从现在开始,我可以避免重复记录吗?
答案 0 :(得分:1)
优良作法是永远不要将您的业务价值作为表格的主键,并始终使用合成,例如自动增量,这个值。当业务需求发生变化时,您将在以后使您的生活更轻松:)
我们目前正在努力应对这种情况。将业务价值列作为主键2年,现在痛苦地引入自动增量列。
答案 1 :(得分:0)
将来可能需要使用其他表中的外键来链接两个表之间的某些行。使用单列主键更容易 但是如果你现在不需要它 - 不需要为索引创建特殊列。将来可以更改表以添加具有自动增量的列并将主键移动到其中。