mysql - SQL 如何构建这个特定的数据库模式

标签 mysql sql database-design data-modeling

<分区>

我有两个表。

用户类型

  • (1)个人
  • (2)业务
  • (3)学生

Relationship_cat

  • cat_id
  • 猫的名字
  • 用户编号
  • 用户类型

首先使用 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 条目增加怎么办?

最佳答案

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

用户类型

  • user_type_id
  • 用户类型值

类别

  • cat_id
  • 猫的名字

categories_to_user_types

  • cat_id
  • user_type_id

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

关于mysql - SQL 如何构建这个特定的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409829/

相关文章:

mysql - 如何删除数据透视表中的空值?

mysql - 如何在 SQL 中使用空虚拟列过滤查询?

database - 多语言数据库设计方法

mysql - 测验网站的 ORM 数据库设计

mysql - 使用 ONLY_FULL_GROUP_BY mysql 模式 hibernate

php - 如何处理此 PHP/mysql 插入语句中的空值

php - 如何在 laravel 中检查今天的日期和时间

javascript - 使用 PHP 和 Javascript 删除选定 ID 的选定行

sql - 在 Rails 中递归获取记录

mysql - SQL查询: How to validate the prerequisite for courses that finished and how to find time conflict of courses?