Dengan asumsi semua teman Anda juga ada di tabel pengguna, Anda akan memerlukan tabel teman yang mendefinisikan hubungan satu-ke-banyak yang sederhana - menghubungkan tabel pengguna kembali ke tabel itu sendiri. Jadi
User Table
UserID int identity not null
[other attribute fields]
Friends Table
UserIDLink1 int
UserIDLink2 int
[other attribute field]
Di mana UserIDLink1 dan UserIDLink2 adalah kunci asing di tabel Pengguna.
Jadi misalnya jika saya memiliki tiga pengguna
1 Joe
2 Bill
3 Jane
dan Joe dan Jane berteman maka tabel Teman akan berisi satu baris
1 3
Hal di atas secara implisit mengasumsikan bahwa jika A adalah teman B maka B adalah teman A - jika tidak demikian, Anda mungkin ingin mengganti nama UserIDLink1 dan UserIDLink2 menjadi UserID dan FriendID atau yang serupa - dalam hal ini Anda akan memiliki hingga dua kali lipat catatan juga.
Juga untuk konfigurasi dua arah (A adalah teman B jika B adalah teman A) Anda harus mengatur indeks pada tabel Teman untuk (UserIDLink1,UserIDLink2) dan (UserIDLink2,UserIDLink1) untuk memastikan akses selalu efisien jika kami sedang mencari teman joe atau teman jane (jika Anda tidak mengatur indeks kedua maka kueri pertama akan menjadi pencarian indeks yang efisien tetapi yang kedua akan membutuhkan pemindaian tabel lengkap).
Jika tautan Anda tidak dua arah, ini tidak perlu untuk mengetahui siapa teman A, tetapi Anda mungkin masih paling membutuhkannya karena Anda mungkin juga perlu mencari tahu siapa teman B.