【问题标题】:mysql Database logic advise on zend关于zend的mysql数据库逻辑建议
【发布时间】:2018-01-14 08:44:08
【问题描述】:

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

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,所以我应该在选择时使用 + 'comma' 吗?

【问题讨论】:

    标签: php mysql zend-framework database-design


    【解决方案1】:

    您的第二个建议比第一个要好,但由于许多原因,通常将 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;
    

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

    【讨论】:

    • 蒂姆 谢谢您的回复。我忘了写细节。我的培训可以建议为部门+职能+名称。例如PHP培训建议部门“IT,财务”,建议人员“Carla”建议功能“经理,员工” ıdea是当员工或经理级别的IT人员登录系统时可以选择“PHP”培训。或者来自物流部门的 Carla,即使这个培训没有向她的部门建议,她也会看到培训,因为建议她的名字。在您的情况下,我必须为每个训练 x 建议的 dep x sugg 创建多行。名称 x 建议 func ,对吗?
    • 我不确定,但如果你的其他表看起来像training,那么你也应该对它们进行规范化。
    • 在这种情况下,我必须更改创建表单和编辑表单功能。例如,如果您选择 2 个部门脚本必须创建 2 个不同的行。如果你想编辑它也会复杂得多。
    • 你用数据库设计标记了你的问题,我已经回答了。如果您的 UI 需要进行一些更改以支持良好的数据库设计,我建议您考虑进行更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多