在表中使用多个外键

时间:2013-04-21 12:14:05

标签: php mysql sql

我有这些表

客户端

id(PK), name, logo

学校

id(PK), name, logo, client_id (FK)

id(PK), name, school_id (FK)

主题

id(PK), name, class_id (FK)

方法1。

我有主题ID,我需要获得该主题的class_id,school_id和client_id。我可以用JOIN编写一个查询来从Client,School,Class tables中获取id

方法2

我有像这样的表格设计

客户端

id(PK), name, logo

学校

id(PK), name, logo, client_id (FK)

id(PK), name, school_id (FK), client_id (FK)

主题

id(PK), name, class_id (FK), class_id (FK), school_id (FK), client_id (FK)

在这种情况下,我可以通过像

这样的简单查询获取所有细节
SELECT * FROM Subject WHERE id = '2'

哪一个是更好的推荐方法?我喜欢第二种方法,但不确定是否推荐它。

TIA

1 个答案:

答案 0 :(得分:0)

性能方面,第二种方法是SELECT。这一切都取决于你需要多少ids。在编程结构中也是如此。我是否需要指向父级大多数结构的指针?这取决于我们将拥有的操作类型。权衡是空间和sinhronization,在大多数情况下,这不是问题,因为主键是唯一标识符。

我会混合它。我不会像你那样把所有的外键都放进去。 Class表是否需要client_id?在你的情况下,我会在Subject中使用外键,但如果性能不是问题,我会使用连接。

另请注意表Subject中的school_id和client_id是外键。