日期:2014-05-17  浏览次数:20841 次

问个比较浅的逻辑问题,求解答
我想做一个新增功能,是关于学生表,民族表,学位表之类的,其中学生表有民族ID,学位ID。关于新增功能,因为学生信息表有很多外键,例如民族ID,学位ID之类的,但新增填写的时候只需填写名称,例如民族名称,学位名称,却要在学生信息表中增加相应的ID,例如民族ID,学位ID,那新增的时候是不是先根据XX名称,找到并返回XXID,再把这些ID添加进去学生表?我暂时只想到这个办法,请问有更好的办法吗?

------解决方案--------------------
如果你觉得画蛇添足,那么你为什么还要学人家用Id呢?可以直接用名称啊!

我们知道,假设中国的“回族”改了名字,那么肯定是一个浩大的工程。因此我们完全没有担心民族的名称会经常修改。
------解决方案--------------------
第一个p哥已经说了,直接用学位名称或者名族名称作为主键。第二个,页面页面表现上,最好用下拉框,或者在页面上加几个下拉框,自动绑定。
假如这两个都不能修改,或者说修改较麻烦,那么在点击 添加或者修改按钮的时候,第一步是先维护 和学生表相关联的 外键表信息。。例如:
---------------------------------------
添加学生时,输入了一个学位名称,1.判断学位名称是否存在,不存在要加一条记录。并返回ID
2.存在就直接返回ID.
输入名族时,同上。
---------------------------------------
修改学生时,输入一个学位名称,1.根据学生ID得到学位名称。2.判断学位名称是否变化。3.如果有变化,判断变化后的学位名称是否存在,不存在添加,返回学位ID.存在不添加,查询返回ID. 4.如果没有变化,保持不变。
----------------------------------------------
删除学生时,1.判断除了学位除了当前学生外,有没有其他人用,如果没有,删除此学位信息,如果有不删除。民族同上。
2.删除学生信息。
----------------------------------------------

这种设计的好处是,把学位信息,名族信息的管理嵌入到学生信息管理中。页面少了,但是相对应的代码的复杂度较高。
关键在于,维护学生表之前要先维护 与学生表相关联的 外键表信息。