我需要创建一个存储来自不同客户的“事件”的表格,每个事件都有一个 event_id 。 event_id对于特定客户端是唯一的,这意味着可以将event_id(整数)和客户端(varchar)的组合作为主键。我打算将此表用作使用hibernate的Java应用程序的数据提供程序。用例将添加事件,更新事件和处理事件以生成报告。
我想确保快速准确的更新,这需要获取确切的行并在休眠状态下更新它。
请建议什么是主键:
我很困惑是否使用auto_increment列创建 id 。
答案 0 :(得分:0)
根据JB Nizet的评论
首选非功能性,单列,纯技术,自动生成的主键。 因为您的应用程序的其余部分将能够通过单个数字ID而不是两个信息的组合来引用客户端事件,其中一个是文本的。因为如果稍后向事件的功能键添加第三个信息,或者更改文本客户端ID的值,则不必将具有外键的所有表更改为客户端事件表。因为通过单列访问事件,所以数字PK比通过复合文本访问它更快。因为Hibernate映射和使用它的代码会更容易编写等等。