我只使用主键整数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有什么不好的事吗?
我不需要记录是唯一的。
答案 0 :(得分:2)
仅当列声明为INTEGER PRIMARY KEY时,才会获得自动递增主键;其他数据类型导致普通主键。
您无需申报PRIMARY KEY。 但即使你不这样做,也会有一些列用于识别和查找记录。 PRIMARY KEY声明有助于记录这一点,强制执行唯一性,并通过隐式索引优化查找。
答案 1 :(得分:1)
SQLite是一个关系数据库系统。所以关系到关系。您在密钥上的表之间建立关系。
你可以拥有没有主键的表格;表没有必要有一个主键。但是,您几乎总是想要一个主键,以显示在该表中创建记录的唯一原因并建立关系。
在您的示例中,拥有两条相同的记录意味着什么?他们的意思是同一个人,不是吗?那你怎么算数安娜在数据库里有多少人呢?如果算上五个,其中有多少是独一无二的,有多少只是重复的?这样的查询可以正确完成,但由于缺少主键而变得过于复杂。你会如何建立关系,比如一个人驾驶的汽车?你会有一个汽车表,然后如何将它链接到你的例子中的人员表?
有些情况下,您需要没有主键的表。这些通常是日志表等。它们很少见。无论何时创建没有主键的表,都要问问自己为什么会出现这种情况。也许你即将构建一些凌乱的东西; - )