将相同字段添加到多个表的最佳做法是什么?

时间:2013-06-12 18:14:04

标签: mysql

我有几张桌子,例如:

news:
id | title | description
1 | This is first title of news | This is description
2 | This is second title of news | This is second description

blog:
id | title | description
1 | This is first title of blog | This is description
2 | This is second title of blog | This is second description

和另外10多个表。

我需要添加一个字段“some_state”,它可以有两个值:0或1。

所以我可以通过两种方式:

1)将此字段添加到每个表中;

2)创建新表,例如:

tables_some_state:
id | table_name | table_id | some_state
1 | news | 1 | 0
2 | news | 2 |1
3 | blog | 1 | 1
4 | blog | 2 | 1
...

并使用Left将此表连接到查询中的每个表。

那么,在我的案例中,最佳做法是什么?

3 个答案:

答案 0 :(得分:3)

我会将它添加到表中,只要它是一对一的关系(它就在这里)。我认为通常将某些东西放在一个单独的表中的目的就是拥有多对一的关系。

答案 1 :(得分:2)

将它们全部放在一个表格中并给它们一个“类型”列,然后将一列添加到所有表中:

posts:
id | type | title | description | status
1 | news | This is the first title of news | This is the description | 0
2 | blog | This is the first title of blog | This is the description | 1
...

答案 2 :(得分:1)

我个人的意见是创建一个新表,并通过id将其他表上的列链接到它。这将允许一些数据库规范化/限制数据库冗余。您最终也可以在以后添加更多“状态”。如果你正在使用InnoDB,你也可以添加一些外键。