如何根据所选选项存储不同类型的数据

时间:2017-04-27 18:15:49

标签: php mysql database-design relational-database

我目前正在用PHP创建竞赛系统。对于数据库,我使用MySQL。

当用户想要提交时,他可以选择两种类型的条目:

  1. 链接到程序
  2. 程序本身。
  3. 在我的网站上,用户还可以使用我在网站上提供的完整编码环境创建程序。然后,这些程序将存储到表scripts中的数据库中,该表具有列

    • user(代表用户ID)
    • script_id(代表脚本ID)
    • name(代表程序名称)
    • script(表示程序本身代码的LongText)

    现在,如果用户准备提交,他可以决定他的提交是否是他之前在我的网站上创建的程序或程序的链接。

    如果他参加完整的计划,他必须从下拉列表中选择一个。

    我的问题是关于服务器端的。

    当用户点击"提交"时,JSON格式的字符串包含提交的type01)和payload (包含链接或script_id)的长字符串。

    现在在服务器端,我收到了这些信息,我想存储用户的提交。 现在这里是实际问题:

    如何存储此信息,以便我可以轻松访问提交的类型及其值(链接或完整源代码)?

    我不想再次保存脚本的整个源代码,因为用户已经这样做了,它已存储在表scripts中。

    我想到了类似的东西:

    *---------------------------------*
    | submission_type |     value    |
    *---------------------------------*
    |        0        |   google.com |
    *---------------------------------*
    |        0        |   stackoverf |
    *---------------------------------*
    |        1        |       3      |
    *---------------------------------*
    |        1        |      10      |
    *---------------------------------*
    

    但这有点混乱,因为我不希望在value列中有一个字符串。

    您认为存储未知类型数据的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

在数据库中,您只需要一个表scripts和一个表submission

在PHP页面中,当用户选择"链接到程序" 时,您可以使用以下代码调用添加提交功能:USER_ID, SCRIPT_ID

但是如果用户选择"程序本身" ,首先使用代表程序本身代码的 LongText调用函数来创建脚本 。之后你现在有一个script_id所以如上所述调用提交功能。