在连接表中进行编辑的最佳实践是什么?
Items{ItemId, Name, Price...}
Shops{ShopId, Name, Address...}
ItemsInShops{ItemId, ShopId, DeliveryDate...}
现在我一家店里有30件商品。我想编辑该列表,取消选中 10 个项目并选中 50 个新项目。
我通过以下方式执行此操作:按“ItemId”从“ItemsInShops”中删除所有行并添加新值。我认为这不是一个好的解决方案。有没有更好的方法来进行这种更新?
也许我没有用好的例子来表达问题。看看这个:
User{UserId, Username, Password...}
Roles{RoleId, Name, Description} // Admin, Member, Superuser, Junior etc
UsersInRoles{UserId,RoleId}
用户可以拥有任意数量的角色。
John > Admin, Member, Superuser
这是联结表“UserInRoles”中的三行。
如果我想更新该用户以具有以下角色:
John > Member, Junior
现在我通过以下方式对数据库进行更新:
我从“UserInRoles”表中删除所有 John 角色并添加新数据。我不知道除了删除全部并插入新之外还有什么更好的方法来进行此更新?如果由于某种原因更新失败(例如失去互联网连接)怎么办?