2009-10-22 22 views

回答

5

我認爲人們用它來複制Oracle的SEQUENCE。基本上,他們希望他們在系統中創建的任何實體的單一唯一的標識符,因此他們有這樣的事情:

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等。

+0

THANKs AARON ..多數民衆贊成在一個可能的情況下...... – RameshVel 2009-10-22 14:16:18

1

可能是實用表中的SQL Server 2005 <檢查 約this blog post它。

無論如何,只有帶有標識列的表通常用於克服一些難以做到的SQL Server障礙或者減慢使用其他(即內置)方法的速度。

2

嗯,一個表是一個單一的列,這是一個身份,沒有更多 - 沒有多少用途。

我能想到的是:如果您需要多個表具有標識值,但不希望這些值彼此衝突,那麼您可以使用只有一列(標識)的集中表,這是用於生成數字。

2

從Oracle數據庫遷移時,您需要一種模擬Oracle序列的方法......具有單一標識列的表格是要走的路。

1

另一種用法也可以是布爾型性質,因爲單列pkey表中的鍵的存在表示對某些業務邏輯的真謂詞評估。

這意味着此特殊表中的pkey值可能是另一個表的外鍵。雖然我不確定是否會在另一張桌子上的某個位置上購買任何東西。

但作爲理貨或數字表,這絕對是一個好習慣。

2

該表可能作爲企業範圍的唯一ID生成器,其中所有應用程序(包括遺留)將作爲記錄。

4

如果你正在規範過去的第三個正態,你可能想要消除多個多對多關係到一個表。這是很難解釋沒有一個模式的例子,但我會給它一個鏡頭...

消除多個多對多的關係到一個單獨的表將需要使用多個表的共同代理人PK。 (這會給你一個多對多的連接,而不是每個表的連接)。在極端的情況下,你最終會得到一個單獨的列表,它不會爲其他表提供任何buta FK,它們可以用作純FK或PK。可以把它看作多個表,它繼承了來自單列父節點的多對多關係,但沒有別的。關於這一點的好處在於,單列表不會出現任何實際查詢,因爲您可以使用(繼承的)FK連接到它連接的多對多表。