单列字符串还是两列?

zsh*_*arp 0 database-design

我将一个字符串保存到表中,它必须是唯一的,我会在保存之前检查它是否已经存在.这不是其他领域.

我可以只使用一个以字符串作为主键的列表,还是应该有一个唯一标识符ID列?为什么在这两种情况下

pax*_*blo 6

如果你的字符串是唯一的(并且永远是唯一的),那么将它作为唯一的列和主键就可以了.

我要使用单独ID的唯一原因是

  1. 它在未来的某个时刻将变得不独特; 要么
  2. 如果它是一个大字符串,并且您希望另一个表列引用它(外键).

我会将YAGNI原则应用于这两种情况,并在发生时对其进行担心.

另外,对于数据库应用程序,最好不要"在保存之前检查它是否已经存在".我倾向于只是尝试保存它并捕获错误,如果它存在的alredy.由于它是主键(或唯一约束),因此可行.

检查存在然后插入经常导致竞争条件.