java - 關(guān)聯(lián)表修改一般怎么做
問題描述
屬性表 attr商品表 item關(guān)聯(lián)表 item_attr
屬性表字段cat_id、title
商品表表字段item_id、title
商品表表字段item_attr_id、item_id、attr_id
比如屬性有5條記錄,cat_id分別是1、2、3、4、5添加一個商品,選擇了屬性2、5
那么關(guān)聯(lián)表應(yīng)該就是兩條記錄,現(xiàn)在如果要修改,比如去掉5增加4,這樣一般這么處理
我現(xiàn)在是先獲取 原來的舊 attr_id,一個一個去查找看新 attr_id 有沒有,如果沒有就刪除,再循環(huán)新attr_id一個一個查找就的 attr_id里面有沒有,如果有跳過,沒有就添加
有更好的方法沒,一開始我想法是先全部刪除,再吧新的添加,這樣是不是不科學(xué)
問題解答
回答1:關(guān)聯(lián)表應(yīng)該就是庫存表。一個商品+一個屬性,定義一個庫存。你上面說的遍歷之后,比對之后,有變動就修改,沒有就刪除,這個是對的。
回答2:你后面說的是科學(xué)的,前面講的太復(fù)雜,那才不科學(xué)。關(guān)聯(lián)表中先根據(jù)item_id全部刪除,再全部添加delete from item_attr where item_id = 1;insert into item_attr (item_id、attr_id) values (1, 1), (1, 2), (1, 2);這種效率最高
回答3:全部刪除,再根據(jù)最新的全部添加。邏輯簡單,效率最好
相關(guān)文章:
1. javascript - 如何在NW.JS中使用Node自動重啟進(jìn)程?2. javascript - 為什么會打印兩次啊?3. gulp-ruby-sass編譯出來的文件有錯4. dockerfile - docker-compose啟動lnmp失敗?5. 引入traits后,為什么index得是空的呢?6. python - 為什么寫了換行語句,結(jié)果還是沒有換行?7. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。8. python - django中普通用戶如何利用admin修改自己的信息?9. mysql - SQL能這樣表示嗎?10. string - Python字符串不區(qū)分大小寫替換
