mysql如何更新嵌套数据

{
"name":"游戏名称",
"region":[{"language":["英语","日语","中文"],"regionName":"日本"}],
....游戏的其他属性
}

有这么一条数据,我是这么做的,建立一个主表,然后在建立一个地区region表,然后在建立一个语言表,但是有个问题就是,更新是好麻烦啊,用主表id查询到后删除地区表,语言表删除对应的数据,然后在insert创建新的数据,但是有个问题,地区表和语言表ID自增长主键,id快要到10万.该如何处理这种嵌套数据,我觉得我这种处理方式有问题。

阅读 2.2k
1 个回答

我看下来,你说得对有两个问题,

  1. 嵌套数据怎么处理?
  2. id自增长要到10w了.

第一个问题:

目前这种存储方法虽然略显繁琐.但是我个人觉得还可以,清晰且扩展性强.
至于怎么修改,麻烦一次是必须的了. 你可以在服务层面上将这几个表封装一下,对外只暴露"GAME"的增删改查接口,内部具体的修改多个表等等可以写一次,之后调用即可.(推荐).
还可以在数据表上使用触发器,来让对language的更改自动同步到region表上.(比较麻烦且后续维护很难搞,不推荐).

第二个问题:

这个问题我觉得不是问题啊,10w的主键完全不影响mysql的运行.如果只是你个人觉得不爽的话,可以使用truncate而不是delete来删除语句,这样子可以让主键=真实存在的数据,也就是说插入并删除数据后,不会再占用一个主键.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题