数据库规范化和sql混淆

时间:2011-07-05 08:59:08

标签: mysql join normalization

不确定这是否是我的数据库的最佳结构,但这是我目前所拥有的(对改动的建议开放)。我基本上想要为每个页面创建具有用户定义字段集的页面。所以我有四个表:pages,page_fields,page_data和data_fields。

的网页:

id   name
 1   home

page_fields:

page_id field_id
   1       1
   1       2
   1       3

page_data:

 page_id  field_id  content
    1        1      'This is the Title'
    1        3      'Some description here'

data_fields:

id  field_name   field_type
1     title         text
2    subtitle       text
3   description    textarea

首先,这是一个很好的数据库结构吗? 其次,如何获取page_field表定义的必填字段,该字段的数据(如果有的话)以及我们知道页面ID的filed_name和filed_type?

我认为这里会有几个连接,但我无法解决它们。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

  1. 假设一个页面上的一个字段可以具有单个值,您可以轻松地消除page_fields表。分配给页面的字段列表将存储在page_data中,如果还没有内容,则NULL值将显示在content列中。

  2. 类似SELECT * FROM page_fields INNER JOIN page_data ON (page_fields.page_id = page_data.page_id) INNER JOIN data_fields ON (page_data.field_id = data_fields.id);

  3. 的内容
  4. 另外阅读有关实体属性值模型的信息,可能会产生一些新想法,通常对理解事物有用:http://en.wikipedia.org/wiki/Entity-attribute-value_model