如果我不需要自动增量,Sqlite是主键重要吗?

时间:2014-03-18 07:32:54

标签: sqlite

我只使用主键整数ID作为“自动增量函数”。

如果我不需要“自动增量”怎么办?如果我不关心记录的唯一性,我还需要主键吗?

示例:让我们比较一下这个表:

create table if not exists `table1`
(
    name text primary key,
    tel text,
    address text
);

用这个:

create table if not exists `table2`
(
   name text,
   tel text,
   address text
);

table1应用主键而table2不应用。 table2有什么不好的事吗?

我不需要记录是唯一的。

2 个答案:

答案 0 :(得分:2)

仅当列声明为INTEGER PRIMARY KEY时,才会获得自动递增主键;其他数据类型导致普通主键。

您无需申报PRIMARY KEY。 但即使你不这样做,也会有一些列用于识别和查找记录。 PRIMARY KEY声明有助于记录这一点,强制执行唯一性,并通过隐式索引优化查找。

答案 1 :(得分:1)

SQLite是一个关系数据库系统。所以关系到关系。您在密钥上的表之间建立关系。

可以拥有没有主键的表格;表没有必要有一个主键。但是,您几乎总是想要一个主键,以显示在该表中创建记录的唯一原因并建立关系。

在您的示例中,拥有两条相同的记录意味着什么?他们的意思是同一个人,不是吗?那你怎么算数安娜在数据库里有多少人呢?如果算上五个,其中有多少是独一无二的,有多少只是重复的?这样的查询可以正确完成,但由于缺少主键而变得过于复杂。你会如何建立关系,比如一个人驾驶的汽车?你会有一个汽车表,然后如何将它链接到你的例子中的人员表?

有些情况下,您需要没有主键的表。这些通常是日志表等。它们很少见。无论何时创建没有主键的表,都要问问自己为什么会出现这种情况。也许你即将构建一些凌乱的东西; - )