1

我正在开发一个图形编辑器,它使用拖放来构建分层图(包含节点和链接),图中的每个节点都应该链接到我们数据库(SQL Server)中的一个表,我做了很多关于基于 javascript 或/和 JSON 规范的库来绘制节点和链接,有很多很好的例子可供参考。但我不知道如何将图形链接到数据库(SQL Server、Oracle、MySQL ......)。我想到了这个架构:

技术架构

我看过D3库,它创建了数据驱动的图表,但我认为它只使用平面文件,而不是关系数据库。首先你能告诉我我的架构是否经过深思熟虑?其次,可以给我一些关于如何将我的图表链接到 DBMS 的想法。

非常感谢。

4

1 回答 1

1

假设一个节点被反序列化为以下 POCO:

public class Node
{
    public int id {get;set;}
    public string name {get; set;}
    public List<int> outBoundConnection {get;set;}
    public List<int> inBoundConnection {get; set;}
}

id 字段来自数据库。这将用于跟踪对象。假设每一行/节点/.. 都有一个唯一的 id,您需要在对象的整个生命周期中保持这一点(查询 -> POCO -> JSON -> D3)。此 ID 会将您的 D3 数据集链接到您的 SQL 服务器行。

我希望这有助于作为一个总体大纲。

  1. 设置一个 Web 项目,该项目将公开 D3 将使用的 Web 服务。

  2. 创建一个 Web 服务来查询节点。以 JSON 格式返回数据。

    D3 具有用于 Web 服务的 API

您可能想查看AutoMapper,因为它使从 DataTable/Reader 转换为 POCO 变得非常容易。或者你最喜欢的语言的 DTO/OOM 框架。

在此 Web 服务中:创建与数据库的连接,查询所需的表,执行查询,将返回的数据转换为类对象 (AutoMapper),将您构建的任何结构返回为 JSON。

现在,由于 id 在整个生命周期中都会保留,您可以使用 id 作为参数向您的 Web 服务发出请求。

因此,例如,如果您想删除一条笔记。您将向接受 id 作为参数的 Web 服务端点发出 HTTP DELETE 请求(jQuery 在这里派上用场)。

或者,如果您想删除连接节点,请创建一个带有两个 ID 或连接 ID 的 Web 服务(如果您以这种方式设置了架构)。

您想了解图表数据的独特之处。

于 2013-05-21T14:35:29.480 回答