我有员工表和培训表,我希望员工登录,只看到培训建议他/她的部门。 这是一个好方法,用逗号分开建议的部门? 和查询将从员工部门建议部门的培训表中选择?
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,所以我应该使用+'逗号'在选择的时候?
答案 0 :(得分:0)
您的第二个建议比第一个更好,但通常将CSV数据存储到SQL表中是次优的,原因有很多。我建议采用以下设计,employeetable
和departmenttable
表保持不变:
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;
使用规范化表可以轻松地连接到其他表,并且还允许使用可以使日常查询更快的索引。