Sql server 使用单栏表格(标识)?
拥有单列表(标识列)的目的是什么?有好的用例可用吗 这真的是一种好的做法吗?可能适用于SQL Server<2005中的实用程序编号表。 查一查Sql server 使用单栏表格(标识)?,sql-server,identity-column,Sql Server,Identity Column,拥有单列表(标识列)的目的是什么?有好的用例可用吗 这真的是一种好的做法吗?可能适用于SQL Server
无论如何,只有标识列的表通常用于克服SQL Server的一些障碍,这些障碍要么难以克服,要么使用其他(即内置)方法会降低速度。Hmm只有标识列的表,仅此而已,没有其他用途
我能想到的一点是:如果您需要多个表来具有标识值,但不希望这些值相互冲突,那么您可以使用一个只有一列(标识)的集中表,该表用于生成数字。从Oracle数据库迁移时,您需要一种方法来模拟Oracle序列……使用单标识列的表是一种方法。另一种用法也可能是布尔性质的,因为单列pkey表中的键表示对某些业务逻辑的真正谓词求值 这意味着这个特殊表中的pkey值可以是另一个表的外键。虽然我不确定这是否能在另一张桌子上买到超过一点的东西
但作为一个理货表或数字表,这绝对是一个很好的做法。我认为人们用它来复制Oracle的序列。基本上,他们希望在系统中创建的任何实体都有一个唯一的标识符,所以他们有如下内容:
CREATE PROCEDURE dbo.GenerateIdentifier
@Identifier INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.SingleColumnTable DEFAULT VALUES;
SET @Identifier = SCOPE_IDENTITY();
END
GO
现在,每当他们想要添加新联系人、客户或订单等时,他们首先调用此过程并获取新的标识符。然后,系统中只有一个实体的标识符=1或2等。该表可能用作企业范围的唯一id生成器,其中所有应用程序(包括遗留应用程序)将依赖于记录系统。如果要规范化超过第三个正常值,则可能需要消除单个表的多对多关系。这是很难解释没有模式的例子,但我会给它一个镜头 要消除与单个表的多对多关系,需要使用多个表共用的代理PK。(这将为您提供一个多对多联接,而不是每个表一个联接。)在极端情况下,您最终得到的是一个单列表,它只向其他表提供一个FK,其他表可以用作纯FK或PK。可以将其视为多个表从单列父级继承多对多关系,而不是其他任何关系。这样做的好处是,单列表从任何实际查询中删除,因为您可以使用(继承的)FK连接到它所连接的多对多表