我有这些表
客户端
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
答案 0 :(得分:0)
性能方面,第二种方法是SELECT。这一切都取决于你需要多少ids。在编程结构中也是如此。我是否需要指向父级大多数结构的指针?这取决于我们将拥有的操作类型。权衡是空间和sinhronization,在大多数情况下,这不是问题,因为主键是唯一标识符。
我会混合它。我不会像你那样把所有的外键都放进去。 Class表是否需要client_id?在你的情况下,我会在Subject中使用外键,但如果性能不是问题,我会使用连接。
另请注意表Subject中的school_id和client_id是外键。