Yorum oylama veritabanı yapısı için en iyi uygulama

3 Cevap php

Ben yorumladı edilebilir çeşitli nesneleri olan bir PHP uygulaması üzerinde çalışıyorum. Her yorum kullanıcılar (Digg veya Reddit gibi) o 1 veya -1 vermek edememek ile ilgili olarak yapılabilir. Şu anda ben User_id ve ince iş gibi görünüyor kendi oy bilgileri, taşıyan bir 'oyları' tabloya sahip planlıyorum.

Şey, her nesne ayrı bir yorum tabloda saklanan yorum yüzlerce vardır, olduğunu. Ben yorum yükledikten sonra, ben oy taksitli ve sonra tek tek onlar sadece bir kez oy kullanabilirsiniz emin olmak için kullanıcıya karşı her oy kontrol yaşıyorum. Bu çalışır ama sadece veritabanı yoğun gerçekten görünüyor - sadece yorum yapmak için çok fazla sorgu.

Az DB yoğun Bunu yapmanın daha basit bir yöntem var mı? Benim geçerli veritabanı yapısı gitmek için en iyi yolu nedir?

Geçerli veritabanı yapısı hakkında daha net olmak gerekirse:

Comments table:

  • User_id
  • object_id
  • total_oys

Votes table:

  • comment_id
  • User_id
  • oy

End Goal:

  • Allow user to oy only once on each comment with least # of MySQL queries (each object has multiple comments)

3 Cevap

Sadece bir kez emin her seçmen oy emin olmak için, bu alanlar-CommentID, UserID, VoteValue ile Oy masa tasarımı. CommentID olun ve emin bir kullanıcı sadece bir oy alır yapacak birincil anahtar, UserID. Sonra, bir açıklama için oy sorgulamak için, böyle bir şey yapın:

SELECT SUM(VoteValue)
FROM Votes
WHERE CommentID = ?

Bu yardımcı olur mu?

Neden her Yorumlarınız için gerçekleşti oy kurtarmak değil mi? Yeni bir oy oldu zaman Artış / Bu azaltma.

Sonra kullanıcı kullanıcı başına Yorumlarınız başına sadece bir oy vermek için bu Yorumlarınız için özel olarak olup olmadığını kontrol etmek gerekir.

Eğer hiçbir satır olsun eğer bir sql bu nesne için geçerli kullanıcı tarafından yapılan yorum tüm oy verir birleştirme koşulu koyabilirsiniz, kullanıcı olarak değil. Yani programda tek her açıklama bir denetimi sadece biraz farklıdır.

kadar veritabanı yapısı ile ilgili olarak, ayrı bunları tutarak gayet mantıklı görünüyor. oy {User_id, object_id, object_type, vote_info ...)

Zaten bu yapıyor olabilir, üzgünüm ama ben bu böyleydi eğer göndermekten gelen yorumlamak olamazdı.