gpt4 book ai didi

sql - 复杂的表关系

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:38 25 4
gpt4 key购买 nike

有 3 个主要实体:用户、产品和产品列表。用户可以将产品标记为收藏。产品列表中可以设置只有喜欢的产品。

示例 1: 我将牛奶和面包标记为最喜欢的。并添加标记的牛奶列出“给儿子”。此外,用户可以在向其中添加喜欢的产品之前创建空产品列表。

示例 2:我创建了“for sun”列表,将牛奶和面包标记为最爱,并将标记的牛奶添加到“for sun”列表中。

收藏的产品可以在没有产品列表的情况下存在。产品列表可以没有最喜欢的产品。同一产品可以设置在不同的列表中。

主要问题:产品列表必须与用户链接。如果它有喜欢的产品,则可以通过它们进行链接。但如果他没有产品,则必须直接链接到用户。 Schema of db

可能的解决方案:创建4张表:用户、产品、产品列表和连接表产品列表-产品。在产品列表中为每个用户创建列表“收藏夹”。但它也违反了规范化规则,因为每当将此产品添加到另一个列表时,我都需要重复添加产品以列出“收藏夹”。 enter image description here

最佳答案

如果产品同时出现在名为“favorite”的 ProductLists 和其他一些 ProductLists 中,则 ProductListsProducts 中需要有两个条目。这不违反规范化。您有两个 ProductsLists 和两个存储在 ProductsListsProducts 中的多对多关系。我认为该建模没有问题。

如果每个用户都有一个(可能是空的)“最喜欢的”产品列表,您希望将其视为与其他 ProductsLists 不同的概念,那么只需制作您的表格:

UsersProductsListsProductsListsProductsProducts,还有一个 UsersFavoriteProducts .

UsersFavoriteProducts 将包含一个 user_id 和一个 product_id,并与典型的 ProductsLists 分开处理。 ProductsListsProducts 将不包含“最喜欢的”产品的关系; “收藏夹”关系只会存储在 UsersFavoriteProducts 中。

关于sql - 复杂的表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com