Cara Membuat Jejaring Sosial

Tulisan ini kuambil dari arsip blogku yang lama 9 tahun yang lalu yang sayang untuk dibuang.

Aku ingin berbagi sedikit ilmu yang sudah lama kupelajari. Anggap saja sebagai tutorial.

Awal situs jejaring sosial yang pertama kali kukenal adalah Friendster, kemudian beberapa tahun kemudian muncullah Facebook yang dengan sukses menyingkirkan seniornya. Kemudian muncul Twitter, hadir dengan logo burung birunya yang imut.

Kalau diperhatikan ada perbedaan mendasar antara Facebook dan Twitter, Facebook sesama pengguna saling berteman tetapi di Twitter tidak diharuskan seperti itu. Di Twitter seorang pengguna cukup mengikuti (follow) akun yang lain tanpa ada kewajiban harus balik mengikuti. Ini membuat followers seseorang bisa sampai jutaan.

Cara Membuat Jejaring Sosial

Pertama-tama kalian harus memiliki pengetahuan tentang Structured Query Language (SQL). Server database yang kugunakan di sini adalah MySQL dan kalian hanya membutuhkan 3 buah tabel sebagai contoh. Sedikit, bukan?

Users

Tabel yang pertama yang kalian aubuat terlebih dahulu adalah tabel users. Di tabel ini kalian akan menyimpan semua pengguna yang terdaftar pada situs web-mu.

CREATE TABLE IF NOT EXISTS `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(62) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
)

Kemudian isi tabel tersebut dengan beberapa baris data.

INSERT INTO `users` (`id`, `username`) VALUES
(1, 'admin'),
(2, 'desy'),
(3, 'ronsen'),
(4, 'maria');

Statuses

Kalian bisa menebak tabel ini untuk apa. Benar, di tabel inilah setiap status pengguna akan disimpan.

CREATE TABLE IF NOT EXISTS `statuses` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL,
  `text` text NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
)

Kemudian isi tabel tersebut dengan beberapa baris status.

INSERT INTO `statuses` (`id`, `user_id`, `text`, `created_at`) VALUES
(1, 1, 'Status 2.', '2014-07-20 13:10:44'),
(2, 1, 'Status 1.', '2014-07-20 13:10:44'),
(3, 2, 'Status 3.', '2014-07-20 13:11:21'),
(4, 3, 'Status 4.', '2014-07-20 13:11:21'),
(5, 4, 'Status 5.', '2014-07-20 13:11:54'),
(6, 2, 'Status 6.', '2014-07-20 13:11:54');

Friends

Di tabel ini kalian akan menyimpan para pengikut atau followers.

CREATE TABLE IF NOT EXISTS `friends` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL,
  `follower_id` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`id`)
)

Untuk contoh kasus, buatkan pengguna 1 (admin) mempunyai 2 pengikut (followers) yaitu desy dan ronsen. Oh iya, perlu diingat si admin harus menjadi pengikut dirinya sendiri. Agak aneh yah? Tetapi tidak di dunia pemrograman.

INSERT INTO `friends` (`id`, `user_id`, `follower_id`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3);

Sekarang mari kita lihat hasilnya seperti apa. Jalankan query berikut:

SELECT * FROM statuses WHERE user_id IN (SELECT follower_id FROM friends) ORDER BY created_at DESC;

Hasilnya seperti di bawah ini (perhatikan, status dari pengguna 4 tidak ada):

+----+---------+-----------+---------------------+
| id | user_id | text      | created_at          |
+----+---------+-----------+---------------------+
|  6 |       2 | Status 6. | 2014-07-20 20:11:54 |
|  3 |       2 | Status 3. | 2014-07-20 20:11:21 |
|  4 |       3 | Status 4. | 2014-07-20 20:11:21 |
|  1 |       1 | Status 2. | 2014-07-20 20:10:44 |
|  2 |       1 | Status 1. | 2014-07-20 20:10:44 |
+----+---------+-----------+---------------------+

Sekarang silakan terjemahkan ke bahasa pemrograman kesayangan kalian.

Connect with me:

Comments

Spammy comment will be deleted. Markdown syntax is supported.