1. 程式人生 > >postgresql 表不設定主鍵問題

postgresql 表不設定主鍵問題

由於多系統整合,需要將當前系統的資料庫表格修改為檢視的形式對映其他系統的表格。在做這項工作時需要匯入資料和修改資料在這個過程中我發現了一個大坑,其他系統表格居然都沒有主鍵。

(postgresql 使用pgadmin不能修改無主鍵的表資料,navicat 在批量複製資料時,也會因為表格沒有主鍵導致多行資料覆蓋,和複製失敗等情況,當前使用insert語句是沒有問題的 )

實在是想不明白當時哪位大神設計的這個資料庫,也想不明白表格為什麼不設定主鍵,而且基本上所有表都不新增主鍵。

注 : 若有大神知道資料庫表為什麼不設定主鍵,萬請告知,萬分感謝。

這裡說一下主鍵的作用,來闡述資料庫設計中表中需不需要主鍵(謹代表個人觀點 )

1)主鍵約束 包含 唯一約束和非空約束。主鍵能唯一表示了二維表中的唯一一行資料。

2)一般資料庫會使用主鍵來組織錶行資料,其他索引只是儲存了這個主鍵的索引位置,所以查詢的時候如果用到主鍵查詢排序應該更快。

3)只是postgresql沒有主鍵是存在一些很坑的錯誤,上面已經說了一下我遇見的問題。

4)主鍵能在一定程度上保證資料不重複,唯一性。

5)主鍵是作為刪除,更新最好的標示。

6)在某些資料庫表中要求必須需要主鍵,例如:mysql的innodb資料庫引擎 中必須有主鍵,不設定主鍵它會預設 設定主鍵

7)資料庫主鍵可以優化。(減少資料冗餘)