【发布时间】:2014-08-07 08:04:55
【问题描述】:
你好朋友我正在研究基于php mysql的学校数据库系统。基本结构如下:
- 表类-所有类的详细信息。主键类 ID
- 表学生-所有学生的详细信息,主键studentID。外键类 ID
- 表学期-所有学期的详细信息,关键学期ID
- 表课-学期。该表解决了班级和学期的多对多关系、主键 ID。外键 ClassID、SemesterID
- 表主题 - 所有主题的详细信息,关键 SubjectID
- 表类-主题。该表解决了班级和学期的多对多关系、主键 ID。外键 ClassID、SubjectID
- 表分数 - 由学生 ID、学科 ID、学期 ID、获得的分数组成。外键 ClassID、学期 ID、学科 ID
我还在所有引用父表的表中应用了外键。我希望在我的数据库中应用完整性,以便将特定班级的学生自动分配给该特定班级的科目。
如果我们尝试更改学生的科目,数据库应该会抛出错误,表明这些科目属于学生所属的班级。
我确信这可以使用外键约束来完成。但是,我这样做有点天真。非常感谢一个工作示例
ENGINE = InnoDB
AUTO_INCREMENT = 53
DEFAULT CHARACTER SET = utf8;
【问题讨论】:
-
表的存储引擎是什么?默认情况下,一些 MySQL 安装使用 MyISAM 作为默认存储引擎,并且它不支持外键约束。您至少需要使用 InnoDB 存储引擎。
-
嗨 Anthony,引擎 = InnoDB AUTO_INCREMENT = 53 默认字符集 = utf8;
-
您可能需要一个触发器“以便特定班级的学生将自动分配到该特定班级的科目。”换句话说,您可能需要在另一个表中创建记录的基础上,在一个表中创建一条记录,对吧?