我应该使用多个mysql数据库表来存储php数组数据吗?

时间:2016-05-05 07:11:16

标签: php mysql

我有一个食物网站,厨师可以从表格中添加他们的产品详细信息。

表单字段名称如下:

  1. 名称
  2. 描述
  3. 菜单列表(用户可以添加更多)
    一个。菜单名称
    湾菜单说明
       (添加更多+)
  4. 数据和时间(用户可以添加更多)
       (添加更多+)
  5. 根据这个表单,我使用以下表结构到mysql数据库:

    表名:产品

    pid   name      des    price    menuname         menudes         datetime
    --------------------------------------------------------------------------
    
    1     chicken   des    3        serialize data   serialize data  serialize data
    2     chicken2  des    4        serialize data   serialize data  serialize data
    3     chicken3  des    5        serialize data   serialize data  serialize data
    4     chicken4  des    6        serialize data   serialize data  serialize data 
    

    因此,您会发现list of menudata and time字段可以是3,4或更多。所以,我使用php数组从这两个字段获取值并序列化然后将其保存到数据库。

    我的问题是:

    1)我应该为list of menudata and time字段使用另外两个表吗?如果是这样,为什么? 2)或者,我应该使用php序列化数据来存储这两个字段值,就像我现在正在做的那样? 3)如果我使用另外2个表来存储这2个字段数据如何更新值?

    例如:在下表中,您会看到pid 1有2个日期时间值。因此,要更新2中的任何一个值,我是否需要删除这2个日期时间并再次保存日期时间?

    日期表:

    id    pid    dat3_time
    ----------------------
    1     1      1201245772    
    2     1      1201245772
    3     2      1201245772
    4     2      1201245772
    5     3      1201245772
    

1 个答案:

答案 0 :(得分:1)

1.-是的,您应该出于可扩展性的原因并保持结构一致,您应该存储与菜单相关的所有产品

2.-这是一种可能性,但您无法按产品进行搜索,也无法更新或删除与菜单相关的元素。

3.-这是SQL的基础知识,我建议你阅读有关连接和更新的内容。 一个简单且不起作用的例子就是。

UPDATE products_time SET available_time = $newtime 
JOIN products ON products.id = products_time.productId
WHERE product.id = $productId