此表包含用户的照片(缩略图和完整)。
大部分查询都会有一个“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