Archive for March 7th, 2009
Selecting friends
If you are building a Yet Another Great Social Network Service to beat MySpace, you'll certainly need to keep a list of friends there, so that Alice may communicate in private with Bob, and they both can show pictures to Chris, and Eve cannot eavesdrop on them and the rest of them can do all these kinds of things these people are supposed to do.
On most networks, friendship is an irreflexive symmetric binary relation:
- Symmetric means that if Alice is a friend of Bob, then Bob is a friend of Alice too.
- Irreflexive means that Alice is never a friend to herself.
As it's a many-to-many relation, we sure need a separate table for it.
But how will we keep it? Should we keep the relation in the table as is (i. e. two separate rows for Alice/Bob and Bob/Alice), or keep just one row and reconstruct the relation using the set operators?
Let's check.
Read the rest of this entry »