mysql关系数据库,关系和逻辑



我目前正在为一所学校创建一个系统,我正在为我的想法寻找一些强化,或者寻求一些指导,并被告知回到绘图板上。

目前,我对我的关系应该如何运作有点困惑(或思考过度),因为我的系统有各种类型的用户(所有用户都需要登录)。

用户类型

超级用户
管理员
教师
教学管理员
学生
家长

到目前为止,我认为这项工作的最佳方式是有一个中央用户表,它将有类似的模式,

`id`,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`password` VARCHAR(64) NOT NULL,
`active` TINYINT(1) NOT NULL DEFAULT 0,
`banned` TINYINT(1) NOT NULL DEFAULT 0,
`invite_code` VARCHAR(32) NULL,
`role` INT NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NULL,
`deleted_at` DATETIME NULL

我的想法是,角色栏将确定他们是什么类型的用户,然后我将与学校表建立m:m关系,以允许教师在多所学校从事这项工作,每个学生、教师/教学管理员和管理员都将与一所学校建立关系。在我看来,这一切都很好。

我的困惑来自于家长,每个用户(学生)可能有很多家长,家长也需要能够登录,所以需要在用户表中输入一个条目,但我如何在学生和家长之间建立关系?

,我现在有两个想法

1) 创建一个由列、id、user_id和parent_to组成的父表。user_id beign是家长的用户条目,parent_to是学生用户的id。

2) 在用户表中创建一个可以为null的新列,该列存储父用户ID的ID(如果该行是学生行)?

我还想知道我是否可以有很多贯穿关系或多态关系。有人有什么建议吗?

您的#1选项是"链接表",这是一种更好的方法,允许家长和学生之间建立多对多的关系。

附言:你不会把密码存储在纯文本中,对吧?

最新更新