请使用mysql和php为组创建数据库系统。我遇到了一些挑战,这些是
1.我想使数据库系统动态化 - 因此使用该系统的管理员可以从前端向特定表添加列,而无需了解有关mysql和php的信息。
2.另外,我希望不了解mysql和php的管理员能够通过前端(PHP页面)将数据库添加到数据库中。
3.由于(1和2)中的上述问题,如何使管理员添加的列出现在数据库的表单(php页面)上,如何检查表单上的错误。< / p>
请举例说明我所说的内容。
a。如果没有技术团队的帮助,我该怎样做才能让客户在数据库中的现有表中添加列?
b。如果没有技术团队的帮助,我该怎么做才能让客户将表添加到现有数据库?
c。如何将管理员添加的列输出到表单,并检查表单上的错误(php页面)。
欢迎任何帮助。谢谢你
答案 0 :(得分:1)
基本上你可以编写ALTER TABLE xxx ADD column VARCHAR(100)
之类的查询等,从表单填写所需的值。但是,强烈建议不要这样做。这不仅意味着您的脚本能够执行通常只能由具有管理员权限的(mysql)用户执行的查询,而且它也非常容易受到安全问题的影响。
立即阅读你的问题让我想到一个EAV - like1数据库系统,尽管在像mysql这样的关系数据库系统中使用它是一个备受争议的方案,实际上可以在任何系统上使用...... / p>
我想到的一些问题(大多数要点也适用于EAV)
您将失去任何逻辑结构
由于任何类型的数据都可以链接到任何类型的实体,因此 - 至少在您的数据库中 - 您的属性(或您的案例中的列)与您的实体(您的案例中的表)之间没有逻辑关系,其他只是出席。
非常非常难以维护
如果您的表增长,应该将哪些列编入索引?你如何防止某些人无知 - 正如你所说的那样 - 默认情况下 - 在一张桌子上添加200列?这里可以总结出许多其他问题......
限制怎么办?
您将如何决定允许添加/删除/编辑哪些列?你是如何强迫他们选择合适的柱型?或者当添加一个表时:(coumpound)主键应该是什么?请记住:您的管理员无知。我想这会增加对元表的需求,持有这种信息。您确定要为此编写所有逻辑吗?并且你确定你想要跟踪错误等错误,这些错误最有可能让你的系统像卡片屋一样崩溃吗?
它闻起来像一张excel表......
没有功能,但仍然。那么为什么不向管理员发送谷歌文档的链接? ;)
不,这听起来像个坏主意......
请发布您的完整用户案例,我确信我们可以考虑更好的解决方案,然后添加列并将表添加到数据库。