Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >在RoR中使用循环图

在RoR中使用循环图
EN

Stack Overflow用户
提问于 2010-11-13 15:33:27
回答 3查看 431关注 0票数 0

我以前没有尝试过在Rails中使用图形,我很好奇最好的方法是什么。一些背景知识:

我正在创建一个Rails3站点,我认为将某些对象及其关系存储为图形会很有趣,其中每个对象都是一个节点,其中一些对象被连接起来,以表明这两个对象是相关的。图中确实包含循环,并且图中的节点不会超过100-150个(可能只有接近50个)。一个节点可能不会有超过五条边,平均每个节点有三到四条边。

我认为包含两列(每列都是对象的ID )的简单连接表可能是最简单的方法,但我怀疑这是最好的方法。另一个想法是使用像acts_as_tree这样的插件(它似乎没有在Rails3中更新...)或者acts_as_tree_with_dotted_ids,但我不确定他们是否有能力使用循环而不是层次树。

我目前最想做的就是轻松地从一个节点遍历到它的兄弟节点。我真的想不出有什么理由要遍历节点的同级节点,这就是为什么我考虑只做一个SQL连接表的原因。我只想在站点上有一个部分来显示与指定对象相关的对象,这个图是我指定关系的方法之一。

建议?我应该检查的东西吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-13 19:24:08

我将使用两个SQL表,nodelink,其中一个链接仅仅是两个外键,源和目标。这样,您就可以通过约束源节点或目标节点id来执行SQL select查询,从而获得指向某个节点的入站或出站链接集。您可以更进一步,将"graph_id“列添加到两个表中,这样就可以在两个查询中检索一个图的所有数据,并将其构建为一个后处理步骤。

这个策略应该和查找、安装、学习使用和实现插件一样简单(如果不是更容易的话)。

票数 1
EN

Stack Overflow用户

发布于 2010-12-13 02:14:53

根据您主要关注的是图上的操作,还是图的存储,您需要的可能是完全不同的。如果您想要方便的图形操作,请研究gem "rgl“(ruby图形库)。它实现了大多数基本的经典遍历和搜索算法。

如果您正在处理大约150个节点,那么您可能可以在数据库本身或关联列表中使用最小邻接表表示。然后,您可以将其提供给RGL以进行遍历和搜索操作。

如果我没记错的话,RGL有足够的抽象,您可以使用现有的类结构,您只需提供获取相邻节点的方法即可。

票数 1
EN

Stack Overflow用户

发布于 2010-12-13 00:12:55

假设它是一个有向图,使用一个映射表,比如

代码语言:javascript
代码运行次数:0
复制
id | src | dest

其中srcdest是对象表的FK。

如果您的对象并非都属于同一类型,请让它们都继承一个拼音类或使用另一个表:

代码语言:javascript
代码运行次数:0
复制
id | type | type_id

其中type是它所属的对象类型,type_id是它在另一个表中的id。

通过这样做,您应该能够使用以下命令为它指向的每个对象获取一个对象数组:

代码语言:javascript
代码运行次数:0
复制
select dest 
from maptable 
where dest = self.id

如果需要知道它的入站边缘,可以使用src代替dest执行相同类型的查询。

在此基础上,您应该能够轻松地编写所需的任何图形算法。如果需要权重,可以这样修改映射表。

代码语言:javascript
代码运行次数:0
复制
id | src | dest | weight
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4173272

