最好使用URL(长字符串)作为主键,还是使用较短的串行整数主键?

时间:2011-03-25 21:16:36

标签: sql postgresql primary-key

说我在PostgreSQL中存储网页。使用网页的URL作为主键或创建更简洁的SERIAL整数主键更方便吗?这种情况的推荐方法是什么?

3 个答案:

答案 0 :(得分:4)

您出于什么目的存储网页?

似乎缓存网页将取决于您缓存它们的原因。首先想到的是URL可以改变。您是否希望您的记录更改它的主键?或者新网址是否会成为新记录?

答案 1 :(得分:1)

除了少数例外,拥有它几乎总是更好,这样PK在数据库中对该行的引用(即代理键)之外没有任何意义。然后,如果您愿意,可以在URI字段上添加唯一约束。如果不出意外,它会阻止引用表的任何内容,也不必保留字符串的副本,如果您以后需要对字符串进行模糊处理,请将其拉​​入另一个表中以进行分析或重组,或者沿着这些行进行其他任何操作。代理密钥比自然密钥更有利。

我通常也更喜欢避免密钥在单行中包含具有含义的不同部分的情况,纯文本URI具有丰富的含义,因为它通常可以分解为组件。

答案 2 :(得分:1)

您可能想要考虑的另一件事是在JOINS,INDEXES和条件中使用字符串字段时将会遇到的性能损失。我必须同意@dclelements和@Neil推荐一个整数PK字段。

其他考虑因素是无法自动增加URL PK值,因此您必须处理(更高概率)重复插入表。

PK的整数是更好的数据库设计。