[英]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);
主鍵不是必需的,您的表也可以正常工作。
我幾乎總是使用主鍵的一些原因如下。
它們使您可以唯一地定位一行。 如果您有多行數據完全相同的數據,則將其刪除可能很繁瑣。
它們為表提供隱式排序。 如果要對數據庫進行故障排除,則按鍵順序會告訴您它們的創建順序。
最終,就存儲空間而言,PK占用的空間不會為數據庫帶來巨大的開銷。 擁有它不會有任何傷害,但是擁有它會有所幫助。
我認為不需要告訴您什么是主鍵以及它的用途。 看來您已經知道了,並弄清楚了結構。
關鍵是,如果您沒有任何其他依賴於該表的表,那么您的表設置就足夠了。 由於您已經在此處擁有一個UID列,我想說這是一個PK,因為它在存儲方面不會花很多錢,而且還可以幫助您對表進行排序(通過自動遞增整數),並且可以有選擇地用於將來的刪除和更新操作。
仍然無法弄清楚如何通過Last_timestp值刪除記錄...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.