mysql 关于 zend 的数据库逻辑建议

mysql Database logic advise on zend

我有员工 table 和培训 table,我希望员工登录后只看到培训建议的 his/her 部门。 这是好方法吗,用逗号分隔建议的部门? 并且查询将是来自培训 table 的 select,其中员工部门喜欢建议的部门?

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

第二个问题是我应该使用数字而不是部门名称来创建部门table吗?这次我必须将超过 2 个 table 连接在一起,这会是问题吗,而我将使用 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

这次查询将 select 来自培训 table 其中员工部门 +',' = 建议部门? 因为部门 ID 中会有 1 和 11 所以我应该使用 + 'comma' 而 selecting ?

您的第二个建议比第一个好,但通常将 CSV 数据存储到 SQL table 中并不是最佳选择,原因有很多。我提出以下设计,employeetabledepartmenttable table 保持不变:

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 table 规范化 的替代方案。如前所述,存储 CSV 数据并不理想,举一个例子,如果您只想做一个简单的查询,询问哪个培训将 IT 作为建议的部门。使用 CSV 数据,您必须深入了解 CSV 才能找到答案,而使用我建议的 table 您可以进行简单的连接,例如

SELECT *
FROM training
WHERE suggested_department = 1;

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