【问题标题】:Should I Create a Table or a Query? [closed]我应该创建表还是查询? [关闭]
【发布时间】:2016-02-11 17:18:09
【问题描述】:

好的,我有一个 Access 数据库,它有一个项目表和一个学生表,其中包含每月订阅费,这两个表链接在第三个表“付款”中,该表从学生那里收集数据(费用 + 项目)并对它们求和。但是该表只保留值而不是描述。由于付款不定期(学生不需要在同一天全部付款),因此学生的项目债务价值需要随着他的付款方式而减少,我需要对此进行控制。那么,我应该创建一个新表来复制其他两个表中的数据并在这个新表中进行更改,还是只使用查询来显示数据并在“主”表中进行更改?我对此有点迷茫和困惑,所以很抱歉这个烂摊子。

【问题讨论】:

  • 哦,创建新表的问题是无法知道学生将拥有多少项目。
  • 听起来你在这里跨表复制大量数据(这通常是一个坏主意),这真的让你真正想要做的事情感到困惑。也许你可以举一个简单的例子?

标签: sql delphi


【解决方案1】:

在进一步研究这个项目之前,您需要阅读有关数据库设计的初学者文本,imo。谷歌搜索“关系数据库教程”找到的第一项是

http://www3.ntu.edu.sg/home/ehchua/programming/sql/relational_database_design.html

请参阅“创建表之间的关系”部分。网上还有无数其他教程。

通常,您不会将数据从一张表复制到另一张表。像项目描述或用户名这样的信息应该只存储在数据库中的一个位置。当您需要将其与另一个表中的数据相关联时(例如,显示项目表中条目的描述以及费用或付款表中的成本金额),您查找它,而不是复制它。

处理一个学生任意多项目的方法是有一个“链接”表,主要只存储学生的唯一标识符和项目的唯一标识符。通常,这些将是分配的数字标识符,因为现在学生/项目/其他实体已添加到数据库中。

拥有链接表的意义在于,对于可以与特定学生关联的项目数量没有实际限制。

您调用将一列添加到链接表以将学生和同一项目的一个或多个实例与特定账单(或订单或您的数据库正在建模的任何内容)相关联。

【讨论】:

  • 对不起,实际上我不是指复制,而是链接,是的。我将这多个表与 id 链接起来,一切正常。唯一的问题是不定期付款。
  • 那么,您需要告诉我们不定期付款有什么问题吗?您试图将哪些“业务规则”应用于他们,为什么会出现问题?
  • 好的,一般情况下,当你有这种订阅+项目时,所有这些都在月底汇总,你支付了价值,对吧?在这里,您只需支付订阅费。对于这个项目,假设它是一个健身房,你买了一件衬衫,它的价格是 10 美元,但是你可以在一个月中的任何一天支付这个价值,你可以在星期一支付 2 美元,星期三支付 7 美元,然后支付 1 美元星期五。我知道这没有任何意义,但这是所有者的工作方式。
  • 所有这些东西都应该在你的 q 中,这就是为什么它被否决并且有 4 票可以关闭。无论如何,如果您有一张借记表(用户 ID、金额和日期)和一张付款表(用户 ID、金额和日期),简单的 Sql 查询将告诉您用户在给定月份内被收取的费用以及他的费用在月底或从“今天”开始欠款。这些东西都不难,你只需要有条不紊。
  • 我认为这里更简单的方法是对具有相同学生 ID 的物品进行排序,然后为每个物品单独打折。无论如何,抱歉弄得一团糟,花点时间,你刚刚清除了我的想法。我现在要关闭它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
相关资源
最近更新 更多