在Postgres中沒有主表的主鍵有什麼缺點嗎?由於所有數據都是無序存儲在堆中的,因此主鍵只是同時強制執行唯一鍵和索引的一種方式?還是有一個基本功能,主鍵提供在一個表中,而不是一個沒有主鍵的表?Postgres沒有主鍵缺點
回答
每Postgres的文檔(http://www.postgresql.org/docs/9.2/static/sql-createtable.html):
從技術上講,PRIMARY KEY只是UNIQUE和NOT的組合NULL,但將一組列作爲主鍵標識還提供關於模式設計的元數據,因爲主鍵意味着其他表可以依賴這組列作爲行的唯一標識符 。
從經驗來看,我創造了許多沒有它們的表格。沒有主鍵的最大缺點之一是你不能通過外鍵進行參照完整性檢查 - 因爲這種關係需要一個。我認爲一些複製解決方案還需要有一個主鍵,或者每行的單列標識符。
啊,關於複製問題的好處。這完全滑了我的腦海。雖然我在每一行中都有一個唯一的UUID,但我應該確保沒有PK不會成爲複製問題(沒有外鍵,因此這不是問題)。謝謝。 – AlexGad
另一個令人難以置信的問題是大多數ORM(例如Django)在處理沒有主鍵的表時遇到問題。所以,如果需要在桌面上放置一個UI,那麼對於任何正在工作的人來說,它可能會讓生活變得更加困難。這不是什麼大問題,但可能是一個考慮因素(取決於公司/團隊內的數據和發生的情況)。 –
外鍵約束要求在目標列上有一個'UNIQUE'索引。不一定是主鍵。 –
- 1. 在Postgres的一些主鍵缺少
- 2. Postgres主鍵Synchornized
- 3. 具有複合主鍵的優點和缺點...
- 4. Postgres的表沒有設置自動增量的主鍵
- 5. Symfony有沒有缺點?
- 6. 表沒有主鍵
- 7. 甲骨文批插入瓦特/沒有主鍵缺失插入
- 8. 外鍵和主鍵Postgres和索引
- 9. 有沒有像主鍵和輔助鍵?
- 10. 當主鍵沒有主鍵時,mysql主鍵重複輸入
- 11. 將外鍵綁定到非主鍵時是否有任何缺點?
- 12. 沒有主鍵的sqlite?
- 13. SQLite:主鍵沒有顯示
- 14. 沒有主鍵的表格
- 15. 表沒有主鍵c#
- 16. 沒有主鍵的Slickgrid/Dataview
- 17. 表沒有主鍵(MissingPrimaryKeyException)
- 18. 沒有主鍵休眠
- 19. 的MySQL沒有主鍵
- 20. 沒有主鍵的Rails表
- 21. NHibernate SaveOrUpdate沒有主鍵
- 22. LINQ DeleteOnSubmit沒有主鍵
- 23. 依賴於rowid而不是_id主鍵(SQLite)的優點/缺點
- 24. 對集羣表主鍵使用int或newsequentialid有什麼優點/缺點?
- 25. 表結構(缺少主鍵)
- 26. 節點Postgres模塊沒有響應
- 27. 外鍵沒有主鍵要參考
- 28. 沒有主鍵或代理鍵?
- 29. Postgres的 - 沒有
- 30. 鏈接setter:有沒有缺點?
如何處理更新表中沒有主鍵的記錄? – Olaf
不需要檢索單個行,從不更新行,只插入。儘管這些行具有單獨的身份(UUID),但它們只能在範圍內抓取。我在範圍上有索引,但如果可以避免的話,在唯一鍵上有一個索引沒有意義。 – AlexGad
我在問具體問題,因爲我來自SQL Server後臺並決定是在表上還是在堆表上使用聚簇索引,這是做出重要決定。對Postgres來說,這個決定似乎沒有意義,因爲數據總是無序地存儲在表中以開始。但是,我想確保在這個假設中我是正確的。在Postgres vs中PK有什麼好處,說一個獨特的約束和一個單獨的索引?有沒有區別,或只是提供這些功能的簡便方法? – AlexGad