此表包含用戶的照片(縮略圖和完整)。
大部分查詢都會有一個「WHERE user_id =?」條件。兩列作爲主鍵或一列作爲PK +索引?
CREATE TABLE photos (
"photo_id" serial, -- serial is postgres' autoincrement
"user_id" integer not null, -- foreign key to users table
"filename_thumbnail_50" varchar not null,
"filename_thumbnail_75" varchar not null, -- 75px x 75px thumbnail
"filename_full" varchar not null,
PRIMARY KEY ("photo_id", "user_id")
);
什麼是最好的設計和/或性能設計這個用例:
- 像上面例子中的兩列主鍵?
- 一個主鍵(photo_id)和user_id上的索引?
你擁有的兩列主鍵並沒有什麼意義,恕我直言。不應該是'(photo_id)'或'(user_id,文件名)'? –
對不起,我已更新我的示例,因此它有點複雜 – younes0
對於表中的每一行,每個列值都應該依賴於「密鑰,整個密鑰,除了密鑰外」。 「依賴於」表示「正確的值由......標識」。將「user_id」添加到串行列將打破第二部分;你的牌桌不會處於第二常態,並且會受到相關異常的影響。查看關於關係數據庫規範化的任何書籍或文章。 – kgrittn