我有一个网站,管理员将在其中管理多个projects
。
就结构而言,project
只是数据库中的一个表。所有项目将共享某些字段,但始终具有与所有其他项目不同的其他字段。该表将保存有关文档的信息。
我的问题是找到描述这种情况的最佳方法。由于管理员可以创建任意数量的项目,因此我想为他创建的每个项目创建一个新表。最初,所有表都将具有相同的字段,但是我将允许管理员为每个项目表创建字段。
有更好的方法吗?还是创建一个仅包含特定项目字段的表,然后将其与具有所有公共字段的主表连接起来,这更好?
我的解决方案是为每个项目创建一个表,如下所示:
table_project1(id, title, created_on, project1_field1, project1_field2, ...)
table_project2(id, title, created_on, project2_field1, project2_field2, ...)
等等..
在此示例中,所有项目表的
id
,title
和created_on
字段(实际上大约有10个共享字段)是相同的,但是每个项目表将具有其特定的字段(这些字段还将由管理员创建)另一个问题是,将由管理员动态创建的所有字段,我还必须能够搜索它们,因此我需要跟踪这些创建的字段。
最好或更好的解决方案是什么?
谢谢
最佳答案
如评论中所述,我将使用三个表:
1:您的主项目表具有始终存在的字段:
projects_table (id, title, created_on, project1_field1, project1_field2, ...)
2:第二张表,用于跟踪管理员添加的其他字段:
fields_table (id, projectId, name)
3:第三张表,用于跟踪已添加字段的值:
values_table (id, projectId, fieldId, value)
请注意,第三张表中的
projectId
并不是必需的,因为第二张表中已经存在它。是否添加这样的多余字段取决于您要对数据执行的操作以及效率方面的问题。您可以根据需要将列添加到表中,例如
created_on
。您能看到这如何工作吗?关于php - 在PHP中动态创建MySql表并对其进行跟踪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53060041/