复制
相关文章
JDBC连接池、JDBC Template使用
点击下载 链接:https://pan.baidu.com/s/1ooBjjuLDZytAHWyxkRXwOw 提取码:9bjo
不愿意做鱼的小鲸鱼
2022/09/24
7880
JDBC连接池、JDBC Template使用
JDBC连接大全哦
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); String url=”jdbc:oracle:thin:@localhost:1521:orcl”; //orcl为数据库的SID String user=”test”; String password=”test”; Connection conn= DriverManager.getConnection(url,user,password); 
全栈程序员站长
2021/04/26
7740
MySQL的JDBC连接
JDBC 是 Java Database Connective的缩写,表示使用Java去连接数据库进行数据操作的过程
全栈程序员站长
2022/09/09
3.3K0
jdbc连接oracle语法
jdbc也有事物:connection.setAutoCommit(false) 默认是true自动提交
HUC思梦
2020/09/03
9120
使用jdbc连接mysql
image.png JDBC连接MYSQL数据库: package cn.outofmemory.test;import java.sql.Connection;import java.sql.DriverManager;public class Mysql { public static void main(String arg[]) { try { Connection con = null; //定义一个MYSQL链接对象
java达人
2018/01/31
3K0
使用jdbc连接mysql
JDBC连接池
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
羊羽shine
2019/05/29
1K0
JDBC SSL连接MySQL
SSL(Secure Socket Layer:安全套接字层),利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
bisal
2021/09/10
5.7K0
JDBC SSL连接MySQL
jdbc连接mysql5.7_JDBC连接MySQL5.7的方法
1.首先准备mysql 和eclipse环境,在环境搭建好之后,从eclipse官网下载jdbc的驱动包,下载地址http://dev.mysql.com/downloads/connector/j/
全栈程序员站长
2022/10/01
4.2K0
java学习:jdbc连接示例
java中最常用的数据库连接技术就是JDBC。 目前几乎所有的主流数据库都提供了相应的jdbc驱动,可以简单理解为.net中的数据库客户端dll,.net中如果对于netframework默认不支持的数据库(比如sqllite,mysql之类),就必须要下载专门的数据库客户端dll文件,在vs.net中添加该dll的引用,然后就可以用它来连接数据库。 jdbc也是同样的道理,jdk默认安装后,几乎没带什么jdbc驱动,需要到各数据库提供商网站下载对应的jdbc驱动,以mysql为例,下载mysql jdbc
菩提树下的杨过
2018/01/24
1.5K0
python使用jdbc连接phoeni
链接:https://pypi.python.org/pypi/JayDeBeApi/
py3study
2020/01/13
9730
JDBC SSL连接SQL Server
上次碰到的是《JDBC SSL连接MySQL》,这次则是SSL连接SQL Server。
bisal
2021/09/10
2.9K0
常用JDBC连接池
针对不同的JDK需要引入对应的HikariCP,详见:Github项目地址 。 以JDK8为例子,在项目中引入如下依赖:
编程随笔
2023/10/15
3250
Hive通过JDBC连接HiveServer
修改 hadoop 配置 首先需要修改hadoop的配置文件etc/hadoop/core-site.xml,添加如下配置项,其中 <user> 为连接用户,根据具体用户替换。 <?xml versi
kongxx
2018/05/14
1.8K1
群晖docker使用教程_docker的使用
概括  Docker与传统虚拟机的区别 与传统虚拟机的区别  Docker的安装 的安装  Docker daemon , client , containerd  镜像与容器操作  容器运行配置  Docker网络配置 网络配置  Alpine Docker Image  制作自己的 Docker Image  Docker安全性问题 安全性问题  Docker运行原理
全栈程序员站长
2022/11/08
2.7K0
如何使用JDBC连接操作Kylin?
在之前的博客中已经谈到,Kylin提供了各种Rest API、JDBC/ODBC接口。如果我们要将数据以可视化的方式展现出来,需要使用Kylin的JDBC方式连接执行SQL,获取kylin的执行结果。本篇博客,为大家带来的就是如何使用JDBC操作连接Kylin的步骤流程!
大数据梦想家
2021/01/27
1.3K0
如何使用JDBC连接操作Kylin?
JDBC连接MySQL数据库
方式一: Driver driver = new com.mysql.cj.jdbc.Driver(); String url = "jdbc:mysql://localhost:3306/test?
Linux
2019/12/02
20K1
JDBC和连接池原理
JDBC是Java提供的一组操作数据库的API,可以屏蔽各种各样的数据库差异,向上提供统一的服务接口,数据库驱动程序会实现这些接口。
冰寒火
2023/03/04
1.2K0
JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】 sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。 对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可 这大大简化了我们的学习成本 3.
Java3y
2018/03/15
1.4K0
MySQL JDBC URL常用连接参数
实现本地事务表时,需要在update时返回被修改的行数,但是因为useAffectedRows=false,导致一直都返回匹配的行,事务重复执行。本文解释一下常用的MySQL Jdbc URl常用连接参数 常用属性 参数 作用 默认值 备注 useUnicode 是否使用unicode true mysql8没有这个属性了 characterEncoding 设置字符集 无 zeroDateTimeBehavior datetime的字段值全部为0时的处理方式 EXCEPTION 一般都会设置为con
十毛
2021/11/24
4K0
JDBC连接数据库
Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,
润森
2019/11/18
1.5K0

相似问题

连接到Docker mysql (jdbc url)

111

无法连接到postgres db - docker群

10

Docker群尺度

20

Docker群复制

20

Docker容器之间的JDBC连接(坞-组合)

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档