我有php web编程背景,是Django的新手。我正在帮助我的兄弟建立一个管理库存的在线系统,我有一个数据库设计&最近的编码问题。需要帮助!
如何将“评论”表附加到一个或多个表中?
也就是说,我有一组“可能的产品”,“库存”,“供应商”等表格。我想在每个表格中添加“评论”,其中“评论”包含所有评论他们的记录。因此,我认为我应该制作一个通用的“评论”表来保存产品,库存,供应商的所有评论。是吗?
possible_products
id: int (pk)
name: varchar
url: varchar
price: decimal
created_at: datetime
updated_at: datetime
评论
id: int (pk)
parent_id: int (fk)
content: text
author: int (fk)
table: char (which the table this comment belongs to)
created_at: datetime
updated_at: datatime
我的问题是,当“possible_products”表是“comment”的父级时,父级的外键(id号)存储在“comment”表中以便链接它们。
但是,“库存”表和“供应商”表的fk怎么样?它不应该是:我在“comments”表中再创建了2个“inventory_id”列和“suppiler_id”列。 (也就是说,当我想链接第4个父表时,我不应该创建第4列。)
那么,我应该使用Django的通用外键吗? (这样,我的“评论”表设计是正确的。)以及如何使用/实现它?
或者,我是否应该更好地制作一个带有外键的中间表来链接“可能的产品”/“库存”/“卖家”和“评论”?(在设计上...就像很多 - 很多关系)
P.S。我主要在Django Admin中开发系统。使用Python 3.4& Django 1.7rc2。
答案 0 :(得分:0)
首先,你不应该考虑数据库列:你应该考虑Django模型。
这确实是通用关系的用途。而不是从Comment到每个单独模型的外键,您有一个ContentType模型的外键 - 它标识模型类型,而不是实例 - 以及一个存储相关模型的实际ID的object_id字段。这一点在generic relations documentation中都得到了很好的解释。
注意:如果您的模型将链接到非常具体且有限的一组父母'对于模型来说,为它所链接的每个模型添加一个外键可能更简单。