Создать два столбца:
- int userId : PRIMARY KEY и AUTO_INCREMENT, если ваша база данных поддерживает это. Каждому пользователю будет присвоен уникальный номер.
- int referrer : это идентификатор пользователя, который ссылался на текущего пользователя. Можно установить значение 0 или NULL, если пользователь не является аффилированным лицом какого-либо другого пользователя.
Древовидные диаграммы можно легко создать с помощью нескольких строк кода.
РЕДАКТИРОВАТЬ: Так как вы спросили, вот некоторый код для древовидной диаграммы. Я выбрал PHP, потому что запросы MySQL просты в реализации, но концепцию легко реализовать на Java, C, Ruby, Python и т. Д.
function listUsers($handler, $id, $prefix) {
// Please use MySQLi extension with prepared statements or your code
// becomes SQL injection paradise
$results = mysql_query("SELECT `user`, `referrer` FROM `users` WHERE `referrer` = $id");
while ($row = mysql_fetch_row($results) {
echo $prefix . $row[0];
listUsers($handler, $$row[1], $prefix . "* ");
}
}
$handler = mysql_connect(. . .);
listUsers($handler, 0, "")
Я на 80% уверен, что при правильной реализации логика будет работать. Это должно вернуть:
/*
Jon smith
* Alex Del
* * Jim West
* * Marko Polo
* * Johny Bravo
* Pit Sampras
* * Sara Mat
* * Gabriella white
* * Antonio Santo
* Maja Grozdanova
* * Agon Xheladini
*/