用于为一张表到多张表关系创建 ID 的表

Jas*_*ley 2 database-design sql-server relational-theory

我有几个表将代表一个可以评论的对象。我想将所有评论存储在一张表中。为了将其他表与评论相关联,我想为每个表添加一个 CommentParentId 列。该列需要在与评论表相关的所有表中都是唯一的,所以我正在考虑创建一个表,CommentParents,它只有一个 Id 列,以便让 DB 处理生成 Id。例如:

注释

编号
标题
正文
用户
日期
CommentParentId

帖子

编号
标题
正文
用户
日期
CommentParentId

图片

ID
标题
用户
文件
日期
CommentParentId

用户

Id
名称
电子邮件
DateJoined
CommentParentId

评论家长

ID

因此,该表将仅用于创建新的 Id。有没有另一种方法可以做到这一点?有哪些优势?

我正在使用 SQL Server 2014

小智 5

如果这是 CommentParents 表的唯一目的,您可以利用序列对象来促进生成 ID 的机制。有关更多详细信息,请查看TechNet SQL Server 2014 序列文档的 TechNet 文档。这个序列对象会做而您当前的表不能做的是允许您提前获取一个值并将其分配给一个变量,而无需担心执行 INSERT/SELECT SCOPE_IDENTITY() 过程。此处的优势在于,由于需要维护元数据开销,SQL Server 对 Sequence 对象进行缓存,因此您当前的设计在大规模上会崩溃。