【发布时间】:2011-11-23 03:57:29
【问题描述】:
假设我有一个博客文章实体。
- 它有很多属性
- 它附有 cmets。
- 它有许多状态(已删除/锁定/不可见等)。
- 它有很多“标签”。 (关键字、school_id、user_id)
显然,cmets 应该是它自己的表,与 Blog 表是多对一的关系。
但是“状态”或“标签”呢?你会把它放在另一张桌子上吗?或者你会把它放在很多列中吗?
如果属性太大了怎么办?因为随着我网站的发展,博客文章将附加越来越多的属性(标题、作者、等等等等)。如果属性列表达到 100 会怎样?
【问题讨论】:
-
总是在另一个表中。如果您将它们嵌入到单个字段中,您就否定了拥有关系数据库的目的 - 您失去了关联事物的能力。
-
"states" 会是它自己的表吗?
-
状态应该只是帖子表中的一列。关键字绝对应该在一个单独的表中,由 post id 关联,keyword 和 post id 列都有主键。不明白为什么属性列表会增长。如果您要维护任何类型的结构,属性列表应该是相同的,因此在帖子表中将属性作为列是有意义的。