Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql关系数据库、关系和逻辑_Php_Mysql_Database_Relational Database - Fatal编程技术网

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列是不明确的。如果您想建模或记录仅适用于特定类型用户的属性和关系,请查看超类型/子类型表。