gpt4 book ai didi

mysql - 如何为这个和等效的 SQL 建模——用户、订阅、期刊

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

得到三个实体 -

  1. 用户 - 拥有用户名/密码、联系信息、账单信息等。
  2. Periodical - 有 periodical_name、category、publisher_info、print_cycle、unit_price 等。
  3. 订阅 - 具有用户 ID、期刊 ID、订阅开始/结束日期、状态等。

和以下关系 -

  • 用户可以订阅多个期刊。
  • 订阅属于一个用户,并且有一个关联的期刊。
  • 定期有许多与之关联的订阅。

s.t.,

  • 用户--订阅关系是一对多的,
  • 定期--订阅关系是一对多,

我的问题--

  1. 此模型描述对于通常发现的现实世界关系是否正确?

  2. 或者,将 Periodical 合并为 Subscription 是否更好,特别是如果每​​个 Periodical 信息不广泛并且可以编码到分隔符单独的文本字段中(例如“PeriodicalName:Frequency:Publisher:UnitPrice”) ?

  3. 我可以说通过关联性 User--Periodical 关系是多对多的吗?

  4. 如果有人可以展示我如何对用户或订阅表施加约束(假设我不折叠订阅和期刊),我将不胜感激,s.t.当出于某种原因需要删除用户时,所有关联的订阅也将被删除。

  5. 想要将用户记录保留一段时间(比如一年),即使在所有订阅都已过期之后,所以我想我可以将 NULL 分配给用户表中的 FK subscription_id,对吗?这是订阅表中没有相应记录的情况。

最佳答案

  1. 是。

  2. 您描述的“非规范化”在极少数情况下可能有用,但它违反了关系设计。

  3. 是的。

  4. 这种类型的约束(一对一)在大多数 RDBMS 产品中并未以声明方式实现。相反,我们有 1 到 0 或 1。您可以使用触发器来完成,但这很棘手且微妙。 Google for Object-Role Modeling,这是一种更全面的建模技术,可以解决类似这样的问题(以及“非此即彼”和“至少 2 个”以及许多其他问题。)

  5. 这将是处理它的标准方法。您还可以为订阅留一个到期日期。但是 1 到 0 或 1 的不足很好地促进了你的建议。

关于mysql - 如何为这个和等效的 SQL 建模——用户、订阅、期刊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022128/

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