簡體   English   中英

沒有主鍵的數據庫表

[英]Database Table without Primary Key

我有一個用於留言板的桌子(見下文)。 我知道最佳實踐決定創建Primary Key但是我看不出要創建Primary Key理由。 我將主要在( UID, GRP_ID )上進行搜索UID, GRP_ID並在此上創建索引。 刪除將基於Last_timestp 在這種情況下,應該有PK嗎?

CREATE TABLE CP.CHAT
(UID BIGINT NOT NULL, GRP_ID BIGINT NOT NULL, CHAT VARCHAR(200) NOT NULL, LAST_TIMESTP TIMESTAMP);

主鍵不是必需的,您的表也可以正常工作。

我幾乎總是使用主鍵的一些原因如下。

  1. 它們使您可以唯一地定位一行。 如果您有多行數據完全相同的數據,則將其刪除可能很繁瑣。

  2. 它們為表提供隱式排序。 如果要對數據庫進行故障排除,則按鍵順序會告訴您它們的創建順序。

最終,就存儲空間而言,PK占用的空間不會為數據庫帶來巨大的開銷。 擁有它不會有任何傷害,但是擁有它會有所幫助。

我認為不需要告訴您什么是主鍵以及它的用途。 看來您已經知道了,並弄清楚了結構。

關鍵是,如果您沒有任何其他依賴於該表的表,那么您的表設置就足夠了。 由於您已經在此處擁有一個UID列,我想說這是一個PK,因為它在存儲方面不會花很多錢,而且還可以幫助您對表進行排序(通過自動遞增整數),並且可以有選擇地用於將來的刪除和更新操作。

仍然無法弄清楚如何通過Last_timestp值刪除記錄...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM