mySQL结构/关系思想

时间:2015-02-22 10:39:47

标签: mysql database relational-database

我有两张桌子: 1. Person 2. Record

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

记录1号= 1号人, 2号人,3号人员 记录2 = 4号人,5号人, 2号人

这是创建名为relations的新表并添加两列的最佳方式: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万行的人数和超过人员表中有100k行。

还有其他一些更简单,更快捷的方式来做这样的事情吗?

1 个答案:

答案 0 :(得分:0)

是的,这是正确的用法。

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

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