如何组织新闻/评级/评论数据库?

时间:2011-10-09 16:11:57

标签: google-app-engine google-cloud-datastore

我的网站会有新闻,可以给他们打分并发表评论。每个用户只能对一个新闻评分一次,只留一个评论。与此同时,我应该知道哪个用户对新闻进行了评分以及谁留下了评论。

如何组织这样的数据库?

我考虑以下结构:

class News(db.Model):
    news = db.TextProperty()
    added = db.DateTimeProperty(auto_now_add=True)
    rating = db.ReferenceProperty(NewsRatings)
    comments = db.ReferenceProperty(NewsComments)
    added = db.DateTimeProperty(auto_now_add=True)

class NewsRatings(db.Model):
    user = db.ReferenceProperty(Users)
    rating = db.IntegerProperty()
    added = db.DateTimeProperty(auto_now_add=True)

class NewsComments(db.Model):
    user = db.ReferenceProperty(Users)
    comment = db.TextProperty()
    added = db.DateTimeProperty(auto_now_add=True)

class Users(db.Model):
    user = db.IntegerProperty()

这是正确的做法吗?我是否知道谁对特定新闻留下了特别评论?

1 个答案:

答案 0 :(得分:1)

您当前的模型仅允许每个新闻项目具有单个评级和单个评论(每个评论可以属于任意数量的新闻项目)。相反,将ReferenceProperty放在NewsRatingsNewsComments上,引用它们所属的News项。