前缀MySQL表或许多MySQL数据库?

时间:2009-12-17 21:55:06

标签: php mysql parsing

所以,首先,我是学生。我正在开发一个应用程序,其他学生可以访问MySQL数据库。基本上,我想让学生们不必在他们的计算机上搜索托管甚至安装MySQL。另一个优点是,他们只需浏览一个网站即可向全班展示他们的作品。所以,我的想法是为每个人使用相同的数据库,并为学生添加登录系统。这样,我可以将前缀与每个学生相关联,并且他们可以执行任何类型的查询,而不必担心它是否会与某人的表冲突,因为系统会自动为其查询表添加前缀。我的想法是限制每个用户可以拥有多少表和行,这对于解析器来说应该不难。它不一定需要是PHP中的解析器,它可以是perl或python。 PHP更方便。由于Windows

,.NET会更麻烦

顺便说一句,每一类“数据库系统介绍”都有大约50名学生,共有3个班级,所以可以达到150名学生......

例如,SELECT * FROM employees 必须成为 SELECT * FROM prefix_employees 我不知道查询会是什么样子,它可能会变得相当复杂,所以我可能需要一个编写良好的解析器,我还没有找到PHP。

谢谢你们,我希望我已经说清楚了

3 个答案:

答案 0 :(得分:8)

不幸的是,MySQL没有(AFAIK)拥有schemas,因为其他一些数据库(例如PostgreSQL)拥有它们(用于在一个数据库中逻辑分离内容(表格等))。 / p>

但我绝对选择单独的数据库方案。

你的解析器(带有'前缀sheme')将被打破(不情愿,也可能是自愿),除非你愿意花费大量的时间来完成这项工作。

答案 1 :(得分:2)

我宁愿选择“每用户一个数据库”的方法。此解决方案需要一些管理(您可以使用phpMyAdmin之类的工具手动创建用户/数据库,或者只是创建您自己的小管理面板,允许学生注册),但需要少量管理你工作,而不是过滤所有请求。

这样,每个学生都有他的登录名/密码,最好是一个他拥有所有权利的同名数据库(这可以通过phpMyAdmin自动完成),并且能够在不干扰其他学生的情况下工作。您可以确定有些人会试图破坏您的安全性,无论您尝试多么努力以及您有多么愿意。将它们集中在不同的数据库中将使他们别无选择,只能尝试获取数据库的管理员访问权限,如果您维护最新的服务器和足够复杂的密码(并且您没有将它们明确存储在“可以被大学服务器上的所有“.txt文件读取。

另外,您将能够单独监视每个数据库的磁盘空间,使用情况等,这比单独查看表更容易。

答案 2 :(得分:0)

根据您的具体要求,您可以使用table permissions来阻止一名学生修改(或查看)其他学生的数据。您仍然需要一个进程来允许学生创建一个带有指定前缀的新表(并创建一个适当的权限条目),但是一旦创建,数据库将控制所有查询的访问权限,因此您不必这样做(只是不要允许学生帐户直接创建/更改表格。

至于配额,我不知道MySQL直接支持配额系统,但您可以在单独的目录中为每个用户创建支持表的文件,并使用操作系统级配额系统来限制磁盘空间使用。