mysql数据库逻辑建议zend

时间:2017-08-07 05:54:21

标签: php mysql zend-framework database-design

我有员工表和培训表,我希望员工登录,只看到培训建议他/她的部门。 这是一个好方法,用逗号分开建议的部门? 和查询将从员工部门建议部门的培训表中选择?

epmloyeetable       
id   Name     Department
1    John      Finance
2    Michael   Logistics

training table      
id  name      suggested_department
1   php       IT, Finance
2   vba       IT, Logistics
3   java      Logistics, Finance

第二个问题是我应该使用数字而不是部门名称并创建部门表吗?这次我将不得不连接两个以上的表,这将是问题,而我将使用zend框架

epmloyeetable       
id   Name     Department
1    John      Finance
2    Michael   Logistics

training table      
id  name      suggested_department
1   php       1, 2
2   vba       1, 3
3   java      3, 2

departmenttable     
id   Name 
1    IT 
2    Finance
3    Logistic

这次查询将从培训表中选择,员工部门+',' =建议部门? 因为部门ID中会有1和11,所以我应该使用+'逗号'在选择的时候?

1 个答案:

答案 0 :(得分:0)

您的第二个建议比第一个更好,但通常将CSV数据存储到SQL表中是次优的,原因有很多。我建议采用以下设计,employeetabledepartmenttable表保持不变:

training table      
id  name      suggested_department
1   php       1
1   php       2
2   vba       1
2   vba       3
3   java      3
3   java      2

这是您离开training规范化的替代方法。如上所述,存储CSV数据并不理想,如果您只想做一个简单的查询,询问哪个培训将IT作为建议部门,那么就是一个例子。使用CSV数据,您必须通过CSV来查找答案,而使用我建议的表格,您可以进行简单的连接,例如

SELECT *
FROM training
WHERE suggested_department = 1;

使用规范化表可以轻松地连接到其他表,并且还允许使用可以使日常查询更快的索引。

相关问题