我需要创建一个数据库设计,其中bar或事件所有者(admin-table因为他们拥有配置文件)向用户发送警报。
我想创建一个“ALERT”表,但很难决定使用哪个主键。
我想添加一个至少包含admin_ID(PFK),user_ID(PFK)的复合键,我想在主键上添加日期和时间戳,以指示管理员可以发送许多警报(通知),但只有1某个时间点。
但是,从这个帖子:Timestamp as part of composite primary key?,我了解到我不应该使用时间戳
顺便说一句,还没有确定我们将在这一点上使用什么数据库软件。
我有时会倾向于快速移动到自动增量键。我从来没有注意到这个问题(在Access中),但是根据我的阅读,这可能并不总是最有意义的事情,因此我向专业人士提出这个问题。
我只有一次机会以正确的方式做到这一点,使后端基本正确
你对此有何看法?
答案 0 :(得分:6)
对于PK用什么问题,你会得到很多热烈的争论。纯粹主义者会告诉你,你永远不应该使用自动增量键(假设是SQL SERVER)。在真正的战壕中的人会告诉你他们作为PK(在大多数情况下)完全没问题,并且具有一些真正的优势。
我不会试图以某种方式说服你。但我会告诉你我的经历。我已经开发了25年的软件,并且大部分时间都在使用RDBMS(主要是SQL Server)。就个人而言,我发现自动增量PK非常宝贵,99.99%的时间永远不会考虑使用其他任何东西。为什么呢?
这种PK可能有一个很大的缺点。如果您必须将行从一个数据库合并到另一个数据库,则可能会遇到PK值冲突。但是,也有办法解决这个问题。当然,自动增量值也没有真正意义。但那没关系。其目的是提供独特性。
这是一个完美的解决方案吗?不。而其他人则不同意它们的使用。但是,对于大多数高端和关键业务项目而言,它们对我来说非常有效。
答案 1 :(得分:0)
您始终可以选择使用UUID(http://en.wikipedia.org/wiki/Universally_unique_identifier)作为数据库主键。
所有主要的编程语言都支持它和IMO它是一种选择,可能虽然不是最好的,因为它的效率很低。
答案 2 :(得分:0)