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

时间:2017-01-10 11:15:44

标签: php mysql database relational-database

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

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

用户类型

超级用户
管理员
教师
教学管理员
学生
父母

到目前为止,我认为这项工作的最佳方式是拥有一个与此类似的架构的中央用户表,

  `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

我的想法是角色列将识别他们的用户类型,然后我会:我与学校表的关系,以允许教师在多个学校中进行该项工作,以及每个学生,教师/教学管理员和管理员将与学校建立关系。在我的脑海中,一切正常。

我的困惑伴随着父母,每个用户(学生)可以有很多父母,父母也需要能够登录所以需要在用户表中输入一个条目,但我怎样才能创建一个学生和父?

我现在有2个想法,

1)创建一个父表,其中包含列,id,user_id,parent_to。使用user_id将父级的用户条目和作为学生用户的id的parent_to进行对齐。

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

我也想知道我是否可以通过多种关系或多态关系来解决问题。有没有人有任何建议?

1 个答案:

答案 0 :(得分:0)

您的#1选项是一个“链接表” - 一种更好的方法,允许父母和学生之间的多对多关系。

P.S。你不打算用纯文本存储密码,对吗?

相关问题