gpt4 book ai didi

mysql - 如果我似乎需要将一个表的列名存储在另一个表中,我是否应该重新考虑我的数据库设计?

转载 作者:可可西里 更新时间:2023-11-01 07:41:24 25 4
gpt4 key购买 nike

我是数据库设计的新手,我从一个客户那里得到了一个相当高的订单,他们的数据中有一些非常复杂的关系。我想做的是根据客户的条件编写推荐产品的逻辑。但是,根据各种其他数据位的值,需要应用一些有趣的过滤器。例如,某些产品仅适用于{men|women},因此根据 say customers.customer_gender 的值,不会推荐该产品。

当然,我可以用 PHP 完成这一切,但如果我可以在数据库中表示它并使它们成为它的表单接口(interface)会更好。这样他们就可以在添加新产品时自定义和修改这些关系,而无需重新雇用我来自定义代码!那么,我的问题是缺乏经验。我不清楚我应该如何在表格中表示这些信息。

编辑 1 -- 尝试示例

假设您有以下表格:

客户

id   name      gender
-- ---- ------
1 Bob male
2 Mary female
3 Steve male

条件

id    name
-- ----
1 Headaches
2 Allergies
3 Low Energy

产品

id    name              description
-- ---- -----------
1 Product A anti-allergy
2 Product B energy booster
3 Product C pain reliever

还有一些进一步的表使用外键来定义它们之间的关系,例如在什么条件下推荐什么产品(连接产品 ID 和条件 ID 的两列表),以及什么客户有什么条件。

例如,现在我有一些产品只能推荐给男性。或者只对咖啡因不敏感的人。或者谁具有特定严重程度的特定条件(其中严重程度是表中链接客户和条件的附加列,其中包含 1-3 的 int 值)。我如何在纯数据库表中表示这些类型的关系(“为条件 Y 推荐产品 X,表达式 Z 除外”)?

最佳答案

你可以用这样的模型来解决这个问题:

ERD

有两个关键要素可以帮助您解决设计问题。

  1. 有表格表明产品何时适用以及产品何时不适用的规则。

  2. CONDITION 表中包括任何可能涉及 pro 或 con 规则的情况。

例如:“有子宫”的患者禁用伟哥。

CONDITION_SEVERITY 意味着患者患有该病症,并且它还允许您根据您需要使用的任何类型的量表来记录分数,以说明病情有多严重。您可以在 INDICATIONSCONTRAINDICATIONS 表中使用类似的严重性评分来表示产品仅适用于至少如此糟糕或应该如果情况这么糟糕或更糟,则不要使用。

关于mysql - 如果我似乎需要将一个表的列名存储在另一个表中,我是否应该重新考虑我的数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11167057/

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