Database design 如何在php中进行限制?

Database design 如何在php中进行限制?,database-design,normalization,Database Design,Normalization,我有一个迷你注册系统 有教授、科目、学生、年级和有学生的科目的表格 现在,当你添加一个教授时,你输入的是教授ID。但是还有一个profNO。profNo是主键。由于您可以向该教授添加更多科目,profNo将增加,但ID保持不变 问题:现在,我想设置一个限制,当一个人想要添加一个教授时,如果他输入一个已经存在的教授ID,就会出现一个错误,上面写着“教授ID已经存在”,但教授ID不是唯一的 现在,看看这张照片。相同的教授ID具有不同的profNo。这是因为他们有很多科目。向教授添加主题时,教授ID重

我有一个迷你注册系统

有教授、科目、学生、年级和有学生的科目的表格

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

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

现在,看看这张照片。相同的教授ID具有不同的profNo。这是因为他们有很多科目。向教授添加主题时,教授ID重复。但是,当您添加一名教授时,是否可能在输入现有ID时出现错误?

使您的
ID
列具有唯一索引。阅读MySQL手册中的相关内容:

是的,您可以按照自己的要求去做。在插入新教授之前,只需添加一个简单的检查

提交新教授时的伪代码:

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结构:

表格:
教授

字段:
id
firstname
lastname
gender

表格:
受试者

字段:
id
professorid
subjectname
subjectcode

这样,您就只需要在
professors
中为每个教授维护一条记录,并为subjects表维护相同的记录。插入新科目时,将填充professor ID,该ID链接回
professors
表,而无需重复数据


这将是一个简单的结构,使您的数据库更加高效,现在取决于您的系统需要有多复杂,您可能需要进一步规范化它。例如,如果一个科目可以有多个教授,那么您不会在科目表中包含教授ID,而是会有一个新的表
professor\u subject\u association
,其中包含字段
professorid
subjectid
您可以将多个教授链接到科目。

这不一定与PHP相关,您是否使用DBMS-任何SQL等?如果ID不唯一,并且您希望在存在错误时显示错误,您将如何添加多个ID?如果已经存在错误,您希望它是唯一的,但您不希望它是
唯一的
?这似乎是一个矛盾。你能再解释一下你的情况吗?另外,如果profNo是主键,你真的应该为任何教授增加它吗?这里缺少数据。如果有一个
Professor
表,那么主题表是否可以有多个(非唯一的)Professor ID并不重要。您应该编辑问题,并提供有关表及其连接的完整信息。