Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中,一个字段还是多个字段更安全?_Mysql_Database_Field - Fatal编程技术网

在MySQL中,一个字段还是多个字段更安全?

在MySQL中,一个字段还是多个字段更安全?,mysql,database,field,Mysql,Database,Field,我使用PHP和MySQL。假设我存储了许多ID供以后使用 示例 输入后会有一个新值。这可能是一个数组 prefix-1232 pref-5453 prefix54432 pref-2233 随着时间的推移,我想添加更多的ID到这个“数组”中,或者它最终可能是什么。在我看来,我有两个选择 1。将这些值保存为MySQL中的一个大值,可能是json转换的数组。 这样做的好处是可以更快地构建。我的问题是,这种方法是否不安全,因为我同时保存了所有ID?如果出现错误,所有值将立即丢失 2。将每个值另存为新

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

示例

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

prefix-1232
pref-5453
prefix54432
pref-2233
随着时间的推移,我想添加更多的ID到这个“数组”中,或者它最终可能是什么。在我看来,我有两个选择

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


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

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

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


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

通常的SQL解决方案是将每一行作为单独的行添加到新表(而不是新数据库)中。这有很多好处:

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

在我看来,在JSON数组中存储值的唯一时间是以这种方式获取数据并返回整个值。该数组本质上是一个blob。这种观点在具有原生JSON支持解析此类值的数据库中不那么强烈。

“出现了一个错误,所有值都将立即丢失。”这应该是发明事务的原因,我相信您没有使用事务。在这种情况下,您可能会得到重复的数据/ID。好的,我确信。执行此操作时,仅为其添加一列varchar(255)unique是否正确?在我的例子中,我不知道我怎么可能需要自动增加ID列,即使这是最佳实践?