我有一个迷你注册系统。
有教授,科目,学生,成绩和有学生的科目的表格。
现在,当你添加教授时,你输入它的教授ID。但也有一个profNO。而profNo是主键。因为你可以向该教授添加更多主题,所以profNo会增加,但ID保持不变。
问题:现在,我想设置一个限制,当一个人想要添加一个教授时,如果他输入一个已经存在的教授ID,就会出现一个错误,上面写着“教授ID已经存在”,但教授ID不是独特。
现在,看看照片。有相同的教授ID和不同的profNo。那是因为他们拥有的主题。当您向教授添加主题时,教授ID会重复。但是当你添加教授时,是否有可能在输入现有ID时会出现错误? sample http://sphotos-e.ak.fbcdn.net/hphotos-ak-ash3/578472_162759700529875_718824031_n.jpg
答案 0 :(得分: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
然而,如果教授有多个科目,你一遍又一遍地重复教授的细节,这似乎不是一个非常合乎逻辑的系统。
考虑这个DB结构:
表:professors
字段:id
,firstname
,lastname
,gender
表:subjects
字段:id
,professorid
,subjectname
,subjectcode
通过这种方式,您只能在每个教授的professors
中保留一条记录,并在主题表中保留相同的记录。插入新主题时,您将填充教授ID,该ID将链接回professors
表,而不会复制数据。
这将是一个简单的结构,使您的数据库更高效,现在取决于您的系统需要多么复杂,您可能需要进一步规范化它。例如,如果主题可以有多位教授,那么您不会在主题表中包含教授ID,而是会有一个新表professor_subject_association
,其中包含字段professorid
,subjectid
。将多位教授与学科联系起来。
答案 1 :(得分:0)
让您的ID
列具有 UNIQUE INDEX 。阅读有关MySQL手册的内容: Creating Indexes on MySQL