Twitter benzeri gibi bir "takip/takip etmeyi bırakma" özelliği için en iyi tablo tasarımını belirlemeye çalışıyorum (düzenleme: Twitter benzeri bir uygulama yapmıyorum.) Aşağıda benim mevcut tablo tasarımı ve php işleme. En iyi yaklaşım olup olmadığından emin değilim ve geri bildiriminizi gerçekten takdir edersiniz. Takip günü"Kullanıcıyı takip et" veritabanı tablosu tasarımı
CREATE TABLE IF NOT EXISTS `user_follow` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`follower` int(11) NOT NULL,
`following` int(11) NOT NULL,
`subscribed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `follow_unique` (`follower`,`following`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;
, takipçileri kimliği follower
alan ve following
eklenir takip edilecektir kullanıcının kimliği eklenir. Ayrıca, bir kullanıcının subscribed
alanındaki başka bir kullanıcıyı takip etmeye abone olduğu tarihi de kaydediyorum. Abonelik tarihi sıralama için kullanılabilir.
Bir kullanıcı takibi bıraktığında, sadece ilgili satırı siliyorum.
Yinelenen satırları önlemek için, follower
ve following
sütunları benzersiz yaptık. Bir kullanıcı bir kimliği aşağıdaki zaten tekrar takip etmek tıklarsa, ben Örneğin
zaten Mükerrer giriş '62 -88' follow_unique 'Açıkçası
tuşuna için' Aşağıdaki zaman veritabanı hatası 1062 olsun Bir kullanıcı, takipçisi unfollow
düğmesini görür. Bu, bir takipçisi takip eden tablo satırının 2 kullanıcı arasında olup olmadığını kontrol ederek elde edilir. rows > 0
I ise unfollow
görüntülüyorsa follow
.
Peki, sizce ne düşünüyorsunuz?
Twitter'ı yeniden oluşturmaya çalışmıyorum .. Tamamen farklı bir amaç için ama abonelikler açısından Twitter ile aynı işlevselliğe sahip – CyberJunkie
İyi geliyor, ama ekleyeceğim (henüz yapmadıysanız) Yabancı Anahtar kısıtlamaları Kullanıcılar tablosuna 'follower 've' aşağıdakileri' ekleyin. – Dirk
Yaptığın şey bana iyi görünüyor. 'MyISAM' yerine 'ENGINE = InnoDB' kullanmanızı öneririm, böylece 'FOREIGN KEY' ilişkilerini ve 'ON DELETE/UPDATE' komutlarını uygulayabilirsiniz. Bu, etkili olması için pek çok tablonuzda motor değişiklikleri gerektirebilir. –