【问题标题】:Insert multiple attribute as foreign key插入多个属性作为外键
【发布时间】:2012-05-01 14:42:51
【问题描述】:

我有 2 张桌子:LecturerDepartment

Lecturer 表有这些列:

id, email, phone, expertise, dept_id.

Department 表有这些:

dept_id, dept_name, dept_code, dept_program.

样本数据如下:

讲师

(id=1, email= a@a.com, phone= 9999, expertise= multimedia and programming, dept_id=1)

部门

(id=1, dept_name=Computer Science, dept_code=CS, dept_program=Bachelor of Comp Science)

专业知识列有几个值,有些讲师可能有超过 5 个专业领域,所以我认为我应该单独为专业知识创建另一个表。但是如何在讲师表中插入多个专业属性?

【问题讨论】:

    标签: sql database-design foreign-keys


    【解决方案1】:

    仅更改lecturer 表并不能真正做到这一点。通常,您通过创建单独的表来处理多值属性。在这种情况下,您将创建一个表来保存专业知识属性,并创建另一个表来将专业知识与讲师相关联。作为奖励,这也有助于防止在专业知识描述方面出现不一致。

    生成的表格可能如下所示:

    department(dept_id, dept_name, dept_code, dept_program)
    lecturer(id, email, phone, dept_id*)
    expertise(id, description)
    lecturer_expertise(lect_id*, expertise_id*)
    

    【讨论】:

    • 讲师表在此设计中确实需要进行一项更改 - 删除专业知识字段
    • 对,我错过了。我已经编辑了答案以反映这一点。
    • 当你在这的时候,一位讲师也可能有多个电子邮件地址和多个电话号码,这可以引导你找到更多的映射表...... :)
    • 我创建了表格,但如何在讲师中显示 dept_id 的部门名称?我应该使用内部连接吗?
    • 这就是连接的用途。 SELECT lecturer.id, department.dept_name FROM lecturer, department WHERE lecturer.dept_id = department.dept_id;
    猜你喜欢
    • 2016-06-26
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多