mysql - 来自多个表的 MySQL 最喜欢的项目
问题描述
当有多个表可供选择时,存储收藏夹最有效的方法是什么。
例如:您有一个用户(ID,姓名,...),食物(ID,卡路里,...),鸡尾酒(ID,酒精,...)和糖果(ID,姓名,...),用户可以从这些表格中收藏多个元素。解决这个问题的最佳方法是什么。
我的想法是创建一个多对多关系,我让用户与上面的每个表(用户食物、用户鸡尾酒、用户糖果)或我有外键的最喜欢的表建立关系上面提到的所有表格。
我猜后者不是最佳解决方案。
解决方案
你基本上有两个选择:
create table favorites (
favoritesId int auto_increment primary key,
userId,
which varchar(255),
id int,
foreign key (userId) references users(userId)
);
这简短、简洁,可让您添加新实体。
或者,您可以单独列出每个:
create table favorites (
favoritesId int auto_increment primary key,
foodId int,
cocktailsId int,
. . .
foreign key (userId) references users(userId),
foreign key (foodId) references foods(foodId),
foreign key (cocktailsId) references cocktails(cocktailsId),
. . .
);
这不太简洁,但它确实允许您添加显式外键引用。如果需要,它还可以轻松地在单行上表示多个收藏夹。
推荐阅读
- batch-file - 运行批处理文件时系统找不到指定的路径
- c# - 是否可以在带有 .NET Core 的 Linux 上使用 Alea GPU?
- jquery - Jquery - 仅触发特定类中的模糊事件
- javascript - SyntaxError:setInterval 回调中的意外标识符
- json - URLSession 类型不匹配错误
- .net - 弹性搜索是我需要的吗?
- numpy - Numpy-找到一组特定特征值的对应特征向量
- asp.net-core-mvc - ASP.Net Core:索赔转换和授权策略
- django - Django modelform字段如何禁用和防止篡改?
- javascript - Django - 无法访问根文件夹下的静态 css 文件。控制台中的错误 404