第一次询问StackOverflow。我正在创建一个MySQL数据库,我有两个表
我将在company_id字段上执行JOIN查询。一切正常但我想使用适当的约定并最大化访问速度。
问题:最好将自动增量整数主键添加到代表表中,即使它永远不会被我使用或添加person_count列并使两列成为主列表index(company_id,person_count)?
SQL示例:
SELECT company.company_id, company.company_name, representatives.person_last_name
FROM company INNER JOIN representatives
ON company.company_id = representatives.company_id;
代表表格选项1: company_id(非唯一索引),person_last_name,auto_id(自动增量整数pri)
N123456789012, JONES, 1 N123456789012, SMITH, 2 N123456789012, JONES, 3 N123456789012, WHITE, 4 N123456789012, BLACK, 5 P1234, WILLIAMS, 6 P1234, WILLIAMS, 7
代表表格选项2:
[company_id, person_count](pri index), person_last_name N123456789012, 1, JONES N123456789012, 2, SMITH N123456789012, 3, JONES N123456789012, 4, WHITE N123456789012, 5, BLACK P1234, 1, WILLIAMS P1234, 2, WILLIAMS
我没有创建原始数据,也无法控制company_id是文本字段。
提前致谢
答案 0 :(得分:0)
除非你有充分的理由做出不同的事情,否则我建议你自动增加单列PK。能够通过简单的int引用每个唯一的行是非常方便的。你现在可能没有用它,但将来你可能会有一个。即使您必须对表执行某些手动维护(手动删除或更新某些行),简单的PK也会派上用场。
但是,如果您希望数据库强制执行每个公司限制的5个人,我还会使用person_count列,为其添加一个约束,使其只能在1到5之间,并为(company_id)添加唯一索引,person_count)。这样,你就可以获得两全其美的效果。