Wie ein Bayes-Netzwerk oder allgemeiner zu modellieren, ein gerichtetes gewichteten Graphen, in SQL?

StackOverflow https://stackoverflow.com/questions/323456

Frage

fand ich ein paar Artikel online Beispiele für die Bereitstellung, wie Graphen verschiedener Art (DAGs, insbesondere) in SQL zu modellieren, aber sie schienen alle enorm komplex, da die relative Einfachheit, was sie zu modellieren.

Gibt es eine beste / standard Art und Weise, dies zu tun? Meine heutige Denken ist so etwas wie folgt aus:

create table node (
  id int not null auto_increment,
  name TEXT
)

create table edge (
  from_node int not null,
  to_node int not null,  
  weight float
) 

Gibt es etwas falsch? Wer weiß, eine bessere (robuste, vielleicht) Art und Weise?

War es hilfreich?

Lösung

Das wäre durchaus ein sinnvoller Ansatz sein. SQL nicht wirklich rekursive Strukturen tut gut, obwohl einige Systeme wie Oracle oder SQL Server eine rekursive Abfrage-Funktion.

Auch wenn Sie eine Struktur finden, die für bestimmte Suchtypen besser funktioniert Ich glaube nicht, dass Sie eine deutlich bessere Struktur im allgemeinen Fall finden. Wenn Ihre Anwendung Anforderungen auf diese Weise begrenzt sind, eine solche Optimierung kann bringen Sie profitieren.

Als ein Bayes-Netzwerk ist eine gerichtete azyklischen Graphen (DAG), eine rein rekursive Mutter -Kinder Beziehung nicht ausreichend ist, um das Netzwerk zu modellieren (dh ein Knoten kann mehr als ein Elternteil haben), so dass ein M:. M Beziehung des Typs Sie beschrieben haben sein wird, erforderlich

Verschiedene der 'SQL für Smarties' Bücher von Joe Celko einen guten Überblick über Techniken zur Implementierung und Abfragen von hierarchischen und Graphenstrukturen in SQL geben. Diese sind mit Abstand die beste Ressource zu diesem Thema, die ich kenne. Sehr zu empfehlen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top