我是設計數據庫的新手。也許這是一個愚蠢的問題,請原諒我。因此,我正在爲用戶設計數據庫。用戶填寫註冊信息後,他將獲得唯一的收據編號。所以我的問題是自收到沒有。是唯一的,我可以將它用作Users表中的主鍵,還是應該堅持使用標準方法將userID分配給表中的每一行,並使用userID作爲主鍵?與主鍵混淆
與主鍵混淆
回答
如果您的收據沒有。夠複雜 - 使用數字和字符,或20個數字內置 - 更好地使用替代用戶ID
如果收到任何可以是簡單的整數,也可以從數據庫生成 - 更好地利用用戶名和它的值賦給ReceiptNo
如果ReceiptNo是簡單整數並且它標識用戶和唯一的用戶 - 將其用作PKey。
奧列格狗,感謝您的快速回復。我認爲使用自動遞增的用戶標識是更好的主意,因爲收據編號將是字母數字和8個字符。 – user1142462 2012-01-11 06:29:42
如果您的收據號碼中只包含整數話,可能可以使您的收據,沒有現場爲自動增加的編號,
收據編號將爲字母數字,可能爲8個字符。 – user1142462 2012-01-11 06:20:21
所以我認爲我應該堅持用戶ID作爲主鍵權利? – user1142462 2012-01-11 06:22:37
是的,在這種情況下, – mack 2012-01-11 06:55:14
一個表可以有多個鍵。如果收據編號是唯一的,並且您希望DBMS將該屬性的關鍵依賴性作爲數據完整性約束強制執行,那麼您應該將其設置爲關鍵字(由唯一性通過PRIMARY KEY或UNIQUE約束或任何機制來實現您的DBMS提供)。
指定任何一個鍵爲「主」鍵不是特別重要 - 或者至少它只是你想要的那麼重要。真正重要的是您選擇的全套關鍵字。任何關鍵的要求都是唯一性和不可約性。選擇鑰匙的明智標準還包括:熟悉,簡單和穩定
也許補充說,通常,替代品在熟悉度標準上得分非常接近於零,並且非替代品MIGHT在穩定性標準上的得分很差。 – 2012-01-11 15:30:29
- 1. 與$鍵混淆
- 2. 外鍵混淆
- 3. Git與上游主機合併 - 混淆
- 4. 與html2canvas混淆
- 5. 與Queryslice.setrange混淆
- 6. 與mysqli_fetch_array混淆
- 7. 與angularJS混淆
- 8. 與xpath混淆
- 9. 與proguard混淆
- 10. 與IDisposable混淆
- 11. 與Servlets混淆
- 12. 與CreatePolygonRgn混淆
- 13. 與BroadcastReceiver混淆
- 14. 與string.getBytes混淆()
- 15. 混淆兩個關鍵字:__name__與__main__
- 16. Cordova android 5.1.1 APK混淆與proguard混淆
- 17. Elasticsearch主節點混淆
- 18. django +與ORM混淆
- 19. 與混淆矩陣
- 20. .NET混淆與NHibernate
- 21. 與NSindexpathforselectedrow的混淆
- 22. Swift,與UIBarButtonItem混淆
- 23. 與const_cast相混淆
- 24. 與iframe api混淆
- 25. 與fork相混淆()
- 26. 與加密混淆
- 27. 與HTML5 FileReader混淆
- 28. 與Makefile的混淆
- 29. Python:與urljoin混淆
- 30. 與PHP混淆session_regenerate_id
這些收據是什麼? – simchona 2012-01-11 06:13:14
用戶*是通過他的收據號碼識別的?如在:他會保留這個號碼,直到時間結束,並且這個號碼不會被用於識別這個用戶以外的任何目的嗎?如果是,請繼續。如果不是,請使用滿足這些要求的單獨用戶標識。 – Tomalak 2012-01-11 06:15:08
就像用戶填寫信息時一樣,唯一的收據號碼被髮送到用戶的電子郵件。並使用該收據號碼,他可以查看他的訂單狀態。 – user1142462 2012-01-11 06:17:37