During a lengthy stint at a major provider of financial data, I came across this concept generic modelling.. The idea was to have one tables of 'things' and a second one of 'relationships'.. In concept, it's a very powerful and elegant idea, but it tends to be recursion-heavy. Depending on what you want to do with it and the expected load it might not be feasible for real-world use.
I think your model is quite elegant and I doubt that XML will improve the robustness, but bear in mind the Kevin Bacon Postulate: given a population of 7 billion everyone is related to everyone else (many several times) by the time you are down to the 6th degree. The efficiency has an exponential inverse relationship to the degree. - michael dykman On Wed, 2005-02-02 at 10:47, listsql listsql wrote: > Since I read about Foaf [ http://www.foaf-project.org/ ], I become > interested with Social Networking, and readed a lot about it. > I 've been playing as well with mysql and join querys to represent > network's of people. As I made some queries in google and didn't came > with a lot interesting info about this, now I will comment here my own > querys. > > urelation table: (this kind of relation is called the adjacency list > model, or recursion) > +-----+-----+ > | uid | fid | > +-----+-----+ > | 1 | 2 | > | 2 | 3 | > | 1 | 3 | > | 3 | 2 | > | 3 | 0 | > | 0 | 2 | > | 3 | 1 | > +-----+-----+ > This represent's the id of people and the id of their friend ('s) > > uprofile table: > +-----+-----------+ > | uid | name | > +-----+-----------+ > | 0 | martin 0 | > | 1 | pedro 1 | > | 2 | pablo 2 | > | 3 | matias 3 | > | 4 | mateo 4 | > | 5 | claudio 5 | > +-----+-----------+ > > > > So if I want to get the friend's and friend's of friend's of pablo: > > SELECT p1.name p1,p2.name p2 > FROM uprofile p1,uprofile p2 > left join urelation r1 ON r1.fid=p1.uid > and r1.uid =2 > left join urelation r2 ON r2.fid=p2.uid > where r2.uid =r1.fid > > +----------+----------+ > | p1 | p2 | > +----------+----------+ > | matias 3 | martin 0 | > | matias 3 | pedro 1 | > | matias 3 | pablo 2 | > +----------+----------+ > > And I add logically one join more if I want to get deeper in the network. > The obvious problem is that for the first table p1 I will get the > repeating Id, but that is not an issue now. > > Where I wanted to get more feedback is, there is some method to > iterate in this relation to avoid joining the table in itself each > time ? > Or also: > Is this the best way to store human-like social relations, or there is > a better way to do this ? > > Thanks in advance, > -- > Martin > ("Welcome to saving hierarchical data in mysql: Recursion until your > head explodes") -- - michael dykman - [EMAIL PROTECTED] -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]