我设计的数据库,为我自己的Q &一个网站,这有点类似堆栈溢出:定义一个SQLAlchemy的模式可能与其他多种车型之一
- A“问题”可以有几个“答案”,但一个“答案”只有一个“问题”。
- “问题”和“答案”都可以有几个“评论”,但“评论”只有一个“问题”或“答案”。
我不知道如何设计这样的数据库。以下是我已经试过:
class Question(db.Model):
__tablename__ = 'questions'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Unicode(64), unique=True)
body = db.Column(db.UnicodeText)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
answers = db.relationship('Answer', backref='question', lazy='dynamic')
class Answer(db.Model):
__tablename__ = 'answers'
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.UnicodeText)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))
class Comment(db.Model):
__tablename__ = 'comments'
id = db.Column(db.Integer, primary_key=True)
# post_id = db.Column(db.Integer, db.ForeignKey('')) ???
对于一个简单的实现,你可能会考虑让'QuestionComment'和'AnswerComment'作为独立的实体,而不是将它们放入一个单一的实体。 –
@GordonLinoff谢谢你的回复。事实上,我曾考虑过这一点。或者,我可以将'Question'和'Answer'合并到'Post',它有一个名为'is_question'的布尔字段。不过,我想找一个更“优雅”的方法。 –
设计看起来相当不错... – Bharel