我有一個網站,有一個論壇。所有的問題都有唯一的ID,並且答案也有唯一的ID,外鍵引用問題ID。數據庫設計upvote/downvote在討論區?
我有一個用戶登錄。使用ajax,我可以發送數據(upvote/downvote,QID/AID,用戶名)。但幾乎沒有問題。
每當用戶在登錄後,我想,當他打開了一個問題,他以前upvotes和downvotes應顯示。
用戶無法多次提問/倒推同一問題。就好像他向+1提出了一個問題,他只能倒下它,而不是再次讚揚它。
根據我的解決方案。我正在考慮維護一張表,其中username是主鍵,另一個屬性是他所做的所有upvotes和downvotes的列表。例如:
(username, array)
(baqir, up_A001 up_A050 down_Q011 up_Q123)
每當用戶登錄時,我借這個陣列,並確保所有以前的upvotes和用戶的downvotes是因爲它是。如果有新的投票,我將它添加到數組中。
有沒有更好的解決方案?
P.S.不是necceassary,但我目前的數據庫結構。
class Question(models.Model):
QID = models.CharField(default="",max_length=1000, primary_key=True)
title = models.CharField(max_length=30, default="")
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=6, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.title
class Answer(models.Model):
AID = models.CharField(max_length=1000, default="", primary_key=True)
QID = models.ForeignKey(Question,on_delete=None)
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=6, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.AID
我正在使用Django。而且我基本上都希望無論什麼樣的stackoverflow已經實現了他們對問題和答案的投票。
不能讓你只提出問題/答案ID和用戶ID一個唯一的約束? – chris85
有越來越多的人用PHP標記python問題。我不明白爲什麼。 – apokryfos
你的意思是創建另一個表,(QID/AID,用戶名)作爲它的屬性? –