0

我有一个迷你注册系统。

有教授、科目、学生、成绩和有学生的科目的表格。

现在,当您添加教授时,您输入它的教授 ID。但也有一个profNO。并且 profNo 是主键。由于您可以向该教授添加更多科目,因此 profNo 将增加,但 ID 保持不变。

问题:现在,我想设置一个限制,当一个人想添加一个教授时,如果他输入一个已经存在的教授 ID,会出现一个错误,上面写着“教授 ID 已经存在”但教授 ID 不是唯一的。

现在,看看照片。有相同的教授 ID 具有不同的 profNo。那是因为他们拥有的科目。当您向教授添加主题时,教授 ID 重复。但是当你添加一个教授时,当一个人输入一个现有的ID时,会不会出现错误? 示例 http://sphotos-e.ak.fbcdn.net/hphotos-ak-ash3/578472_162759700529875_718824031_n.jpg

4

2 回答 2

1

是的,你可以做你所要求的。只需在插入新教授之前添加一个简单的检查。

提交新教授时的伪代码:

if profID already exists (using a simple SQL query to check)
    allow the insert and continue
else
    don't insert, show a message to the user "That professor ID already exists"
endif

但是,如果您在教授拥有多个学科时一遍又一遍地复制教授的详细信息,这似乎不是一个非常合乎逻辑的系统。

考虑这个数据库结构:

桌子:professors

字段:id, firstname, lastname,gender

桌子:subjects

字段:id, professorid, subjectname,subjectcode

这样,您只需professors为每个教授维护一个记录,并且为科目表维护相同的记录。当您插入新科目时,您将填充链接回professors表的教授 ID,而不会复制数据。

这将是一个简单的结构,可以使您的数据库更加高效,现在取决于您的系统需要多么复杂,您可能需要进一步对其进行规范化。例如,如果一个学科可以有多个教授,那么您将不会在学科表中包含教授 ID,而是会有一个professor_subject_association带有 fields的新表professoridsubjectid您可以在其中将多个教授链接到学科。

于 2012-10-12T14:42:51.573 回答
0

使您的ID列具有UNIQUE INDEX。阅读 MySQL 手册中的内容:在 MySQL 上创建索引

于 2012-10-12T13:47:01.253 回答