如果设置这样一个结构,一个父类有多个子类,一个子类有多个父类的情况。(200分) 你这样设计是我能接受的,因为以值得冗余换取速度的最大化除非你愿意让father成为以符号间隔的类型 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是意思是不是吧:3 JBuilder 14 JBuilder 2换成:3 JBuilder 1,2这样的形式? -----如果设置这样一个结构,一个父类有多个子类,一个子类有多个父类的情况。我不知道你什么意思,但我告诉你上面这句话没有可能实现的。java是单继承语言,一个子类只能有一个父类。 alienbat(死灵巫师) : 这定义数据库结构更Java有关系吗? 拆成两个表就解决了,如果是Java的问题,用Interface wuyg(wuyuguang) : 拆成两个表?怎么拆呢?能做些说明吗?谢谢! 这中情况,直接用数据库读取操作处理,要是设计成java结构,或者可以这样一个结构:public class jiegou{ private int id; private String name; private int[] fatheid;//存放斧节点的点..... get()..set()...... } 这种结构从父类继承是不行的,建议用interface 使用interface 可以继承"父类"的性状!! (注意,这里没有设置父子的关联关系!!)使用shaokun305(混口饭吃!) 的private int[] fatheid;//存放斧节点的点可以设置父子的关联关系!!!请大家搞清楚情况!!! 感觉说得糊里糊涂的???? 我倒!!! 加入一个表使得多对多的关系转化为一对多的关系BaseTable:ID name 1 java 2 Borland 3 JBuilder RelationTableChildID ParentID3 13 2 To uiiu:just as you know!To carolbaby:I think the redundant is not better than uiiu's!To all:this is a database structure problem,not java! 基本同意uiiu(刚学)的意见。总的来说搂主是不是要这样的东西:表的结构: ID name father表中数据: 1 java 0 2 Borland 0 3 JBuilder 1 4 JBuilder 1/2小人的愚见!! 刚刚看数据结构 !!!望楼主见谅!!! 首先谢谢各位!我原来想要的是(father改为字符串格式保存该记录的所有父类ID,用特定符号分割,只是这样查询的时候用到like语句,我想like语句效率不高。所以我想吧father换成int格式):表的结构: ID name father表中数据: 1 java 0 2 Borland 0 3 JBuilder 1,2to:carolbaby(猫儿) 不知道分成两个表是否在效率上比我那上面的设置更好? 一个表可以实现多几继承,可以实现多彩旦,但是数据库的效率比较低id fatherid不过可以通过一次性把数据库中所有的记录全部读出来,在内存实现递归生成数。// $Id: MenuTree.java,v 1.10 2000/02/02 15:18:35 gongke Exp $package peiyang.priv;public class MenuTree { public ArrayList cach = new ArrayList(); private DB mydb = new DB(); /** * 取得子菜单数据集(递归调用) */ public void getChildMenu(int fatherId) throws java.sql. SQLException { CachedRowSet rs = new CachedRowSet(); for (int i=0;i<cach.size();i++){ Menu menuItems=(Menu)cach.get(i); if (menuItems.getFatherId()==fatherId){ Menu menuItem = new Menu(); menuItem.setMenuId(menuItems.getMenuId()); menuItem.setMenuName(menuItems.getMenuName()); menuItem.setMenuLevel(menuItems.getMenuLevel()); menuItem.setMenuUrl(menuItems.getMenuUrl()); menuItem.setFatherId(menuItems.getFatherId()); tree.add(menuItem); getChildMenu(menuItem.getMenuId()); } } } public void initial() { CachedRowSet rs = null; try { String sql = "select * from Menu order by menuOrder"; //System.out.println(sql); rs = mydb.executeQuery(sql); while (rs.next()) { Menu menuItem = new Menu(); menuItem.setMenuId(rs.getInt("menuId")); menuItem.setMenuName(rs.getString("menuName")); menuItem.setMenuLevel(rs.getInt("menuLevel")); menuItem.setFatherId(rs.getInt("fatherId")); menuItem.setMenuUrl(rs.getString("menuUrl")); cach.add(menuItem); } } catch (Exception e) { System.out.println("initial:"+e.getMessage()); } } public void destroy() { cach.clear(); } public static void main(String args[]) {//测试用利 MenuTree mytree = new MenuTree(); mytree.initial("1"); try { mytree.getUserMenu(0, "1"); } catch (Exception e) { System.out.println(e.getMessage()); } for (int i = 0; i < mytree.tree.size(); i++) { Menu myMenu = (Menu) mytree.tree.get(i); System.out.println(myMenu.getMenuName()); } }}这样对于数据库中角色和彩旦不多的情况下,数据库访问速度可以不计,而在内存中实现递归也很快。 我不太清楚效率问题,我倾向于做两张表是因为,如果把多个ParentID的值用分割符隔开放在字段里面,相当于每一条记录中有了多个ParentID项,这样就违背了数据库设计的准则,也使得用主外键控制数据合法性变得不可能。 同意 carolbaby(猫儿) 的看法。To longrenrex(菜菜龙) 从楼主的例子不是可以看出“一个子类可以有多个父类”吗? 你为什么不用id作为pk, 就可以得到ID name father表中数据: 1 java 0 2 Borland 0 3 JBuilder 1 4 JBuilder 2 关于数据库存储结构的问题不应该在java论坛上问。 慢慢想觉得 carolbaby(猫儿) 的哪两个表设计得还是有道理的. 请问:sadenxu(天蝎座的蛇不一定是天下最毒的毒蛇) 您为什么会说“I think the redundant is not better than uiiu's!”能说说你的看法吗? 新浪微博认证如何跳过认证页面 S2SH如何做权限管理?? 输入框只能输入1位数字JS火狐上无效 在页面调用hibernate sessionfactory.opensession()没有反应? javareg.exe 送高分,解决数据库问题 servlet如何把值传回给jsp? 如何在jsp页面获得js里面初始化的值 弱弱的问一下,怎么调用WEBSERVICE 一个工作中遇到的问题,请有WEB开发经验的朋友帮忙,分数至少给100分! 为什么Eclipse整合Jboss后无法启动Jboss 高分求救:如何解决有多个web server的session问题
3 JBuilder 1
4 JBuilder 2换成:
3 JBuilder 1,2这样的形式?
这定义数据库结构更Java有关系吗?
是Java的问题,用Interface
或者可以这样一个结构:
public class jiegou{
private int id;
private String name;
private int[] fatheid;//存放斧节点的点
.....
get()
..
set()
......
}
建议用interface
ID name
1 java
2 Borland
3 JBuilder RelationTable
ChildID ParentID
3 1
3 2
To carolbaby:I think the redundant is not better than uiiu's!
To all:this is a database structure problem,not java!
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1
4 JBuilder 1/2小人的愚见!! 刚刚看数据结构 !!!望楼主见谅!!!
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1,2
to:carolbaby(猫儿) 不知道分成两个表是否在效率上比我那上面的设置更好?
id fatherid
不过可以通过一次性把数据库中所有的记录全部读出来,在内存实现递归生成数。
// $Id: MenuTree.java,v 1.10 2000/02/02 15:18:35 gongke Exp $
package peiyang.priv;public class MenuTree {
public ArrayList cach = new ArrayList();
private DB mydb = new DB();
/**
* 取得子菜单数据集(递归调用)
*/
public void getChildMenu(int fatherId) throws java.sql.
SQLException {
CachedRowSet rs = new CachedRowSet();
for (int i=0;i<cach.size();i++){
Menu menuItems=(Menu)cach.get(i);
if (menuItems.getFatherId()==fatherId){
Menu menuItem = new Menu();
menuItem.setMenuId(menuItems.getMenuId());
menuItem.setMenuName(menuItems.getMenuName());
menuItem.setMenuLevel(menuItems.getMenuLevel());
menuItem.setMenuUrl(menuItems.getMenuUrl());
menuItem.setFatherId(menuItems.getFatherId());
tree.add(menuItem);
getChildMenu(menuItem.getMenuId());
}
} }
public void initial() {
CachedRowSet rs = null;
try {
String sql = "select * from Menu order by menuOrder";
//System.out.println(sql);
rs = mydb.executeQuery(sql);
while (rs.next()) {
Menu menuItem = new Menu();
menuItem.setMenuId(rs.getInt("menuId"));
menuItem.setMenuName(rs.getString("menuName"));
menuItem.setMenuLevel(rs.getInt("menuLevel"));
menuItem.setFatherId(rs.getInt("fatherId"));
menuItem.setMenuUrl(rs.getString("menuUrl"));
cach.add(menuItem);
}
}
catch (Exception e) {
System.out.println("initial:"+e.getMessage());
}
} public void destroy() {
cach.clear();
} public static void main(String args[]) {//测试用利
MenuTree mytree = new MenuTree();
mytree.initial("1");
try {
mytree.getUserMenu(0, "1");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
for (int i = 0; i < mytree.tree.size(); i++) {
Menu myMenu = (Menu) mytree.tree.get(i);
System.out.println(myMenu.getMenuName());
}
}
}
这样对于数据库中角色和彩旦不多的情况下,数据库访问速度可以不计,而在内存中实现递归也很快。
同意 carolbaby(猫儿) 的看法。To longrenrex(菜菜龙) 从楼主的例子不是可以看出“一个子类可以有多个父类”吗?
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1
4 JBuilder 2