如何在MySQL中创建动态表

时间:2014-12-16 21:11:38

标签: php mysql database-design

我正在尝试创建一个系统,其中将动态创建所有新表(或预定义数据库中的对象。)

这是设计的过度视图,我将有一个预定义的表

  • 对象(即对象1,2,3 ...... n)
  • 字段(与对象相关)字段“ABC”与对象相关(字段1链接到对象2 ....)
  • 数据(即每个字段的值),因此此表中的第10行是字段1的值。

例如 在“objects”表中,我有一行看起来像这样:

    object_id            object_name
    1                    accounts
    2                    users
...
...
...

在字段表中,我将有以下行:

    field_id         field_label           object_id
    1                Account Name          1
    2                Specialty            1
    3                DBA                   1
    4                First Name            2
    5                Last Name             2
...
...
...

最后,数据将在数据表中捕获,它看起来像这样:

data_id          value           field_id      object_id
1                Mike            4             2
2                Signs/Graphics  2             1
...
...
...

这个设计允许我动态创建一个新对象,在这个对象中创建字段,最后捕获每个字段的数据。一切都将完成而无需创建/更改表格。

问题

我遇到的问题是,如何为每个对象生成唯一标识? (我需要能够在动态对象中识别出一行)

例如,如果我想在帐户对象内创建100k帐户“唯一帐户”。如何为每行自动分配唯一ID?

我应该能够在字段对象中创建一个新字段并将其称为“帐户ID”,并将其与object_id 1 相关联。然后自动填充该字段内的自动增量值。由于字段“帐户ID”是主要标识符,因此它应该对每个对象都是唯一的。

我相信我完全理解了设计,但不确定如何自动生成唯一标识符。稍后将使用唯一标识符在将数据存储在数据对象中之前捕获数据。那么数据对象将是这样的

data_id          value           field_id      object_id    object_unique_id
1                Mike            4             2            1
2                Signs/Graphics  2             1            1
3                Jack            4             2            2
3                Jay             4             2            3
...
...
...

数据对象的第1行将指向field_id,object_id和object_unique_id,它们代表我在“名字”字段引用的确切帐户。

我使用MySQL作为DBMS和PHP作为脚本语言来实现这一目标。

非常感谢任何帮助

0 个答案:

没有答案