我的主键有问题:
Create table Information
(
idObject Varchar(10)not null,
typeInfo Varchar(20)not null,
valueInfo Varchar(1000),
constraint key_Info PRIMARY KEY(idObject, typeInfo)
);
我要在此表中插入大量信息。其中之一是错误。它可能是具有相同对象和类型(错误)的一些错误,因此与主键存在冲突。 我不想为每个信息创建一个索引,因为在大多数情况下它是不必要的。 而我如何理解,不可能只为几行创建一个索引。我该如何解决这个问题。 谢谢!
答案 0 :(得分:0)
为表使用代理主键,并为对象/类型对定义单独的索引:
Create table Information (
InformationId int not null auto_increment,
idObject Varchar(10) not null,
typeInfo Varchar(20)not null,
valueInfo Varchar(1000),
KEY(idObject, typeInfo)
);
您确实需要为每一行添加某种标识符,以便区分相似的行。这是代理键的目的之一。如果此表被任何其他表引用,则代理键还允许明确设计的外键关系,这是良好数据库设计的标志。
我不知道这是什么意思:
我不想为每个信息创建索引
索引是数据库的组成部分,应在适当的地方使用。