2012-01-11 208 views
2

我是設計數據庫的新手。也許這是一個愚蠢的問題,請原諒我。因此,我正在爲用戶設計數據庫。用戶填寫註冊信息後,他將獲得唯一的收據編號。所以我的問題是自收到沒有。是唯一的,我可以將它用作Users表中的主鍵,還是應該堅持使用標準方法將userID分配給表中的每一行,並使用userID作爲主鍵?與主鍵混淆

+0

這些收據是什麼? – simchona 2012-01-11 06:13:14

+2

用戶*是通過他的收據號碼識別的?如在:他會保留這個號碼,直到時間結束,並且這個號碼不會被用於識別這個用戶以外的任何目的嗎?如果是,請繼續。如果不是,請使用滿足這些要求的單獨用戶標識。 – Tomalak 2012-01-11 06:15:08

+0

就像用戶填寫信息時一樣,唯一的收據號碼被髮送到用戶的電子郵件。並使用該收據號碼,他可以查看他的訂單狀態。 – user1142462 2012-01-11 06:17:37

回答

0

如果您的收據沒有。夠複雜 - 使用數字和字符,或20個數字內置 - 更好地使用替代用戶ID

如果收到任何可以是簡單的整數,也可以從數據庫生成 - 更好地利用用戶名和它的值賦給ReceiptNo

如果ReceiptNo是簡單整數並且它標識用戶唯一的用戶 - 將其用作PKey。

+0

奧列格狗,感謝您的快速回復。我認爲使用自動遞增的用戶標識是更好的主意,因爲收據編號將是字母數字和8個字符。 – user1142462 2012-01-11 06:29:42

1

如果您的收據號碼中只包含整數話,可能可以使您的收據,沒有現場爲自動增加的編號,

+0

收據編號將爲字母數字,可能爲8個字符。 – user1142462 2012-01-11 06:20:21

+0

所以我認爲我應該堅持用戶ID作爲主鍵權利? – user1142462 2012-01-11 06:22:37

+0

是的,在這種情況下, – mack 2012-01-11 06:55:14

2

一個表可以有多個鍵。如果收據編號是唯一的,並且您希望DBMS將該屬性的關鍵依賴性作爲數據完整性約束強制執行,那麼您應該將其設置爲關鍵字(由唯一性通過PRIMARY KEY或UNIQUE約束或任何機制來實現您的DBMS提供)。

指定任何一個鍵爲「主」鍵不是特別重要 - 或者至少它只是你想要的那麼重要。真正重要的是您選擇的全套關鍵字。任何關鍵的要求都是唯一性和不可約性。選擇鑰匙的明智標準還包括:熟悉,簡單和穩定

+0

也許補充說,通常,替代品在熟悉度標準上得分非常接近於零,並且非替代品MIGHT在穩定性標準上的得分很差。 – 2012-01-11 15:30:29