在MySQL中,一个字段还是多个字段更安全?
我使用PHP和MySQL。假设我存储了许多ID供以后使用 示例 输入后会有一个新值。这可能是一个数组在MySQL中,一个字段还是多个字段更安全?,mysql,database,field,Mysql,Database,Field,我使用PHP和MySQL。假设我存储了许多ID供以后使用 示例 输入后会有一个新值。这可能是一个数组 prefix-1232 pref-5453 prefix54432 pref-2233 随着时间的推移,我想添加更多的ID到这个“数组”中,或者它最终可能是什么。在我看来,我有两个选择 1。将这些值保存为MySQL中的一个大值,可能是json转换的数组。 这样做的好处是可以更快地构建。我的问题是,这种方法是否不安全,因为我同时保存了所有ID?如果出现错误,所有值将立即丢失 2。将每个值另存为新
prefix-1232
pref-5453
prefix54432
pref-2233
随着时间的推移,我想添加更多的ID到这个“数组”中,或者它最终可能是什么。在我看来,我有两个选择
1。将这些值保存为MySQL中的一个大值,可能是json转换的数组。
这样做的好处是可以更快地构建。我的问题是,这种方法是否不安全,因为我同时保存了所有ID?如果出现错误,所有值将立即丢失 2。将每个值另存为新表中的新行(已编辑,而不是数据库) 这样做的好处是,如果我影响一行,其余的值不会受到影响。缺点是它需要更多的时间来构建,可能会出现其他错误
哪种方法最安全、最正确?为什么?通常的SQL解决方案是将每一行作为单独的行添加到新表(而不是新数据库)中。这有很多好处:
- 插入很简单——只需在表中插入一行即可
- 删除值很容易——只需从表中删除一行即可
- 删除重复项很容易,甚至可以由数据库强制执行
- 查找单个值的存在很容易,并且可以使用索引
在我看来,在JSON数组中存储值的唯一时间是以这种方式获取数据并返回整个值。该数组本质上是一个blob。这种观点在具有原生JSON支持解析此类值的数据库中不那么强烈。“出现了一个错误,所有值都将立即丢失。”这应该是发明事务的原因,我相信您没有使用事务。在这种情况下,您可能会得到重复的数据/ID。好的,我确信。执行此操作时,仅为其添加一列varchar(255)unique是否正确?在我的例子中,我不知道我怎么可能需要自动增加ID列,即使这是最佳实践?