mySQL structure/relation 个想法

mySQL structure/relation ideas

我有两个 table: 1. Person 2. Record

table person 中的多行可以连接到 record 中的一行。 但是如果我有一个人连接到多个记录,连接它的最佳方式是什么?

第 1 条记录 = 第 1 个人,第 2 个人,第 3 个人 第 2 条记录 = 第 4 个人,第 5 个人,第 2 个人

是否最好的方法是创建一个名为 relations 的新 table 并添加两列:recordidpersonid。所以它看起来像这样:

recordid  |  personid
    1            1
    1            2
    1            3
    2            4
    2            5
    2            2

我这样做是因为如果一个用户更改了一个人的数据,它也应该显示在其他记录中有同一个人的记录中。

基本上我会通过这样做得到 person 中的哪些行连接到 record 中的行:

SELECT `record`.`data` FROM `record` LEFT JOIN `relation` ON `record`.`id`=`relation`.`recordid` LEFT JOIN `person` ON `relation`.`personid`=`person`.`id`

我会使用这种连接来获取数据和通过记录(按姓名、姓氏和许多其他参数)进行所有搜索,并且我可以在一个人表中拥有超过 10 万行,并且个人超过 10 万行 table.

有没有其他更简单、更快速的方法来做这样的事情?

是的,这是正确的用法。

但是,根据您的需要,内部联接可能比左外部联接更快,特别是因为您说的记录超过 100k 等。当然,它只会获取条目所在的记录存在并匹配。

此外,根据您在 运行 查询之后执行的操作,您可以编写单独的查询来查找匹配和不匹配的记录并相应地显示。