mysql - 如何处理 MySql 中一个类别下的唯一项目,其中项目在不同类别下可能不是唯一的?

标签 mysql sql database database-design

示例:

category : food, bike, car

类别下的项目:

food = {rice, fish, beef};
bike = {Honda, Suzuki};
car = {Honda, Toyota, BMW};

在这里,'bike' 和 'car' 不同的类别可以包含相同的项目,例如 'Honda'。但是这两个类别都不能包含相同的项目。

表名(列名):

1. category
-> id (primary, auto increment)
-> category_name (char, unique)

2. items
-> id (primary, auto increment)
-> item_name (char)

3. category_item_relation (many to many relation between table 1 and 2)
-> category_id (foreign key)
-> item_id (foreign key)

其中item_id在相同的category_id下是唯一的,需要知道MySql中的流程

最佳答案

在 category_id 和 item_id 的组合上您需要一个唯一键(或主键):

ALTER TABLE category_item_relation
ADD CONSTRAINT item_category_relation_pk
PRIMARY KEY (category_id, item_id)

关于mysql - 如何处理 MySql 中一个类别下的唯一项目,其中项目在不同类别下可能不是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823340/

相关文章:

mysql 触发器存储触发器已被调用存储触发器的语句使用

当聚合函数相等时 MySQL Group 返回多个结果

php - MYSQL SELECT 不返回某些结果

php - 找不到sql设置值有什么问题

Python SQLite3执行许多: query that simulates set(data) - set(initial_data)

php - MySQL - 如何自动管理多个数据库的更新?

php - 将数据插入具有相同主键的多个表

sql - 使用 IN/INTERSECT、INNER JOIN 或 EXISTS 进行交叉查询?

php mysql 仅保留单词和标点符号,没有制表符、换行符等

php - MySQL 基于主键以外的其他内容进行替换