MySQL:多个连接还是额外的外键?

MySQL:多个连接还是额外的外键?,sql,mysql,normalization,Sql,Mysql,Normalization,我有以下表格结构: CREATE TABLE pilot_groups ( id INT PK, name VARCHAR(50), .... ); CREATE TABLE pilot_group_leaders ( id INT PK, pilot_group_id INT FK, name VARCHAR(50), address TEXT, .... ); CREATE TABLE members ( id INT PK, pilot_group_leader_id INT FK,

我有以下表格结构:

CREATE TABLE pilot_groups (
id INT PK,
name VARCHAR(50),
....
);

CREATE TABLE pilot_group_leaders (
id INT PK,
pilot_group_id INT FK,
name VARCHAR(50),
address TEXT,
....
);

CREATE TABLE members (
id INT PK,
pilot_group_leader_id INT FK,
country_id INT FK,
type VARCHAR(50),
name VARCHAR(50),
....
);

CREATE TABLE farms (
id INT PK,
member_id INT FK,
....
);

因此,我必须生成一份报告,并显示所有农场,按试点组分组。要使用当前的结构进行连接,我必须进行3次连接,我认为这不是非常优化和有效的。我想在表中放置额外的外键,但是我会重复。网站/应用程序的目的主要是生成报告和输入数据。哪种方法可能更好?

坚持使用当前版本,不要复制外键

您应该能够在表上创建一些索引


如果它没有损坏,就不要修复它。您是否确实存在性能问题,或者您是否预料到了这些问题?

请坚持使用当前版本,不要复制外键

您应该能够在表上创建一些索引


如果它没有损坏,就不要修复它。您是否确实存在性能问题,或者您是否预期到了这些问题?

完全删除“id”键并使用自然主键可能会有很大帮助。但是,说这会让我失去业力:-)

完全放弃“id”键并使用自然主键可能会有很大帮助。但是,说这会让我失去业力:-)

我没有性能问题。我还在设计阶段,所以我只是想找出我可能遇到的任何陷阱。然后我真的不认为这是必需的。只要坚持基本原则,当您遇到性能问题时,就可以考虑这样的重大更改。这应该是您最后的选择之一。我没有性能问题。我还在设计阶段,所以我只是想找出我可能遇到的任何陷阱。然后我真的不认为这是必需的。只要坚持基本原则,当您遇到性能问题时,就可以考虑这样的重大更改。这应该是你最后的选择之一。我会投票支持自然键的人。在这种情况下,农场名称(?未显示)和试点组的名称可能是候选名称。减少任意id号上的连接数通常会带来更快的选择性能。我将投票支持自然键的任何人。在这种情况下,农场名称(?未显示)和试点组的名称可能是候选名称。减少任意id号上的连接数通常会带来更快的SELECT性能。