SQL如何构造此特定数据库模式

时间:2013-01-19 00:30:19

标签: mysql sql database-design data-modeling

我有两张桌子。

User_types

  • (1)个体
  • (2)的业务
  • (3)学生

Relationship_cat

  • CAT_ID
  • cat_name
  • USER_ID
  • USER_TYPE

首先使用Relationship_cat,我希望条目看起来像这样

cat_id(1), cat_name(interests) ,user_id(ANy user), user_type(only 1 and 3)
cat_id(2), cat_name(news) ,user_id(ANy user), user_type(only 2 and 3)
etc

使用user_type我相信我可以将其设置为0作为默认值,因此它不受任何用户约束。我如何处理"relationship_cat > user_type"案件?我是否使用以逗号分隔的值列表?它有效吗?如果有很多User_types条目增加怎么办?

2 个答案:

答案 0 :(得分:3)

您应该使用多对多连接表。因此,您的架构可能如下所示:

user_types

  • user_type_id
  • user_type_value

类别

  • CAT_ID
  • cat_name

categories_to_user_types

  • CAT_ID
  • user_type_id

任何时候您可能会考虑使用像您提到的逗号分隔值,这应该是您进一步规范化表格的标志。我所展示的通常是表达表之间多对多关系的最佳方式。

答案 1 :(得分:1)

如果您需要在一个列中存储多个值,我建议您引入另一个表,将这些关系存储为一对多关系。将其命名为Relationship_cat_user_type并将cat-Id和user_type_id值存储在该表中。这最适合规范化。

祝你好运。