我設計的數據庫,爲我自己的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