【问题标题】:What is more safe in MySQL, one field or many?MySQL 中哪个更安全,一个字段还是多个字段?
【发布时间】:2015-06-22 18:25:29
【问题描述】:

我使用 PHP 和 MySQL。假设我存储了许多 ID 供以后使用。

示例

输入后有一个新值。这可能是一个数组。

prefix-1232
pref-5453
prefix54432
pref-2233

随着时间的推移,我想向这个“数组”添加更多的 ID,或者它最终可能会是什么。在我看来,我有两个选择。

1.将值保存为 MySQL 中的一个大值,可能是 json 转换后的数组。

好处是构建速度更快。我的问题的缺点是这种方法是否不安全,因为我同时保存了所有 ID?如果出现错误,所有值将立即丢失。

2。将每个值保存为新表中的新行(已编辑,而非数据库)

这样做的好处是,如果我影响一行,其余的值不会受到影响。缺点是构建需要更多时间,而且可能会出现其他错误。

哪种方法最安全、最正确,为什么?

【问题讨论】:

  • "出现错误,所有值将立即丢失。"这应该就是发明交易的原因,我相信您没有使用交易。在这种情况下,您可能会得到重复的数据/ID。

标签: mysql database field


【解决方案1】:

正常的 SQL 解决方案是将每一行作为单独的行添加到一个新的(不是一个新的数据库)中。这有很多优点:

  • 插入很简单——只需在表格中插入一行。
  • 删除值很容易——只需从表中删除一行。
  • 删除重复项很容易,甚至可以由数据库强制执行。
  • 查找单个值的存在很容易 - 并且可以使用索引。

您想要将值存储在 JSON 数组中的唯一时间(在我看来)是当您以这种方式获取数据并且只想返回整个值时。数组本质上是一个 blob。在原生 JSON 支持解析此类值的数据库中,这种观点不太强烈。

【讨论】:

  • 好的,我相信了。这样做时,仅使用 varchar(255) unique 为其添加一列是否正确?在我的情况下,我看不出我如何需要自动增加 ID 列,即使这是最佳做法?
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 2010-11-10
  • 1970-01-01
  • 2012-09-28
相关资源
最近更新 更多