【问题标题】:Should I use multiple mysql database table to store php array data?我应该使用多个mysql数据库表来存储php数组数据吗?
【发布时间】:2016-05-05 07:11:15
【问题描述】:

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

表单字段名称如下:

  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 表吗?如果是这样,为什么?
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

【问题讨论】:

  • 如果您将菜单和日期时间存储在其他表格中,它可以帮助您在时间搜索和标准化表格中始终帮助处理速度。但是否需要,取决于您的要求。是否有搜索菜单名称的选项,则第 2 表有效。将数据保存在日期表中将取决于您的业务逻辑
  • 感谢@DipanwitaKundu,但是如果我使用另一个 2 表,如何更新值?要更新值,我是否需要删除特定 ID 的现有所有值并再次保存所有数据?
  • 让我知道为什么日期表存储重复的 date3_time....
  • 在我的表单中用户可以添加多个日期和时间。因此,如果我使用另一个表作为日期和时间,那么 1 个 PID 会有多个日期和时间,对吧?
  • 那么日期表也应该包含用户 ID,因此在更新时,您将更新那些 user_id= 和 product_id= 的日期

标签: php mysql


【解决方案1】:

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

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

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

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

【讨论】:

  • 我了解您的更新查询,但您看到我在日期时间表中有相同的 2 个 pid。那我该如何更新呢?我想我必须根据表 id 更新它。感谢您的回答。
  • 是的,你会的,但这不是问题,因为在显示结果时,您将选择连接表的 ID,因此当您选择数据并显示时,它已经可供您使用它
  • SELECT products_time.* FROM products_time 在 products.id = products_time.product.id 上加入产品
猜你喜欢
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多