我对MySQL和数据库结构很陌生,我想知道是否有人可以帮助设计这个数据库的最佳方法。该应用程序基本上是一本在线练习册。它将为学生完成练习并将结果存储在数据库中。
家长将能够查看孩子的答案,而教师可以查看他们整个班级的结果。
我有3种不同类型的用户,Teachers
,Parents
和Students
。每个学生都与父母相关联,每个学生都与一个班级相关联。教师与多个班级相关联。
我的当前用户结构可以在这里看到;
我应该创建一个Users表并且有一个UserType
字段吗?如果是这样,我如何将学生与班级和家长联系起来?
答案 0 :(得分:1)
我为此创建了一个架构: -
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
`class_id` int(11) NOT NULL AUTO_INCREMENT,
`class_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`class_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*Data for the table `class` */
insert into `class`(`class_id`,`class_name`) values (1,'A'),(2,'B'),(3,'C');
/*Table structure for table `info` */
DROP TABLE IF EXISTS `info`;
CREATE TABLE `info` (
`info_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`class_id` int(11) DEFAULT NULL,
PRIMARY KEY (`info_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
/*Data for the table `info` */
insert into `info`(`info_id`,`user_id`,`parent_id`,`class_id`) values (1,3,2,1);
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`users_types_id` int(11) DEFAULT NULL,
`class_id` int(11) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
/*Data for the table `user` */
insert into `user`(`user_id`,`user_name`,`users_types_id`,`class_id`) values (1,'TeacherA',1,1),(2,'Parent',2,0),(3,'StudentA',3,1),(4,'TeacherB',1,2),(5,'TeacherC',1,3);
DROP TABLE IF EXISTS `users_types`;
CREATE TABLE `users_types` (
`users_types_id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(255) DEFAULT NULL,
PRIMARY KEY (`users_types_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*Data for the table `users_types` */
insert into `users_types`(`users_types_id`,`type`) values (1,'Teacher'),(2,'Parent'),(3,'Student');
同样在插入之前检查信息表中是否存在用户和父项的记录。
答案 1 :(得分:0)
如果从另一个角度看待你的应用程序,事情会容易得多。 首先,有用户实体,它提供所有授权功能,如果用户必须具有不同的功能 - 你最好使不同类型的用户:
Users:
id (int)
user_type_id int
username varchar
password varchar
email varchar
User_types:
id int
name varchar
如果使用InnoDB引擎,则可以为引用完整性创建外键Users-User_types。