Php mysql关系数据库、关系和逻辑
我目前正在为一所学校创建一个系统,我正在为我的想法寻找一些强化,或者寻找一些指导,并被告知回到绘图板 目前,由于我的系统拥有各种类型的用户(所有用户都需要登录),我对我的关系应该如何工作感到有点困惑(或思考过度) 用户类型 超级用户Php mysql关系数据库、关系和逻辑,php,mysql,database,relational-database,Php,Mysql,Database,Relational Database,我目前正在为一所学校创建一个系统,我正在为我的想法寻找一些强化,或者寻找一些指导,并被告知回到绘图板 目前,由于我的系统拥有各种类型的用户(所有用户都需要登录),我对我的关系应该如何工作感到有点困惑(或思考过度) 用户类型 超级用户 管理员 教师 教学管理员 学生们 父母 到目前为止,我认为这项工作的最佳方式是拥有一个中心用户表,该表将具有与此类似的模式 `id`, `first_name` VARCHAR(45) NOT NULL, `last_name` VARCHAR(45)
管理员
教师
教学管理员
学生们
父母 到目前为止,我认为这项工作的最佳方式是拥有一个中心用户表,该表将具有与此类似的模式
`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
我的想法是,角色列将确定他们是什么类型的用户,然后我将与schools表建立m:m关系,以允许教师跨多个学校进行该工作,并且每个学生、教师/教学管理员和管理员都将与学校建立关系。在我看来,这一切都很好
我的困惑来自家长,每个用户(学生)可以有许多家长,家长也需要能够登录,因此需要在用户表中输入一个条目,但是我如何在学生和家长之间创建关系
我现在有两个想法
1) 创建由列、id、用户id、父对象组成的父表。如果用户id为,则将家长的用户条目和家长的id指定为学生用户的id
2) 在用户表中创建一个可以为空的新列,该列存储父用户ID的ID(如果该行是学生行)
我还想知道,也许我可以做一些事情,比如说,有很多贯穿关系,或者多态关系。有人有什么建议吗?你的#1选项是“链接表”——一种更好的方法,允许家长和学生之间建立多对多关系
另外,你不会以明文形式存储密码,对吧?你的#1选项是“链接表”——一种更好的方法,允许家长和学生之间建立多对多关系
另外,您不会将密码存储在纯文本中,对吗?我会选择您的第一个想法,但您不需要在其中添加id列。两个外键列上的复合主键可以很好地工作。此外,我建议您将这两列命名为parent_id和student_id,因为这两列都记录在users表中。user_id列是不明确的。如果您想建模或记录仅适用于特定类型用户的属性和关系,请查看supertype/subtype表。您的第一个想法是我的选择,但您不需要向其中添加id列。两个外键列上的复合主键可以很好地工作。另外,我建议您将这两列命名为parent_id和student_id,因为这两列都记录在users表中。user_id列是不明确的。如果您想建模或记录仅适用于特定类型用户的属性和关系,请查看超类型/子类型表。