-
23.12.06 02:00 #1
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo!
Gerade im Bereich von Social Networking Sites wie openbc / xing oder neuerdings auch das studivz findet sich eine interessante Funktionalität: Die Visualisierung des Pfades innerhalb eines Bekanntheitsgraphen der aufzeigt über welche Personen eine Person eine gewisse andere Person kennt.
Hierzu bin ich gerade über einen Interessanten Artikel gestolpert der diese Problematik (Edge list model of a non-tree graph) anhand eines Airline / Flughafen / Flugplan Szenarios erklärt.
http://www.artfulsoftware.com/mysqlb...qled1ch20.html
Wenn ich die nächsten Tage mal etwas Zeit finde baue ich dazu vielleicht mal ein kleines Beispiel.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Da wäre ich sehr interessiert dran! Wie siehts aus mit einem Beispiel?
-
17.01.07 22:38 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
hatte bisher leider keine Zeit diese spannende Sache weiter zu verfolgen. Na ja, werd mal schauen ob ich am Wochenende mal Zeit dafür habe...
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Das wäre echt total super! Ich bin gespannt!
-
Gibts schon was neues?
-
23.01.07 12:29 #6Daniel_CB Tutorials.de Gastzugang
Also ich habe eine PHP Klasse geschrieben die dieses möglich macht.
als Grundlage dient eine Datenbank mit folgenden spalten.
USER_ID USER_FRIEND
2 1
1 2
als Pfade kommt
2=>1
bei mehren verbindungen
10=>8=>3=>1
so als BSP.
bei interesse ICQ 292913800
-
23.01.07 20:49 #7
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
hatte am Wochenende genug damit zu tun mit Dominik die ca. 800 MB Attachments des tutorials.de Forums zu retten ... übrigens erfolgreich
Vielleicht nächstes Wochenende.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
26.02.07 23:01 #8
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
hier mal ein kleines Beispiel zum Aufbau eines Bekanntheitsgraphen in Oracle 10g mithilfe der neuen hierarchischen Abfragemöglichkeiten
in Oracle 10g -> http://www.oracle.com/technology/ora...ectby_10g.html
Unsere User Tabelle:
Code sql:1 2 3 4 5 6
CREATE TABLE t_user (id number NOT NULL, name varchar2(45) NOT NULL, PRIMARY KEY (id)); INSERT INTO t_user VALUES (1,'Tom'); INSERT INTO t_user VALUES (2,'Fritz'); INSERT INTO t_user VALUES (3,'Hans'); INSERT INTO t_user VALUES (4,'Anne'); INSERT INTO t_user VALUES (5,'Paula');
Unsere Friends Tabelle:
Code sql:1 2 3 4 5 6 7 8 9 10
CREATE TABLE t_friend (id number NOT NULL , userid number NOT NULL, friendid number NOT NULL, PRIMARY KEY (id)); INSERT INTO t_friend VALUES(1,1,2); INSERT INTO t_friend VALUES(2,1,4); INSERT INTO t_friend VALUES(3,2,1); INSERT INTO t_friend VALUES(4,2,3); INSERT INTO t_friend VALUES(5,2,4); INSERT INTO t_friend VALUES(6,3,2); INSERT INTO t_friend VALUES(7,4,1); INSERT INTO t_friend VALUES(8,4,5); INSERT INTO t_friend VALUES(9,5,4);
Unsere User Tabelle:
Code sql:1 2 3 4 5 6 7 8 9
SQL> SELECT * FROM t_user; ID NAME ---------- --------------------------------------------- 1 Tom 2 Fritz 3 Hans 4 Anne 5 Paula
Unsere User Tabelle:
Unsere Friend Tabelle:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
SQL> SELECT * FROM t_friend; ID USERID FRIENDID ---------- ---------- ---------- 1 1 2 2 1 4 3 2 1 4 2 3 5 2 4 6 3 2 7 4 1 8 4 5 9 5 4 9 rows selected.
Damit haben wir einen Bekanntheitsgraphen definiert wie man ihn in der Grafik im Anhang sehen kann.
Möchten wir nun wissen über welche Verbindung User 3 den user 5 kennt so können wir folgende Abfrage benutzen:
Code sql:1 2 3 4 5 6 7 8 9 10 11
SELECT socialnetwork.path FROM (SELECT f.* , 3 || SYS_CONNECT_BY_PATH(f.friendid,'-') path FROM t_friend f connect BY nocycle prior f.friendid = f.userid start WITH f.userid = 3) socialnetwork WHERE friendid = 5 ORDER BY length(socialnetwork.path)
Als Ergebnis erhalten wir:
Das bedeutet, dass der User 3 den User 5 über zwei verschiedene Verbindungen kennt:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SQL> select socialnetwork.path 2 from 3 (select 4 f.* , 5 3 || SYS_CONNECT_BY_PATH(f.friendid,'-') path 6 from 7 t_friend f 8 connect by nocycle prior f.friendid = f.userid 9 start with f.userid = 3) socialnetwork 10 where friendid = 5 11 order by length(socialnetwork.path) 12 / PATH --------------------------------------------------- 3-2-4-5 3-2-1-4-5
1) 3-2-4-5
2) 3-2-1-4-5
Auf ähnliche Weise funktionieren auch die Beziehungsgraphen in den großen Networking Communities
wie Beispielsweise Xing/OpenBC, facebook, studivz und myspace.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hi.
Kenne mich in oracle leider überhaupt nit aus. Lässt sich dieser Select denn auch auf MySQL anpassen?
Oder könntest mir kurz erkläeren was der folgende code genau macht
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
# (SELECT # f.* , # 3 || SYS_CONNECT_BY_PATH(f.friendid,'-') path # FROM # t_friend f # connect BY nocycle prior f.friendid = f.userid # start WITH f.userid = 3)
Grüße
Silverboy
-
20.03.07 01:08 #10
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
Nein, in MySQL existieren die notwendigen Elemente dazu nicht... im Link in meinem ersten post findest du jedoch ein paar Lösungsvorschläge zu diesem Problem für MySQL.Kenne mich in oracle leider überhaupt nit aus. Lässt sich dieser Select denn auch auf MySQL anpassen?
Im Prinzip macht der Ausdruck nichts anderes als die hierarchische Verknüpfung der beiden beteiligten Tabellen über die angegebenen Spalten herzustellen. Da wir in unserem Graph Zyklen haben die das hierarchische auflösen erschweren, lasse ich die Zyklen ignorieren.Oder könntest mir kurz erkläeren was der folgende code genau macht
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
20.03.07 08:38 #11
Muss die Tabelle "Friend" einen eigenen primärschlüssel haben oder geht das auch wenn man einen zusammengesetzten PK verwendet aus den beiden FK's?
Mein neues Projekt: zandman.de - Bericht über den Aufbau einer Entwicklungsumgebung für Test-Driven-Development mit phpUnderControl und dem Aufbau einer Webapplikation mit Zend Framework Version 1.9.x
-
-
02.04.07 12:59 #13
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
Ich hab doch nicht geschrieben, dass die dort Oracle verwenden, oder? ...Wie kommt es dann, dass ich auf studivz öfters schon mysql Fehlermeldungen gesehen habe?
Die müssen das mit mysql umgesetzt haben, nur wie?
Ich meinte damit, dass das Prinzip ähnlich ist.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Du hast geschrieben, dass es auf ähnliche Weise funktioniert.
Das wird wohl stimmen! Zweifelsohne!
Da die Funktionen die du bei deiner Abfrage verwendet hast in mysql nicht funktionieren bzw. existieren, wird das ganze wohl ganz anders aussehen. Deshalb lässt sich das wohl nicht mit studivz und ähnlichen Plattformen die mit mysql arbeiten vergleichen.
Ganz allgemein gesagt wird das alles "ähnlich" sein, wobei ähnlich sich in diesem Zusammenhang sehr "dehnen" lässt.
lg dani
-
02.04.07 13:15 #15
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.327
- Blog-Einträge
- 29
Hallo,
Deshalb trägt der Thread ja auch die Kennzeichnung [Oracle]Du hast geschrieben, dass es auf ähnliche Weise funktioniert.
Das wird wohl stimmen! Zweifelsohne!
Da die Funktionen die du bei deiner Abfrage verwendet hast in mysql nicht funktionieren bzw. existieren, wird das ganze wohl ganz anders aussehen. Deshalb lässt sich das wohl nicht mit studivz und ähnlichen Plattformen die mit mysql arbeiten vergleichen.
Weiterhin ist im Link im ersten Post gezeigt wie man diese Aufgabe auch mit MySQL lösen kann.
und was ist nun dein Problem?Ganz allgemein gesagt wird das alles "ähnlich" sein, wobei ähnlich sich in diesem Zusammenhang sehr "dehnen" lässt.
lg dani
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
Bitte um Tipps und wen möglivh auch Hilfe.
Von LinoH im Forum Cinema 4DAntworten: 5Letzter Beitrag: 12.12.05, 11:09 -
Wen DB ausgabe leer dann meldung
Von Matthiasghh im Forum PHPAntworten: 3Letzter Beitrag: 08.08.05, 00:56 -
fehlersuche...ganz billig, für wen der jscript kann ;)
Von mille im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 23.08.03, 23:09 -
Kennt jemand wen, der...
Von dune911 im Forum SmalltalkAntworten: 5Letzter Beitrag: 03.11.02, 13:19 -
Wen ja...!
Von Comander_Keen im Forum Fun-ForumAntworten: 0Letzter Beitrag: 31.01.02, 21:50




Zitieren
Login





Lesezeichen