设计表结构

时间:2015-02-14 20:19:25

标签: mysql database primary-key

我是编程新手,也是数据库的新手。我的问题是我需要创建一个表教员

id(pk auto increment)  fact_name  department  subjects

现在我的问题是,教师可以拥有超过2个或更多的部门或科目,对我而言,它给出的错误是重复的主键ID。

我想要的是

id(pk auto increment)  fact_name  department  subjects 
          1               ABC        1           1
          1               ABC        2           2
          1               ABC        3           3

请建议如何设计我的表格,我可以为同一主键插入不同的数据,或者有其他方式。

代码

Create table faculty(
fact_id INT AUTO_INCREMENT,
fact_name varchar(20),
fact_email varchar(20) unique,
fact_password varchar(20),
year_id varchar(2),
sem_id varchar(2),
dept_id varchar(2),
subject_id varchar(2),
primary key ( fact_id,subject_id)
)

1 个答案:

答案 0 :(得分:2)

主键是一个唯一的识别键,无论如何都不能复制,如果你想要另一个重复键,那么添加你自己的额外字段

---------------------------------------------------
| pk | my key | fact_name | department | subjects |
---------------------------------------------------
|  1 |    1   |    ABC    |     1      |     1    |
|  2 |    1   |    ABC    |     2      |     2    |
|  3 |    1   |    ABC    |     3      |     3    |
---------------------------------------------------

<小时/> 好的,根据我现在的理解,你需要在科目,系和院系之间建立多对多的关系,首先要分开教师表

-------------------------------
| pk | fact_name | fact_email | 
-------------------------------

然后创建一个不同的表,例如名为faculty_subjects

---------------------------------------------
| pk | fact_id | department_id | subject_id |
---------------------------------------------

任何额外的细节都将在联接表中,而不是教师表。