首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对此建模&等效的SQL --用户、订阅、期刊

如何对此建模&等效的SQL --用户、订阅、期刊
EN

Stack Overflow用户
提问于 2011-11-05 17:58:37
回答 1查看 937关注 0票数 1

有三个实体-

  1. 用户-有用户名/密码,联系信息,帐单信息等。
  2. 期刊-有periodical_name,分类,publisher_info,print_cycle,unit_price等。
  3. 订阅-具有用户id、期刊id、订阅开始/结束日期、状态等.

relationships之后-

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

第二节,

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

我的问题--

  1. 对于通常发现的真实世界关系,这种模型描述正确吗?
  2. 或者,我是否更好,将期刊压缩为订阅,特别是如果每个期刊的信息不是广泛的,可以编码到,例如分隔符单独的文本字段。"PeriodicalName:Frequency:Publisher:UnitPrice")?
  3. 我可以说,通过相联性用户-期刊关系是多对多?
  4. 如果有人能告诉我如何在用户或订阅表周围设置一个约束(假设我没有崩溃订阅和期刊),s.t,我会很感激。当由于某种原因需要删除用户时,所有相关订阅也将被删除。
  5. 希望将用户记录保存一段时间(比如说一年),即使所有订阅都过期了,所以我想我可以在User表中将NULL分配给FK subscription_id,对吗?这是在订阅表中不存在对应的记录时发生的。
EN

回答 1

Stack Overflow用户

发布于 2011-11-05 18:08:12

  1. 你的模型是正确的。我将实现这三个表用户,期刊,订阅。
  2. 你不应该把期刊编成订阅版。如果某一期刊或期刊的某些部分对所有用户都是相同的,则应放在该表中。通过订阅更改的任何内容都会出现在订阅表中。
  3. 是。
  4. 我觉得这是个坏主意。你说的是业务逻辑。这不应在数据库中实现。你的要求可能会改变。您可以要求订阅表中的所有用户(FKs)都存在--但是当用户被删除时,不应该让数据层删除订阅--相反,它会阻塞并说它无法删除,因为FK正在订阅表中使用。(逻辑层需要删除所有订阅,然后才能删除用户。)
  5. 对于订阅,您不需要在user表中使用FK。订阅表包含用户和期刊的FK --这就是所谓的连接表。如果要从用户表检索用户数据和订阅信息,则需要连接。通常,您可能不需要这样做(例如,您知道用户id,只想列出该用户的订阅信息)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8022128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档