我有这些表
客户端
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 编写查询以从客户、学校、类(class)表中获取 ID
方法二
我有这样的表格设计
客户端
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
最佳答案
在性能方面,第二种方法在 SELECT 时更好。这完全取决于您需要多少 ID。在编程结构上也是一样的。我是否需要指向父结构的指针?这取决于我们将拥有的操作类型。权衡是空间和同步化,在大多数情况下这不是问题,因为主键是唯一标识符。
我会混合它。我不会像你那样放置所有外键。 Class 表是否需要 client_id?在你的情况下,我会在 Subject 中使用外键,但如果性能不是问题,我会使用连接。
还要注意表 Subject 中的 school_id 和 client_id 是外键。
关于php - 在表中使用多个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130982/