php - 如何为数据库中的用户和管理员建模?

标签 php mysql database

我是 mysql 的新手。我想为一所学校在 mysql 中创建一个数据库。该数据库应存储教师信息,并为其中一些教师提供创建群组的可能性。

所以我创建了一个数据库,其中包含一个表 group 和一个表 professeur。 Group 与教师之间存在多对多关系,反之亦然,这派生出另一个表 Group_professeur。这是表格的简单结构:

教授:

CREATE TABLE IF NOT EXISTS `professeur` (
  `id_professeur` int(11) NOT NULL AUTO_INCREMENT,
  `nom_professeur` varchar(50) NOT NULL,
  `prenom_professeur` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id_professeur`),
  UNIQUE KEY `LOGIN` (`login`),
  UNIQUE KEY `MDP` (`passwd`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=103 ;

CREATE TABLE IF NOT EXISTS `groupe` (
  `id_groupe` int(11) NOT NULL AUTO_INCREMENT,
  `nom_groupe` varchar(255) NOT NULL,
  `id_prof_responsable` int(11) NOT NULL,
  PRIMARY KEY (`id_groupe`),
  UNIQUE KEY `nom_groupe` (`nom_groupe`),
  KEY `id_prof_responsable` (`id_prof_responsable`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
ALTER TABLE `groupe`
ADD CONSTRAINT `fk_professeur_to_groupe` FOREIGN KEY (`id_prof_responsable`) REFERENCES `professeur` (`id_professeur`) ON UPDATE CASCADE

Groupe_has_teachers:

CREATE TABLE IF NOT EXISTS `groupe_professeur` (
  `id_groupe` int(11) NOT NULL,
  `id_professeur` int(11) NOT NULL,
  KEY `id_groupe` (`id_groupe`),
  KEY `id_professeur` (`id_professeur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `groupe_professeur`
  ADD CONSTRAINT `groupe_professeur_ibfk_2` FOREIGN KEY (`id_professeur`) REFERENCES `professeur` (`id_professeur`) ON UPDATE CASCADE,
  ADD CONSTRAINT `groupe_professeur_ibfk_1` FOREIGN KEY (`id_groupe`) REFERENCES `groupe` (`id_groupe`) ON UPDATE CASCADE;

教师只能修改他们创建的组(即他们可以从他们的组中插入和删除成员)。此外,并非所有教师都有权创建和修改小组。

创建表格后,我想知道谁会给他们适当的权利来做所有这些事情。我考虑过创建管理员。管理员可以授予某些教师创建和修改自己的组的权限,也可以撤销这些权限。

我创建了一个表来存储管理员,但管理员将授予管理员必要的权限来执行这些操作。这让我回到了第一点。并且这张表可能与数据库中的其他表有一些关系,从而派生出一些不必要的表。

无论如何,我考虑过将教授表更改为staffs 之类的通用表,并将管理员添加到表中。然后将这些人员添加到数据库中。这意味着创建一个新员工相当​​于将员工的信息添加到表 staffs 中,然后将此员工作为用户添加到数据库中。从那里我可以对每个用户使用 SQL 函数,如 GRANTREVOKE

我不确定这种方法是否非常有效,因为这意味着如果学校有 1000 名教授,那么它的数据库中就有 1000 名用户。 有没有有效的方法来解决这个问题?谢谢。

最佳答案

使用内置的 MySQL 用户概念来控制应用程序用户访问是非正统的。对于基本应用程序,我建议在组表中有另一列用于引用教授表的 owner_user_id。然后在应用程序代码中,在更改组时检查该 ID。 祝你好运!

关于php - 如何为数据库中的用户和管理员建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683419/

相关文章:

php - 如何使用 PHP 与服务器中的另一个应用程序一起工作?

php - Return Back 在 Excel::load() 函数中起作用:Laravel 4.2

javascript - 在 PHP 中查询 MongoDB 后,将每个符号分配给 Javascript 中的索引

mysql在使用heredoc时提示输入密码

PHP:使用 cURL PUT 发送 XML 数据

mysql - 评估 MySQL 存储过程中的字符串

mysql - 无法使用cmd创建mysql数据库

java - 如何使用API​​而不是硬编码字符串进行sqlite upsert?

mysql - 您如何处理用户的删除

MySQL外键依赖解析