我現在對一些數據進行操作﹕
有Quality(id,name)材質表
有Material(id,name,qualityid)原材料表問題﹕
在刪除Quality中的一行時該采用什么方法?1.先檢查在Material中是否有引用﹐如果無﹐則直接將其刪除(或者在Quality中再添加一個字段State(bit)﹐將其修改為0﹐使數據降級)﹐這樣做效果是最好的了﹐但同時也是最不可取的﹐因為我打算寫一個易擴展的系統﹐如果每次在刪除之前都去檢查引用﹐那么以后如果修改了庫結構或是增加了新的引用﹐那么就不得不去修改之前的程序
2.直接在Quality中加入State(bit)字段﹐每次刪除時﹐不管3721將State修改為0﹐然后所有有引用Quality的id的地方都變為空值。很多系統就是用這種方式﹐但是客戶很難接受﹐因為之前定義的好好的資料﹐突然都成了空白﹐非常非常不舒服﹐我沒寫程序之前最痛恨這種程序
3.同2﹐加入State,刪除時也是將State修改為0﹐但是在有引用Quality的地方繼續顯示當時添加(編輯)引用的地方引用該Quality的id﹐只是在新增時已經看不到State標記為0的Quality的id了﹐這種方法也似乎不妥﹐明明不存在的數據﹐卻挂在了不該出現的位置...
各位兄弟是怎樣處理這種問題的呢﹐盼回
有Quality(id,name)材質表
有Material(id,name,qualityid)原材料表問題﹕
在刪除Quality中的一行時該采用什么方法?1.先檢查在Material中是否有引用﹐如果無﹐則直接將其刪除(或者在Quality中再添加一個字段State(bit)﹐將其修改為0﹐使數據降級)﹐這樣做效果是最好的了﹐但同時也是最不可取的﹐因為我打算寫一個易擴展的系統﹐如果每次在刪除之前都去檢查引用﹐那么以后如果修改了庫結構或是增加了新的引用﹐那么就不得不去修改之前的程序
2.直接在Quality中加入State(bit)字段﹐每次刪除時﹐不管3721將State修改為0﹐然后所有有引用Quality的id的地方都變為空值。很多系統就是用這種方式﹐但是客戶很難接受﹐因為之前定義的好好的資料﹐突然都成了空白﹐非常非常不舒服﹐我沒寫程序之前最痛恨這種程序
3.同2﹐加入State,刪除時也是將State修改為0﹐但是在有引用Quality的地方繼續顯示當時添加(編輯)引用的地方引用該Quality的id﹐只是在新增時已經看不到State標記為0的Quality的id了﹐這種方法也似乎不妥﹐明明不存在的數據﹐卻挂在了不該出現的位置...
各位兄弟是怎樣處理這種問題的呢﹐盼回
又见高人来!
有问题赶紧问!
有Material(id,name,qualityid)原材料表
^^^^^^^^^^^^^^^^^^^^^^^^^
说说自己的看法
Quality(id,name)材質表
Material_Quality(Materialid,Qualityid)增加表
Material(id,name)原材料表
StandardPart
StandardPart_Quality
^^^^^
如果能设计成这样 是不是就没那些问题了
Quality(id,name)材質表
Material_Quality(Materialid,Qualityid)增加表
Material(id,name)原材料表
StandardPart
StandardPart_Quality
^^^^^
如果能设计成这样 是不是就没那些问题了
我沒看出來這和我的設計的根本區別﹕(
Quality(id,name)材質表
Material_Quality(Materialid,Qualityid)增加表
Material(id,name)原材料表
StandardPart
StandardPart_Quality
把删除判断的操作都放存储过程中,其实这样的改动在程序设计中来说应该是比较小的了。
PFLogo(id,ptable,ftable)
如果你有新建了一个表(newtable),并且这个新表和原来的某个表有关联就在这个表里记录一下比如
id ptable ftable
-------------------------
1 Quality Material
2 Quality newtable
3 other1 other1f1
4 other1 other1f2
然后再修改你原来的存储过程,每次删除主表时来检测一下PFLogo这个表,如
select ftable from pflogo where ptable='Quality'
这样可能会找到N个结果....剩下的就是存储过程中写代码的问题了..
結貼,謝謝大家伙了