来自3个CSV文件的关系表

问题描述 投票:0回答:1

我需要一些作业帮助。我被要求在关系数据库中定义存储三个CSV文件内容所需的一个或多个表。

  • NorthAmerica.csv包含两列(“型号”,“北美的购买数量”)

  • SouthAmerica.csv包含两列(“型号”,“南美的购买数量”)

  • ModelFamily.csv包含两列(“型号”,模特家庭)

据我了解,我需要将“型号”作为每个表的主键。而且我相信,“型号”列中的每个项目都将仅映射到另一个“型号号”列中的一个项目,从而使其成为一对一的关系。但是我在这里是因为我不确定,而我所看的资源给了我不同的答案。

注意:NorthAmerica.csv中的“型号”列可能不包含SouthAmerica.csv中的“型号”中的所有项目,依此类推,它们的顺序也可能不同。

database relational-database
1个回答
2
投票

问题一

  1. 概述在数据库中创建一个或多个关系表的步骤[存储这三个CSV文件的内容所需的]

问题实际上与高级课程有关,例如,在完成了整整一年的计算机科学入门课程之后的第二年,以及在第二年的关系数据库单元中。此外,这不是介绍性的练习(例如,提供给您的练习),而是在完成有关该主题的完整讲座后,作为证明所交付内容的能力的练习。在任何其他情况下,该练习将是(a)不公平的,并且(b)讲师无能的明确证据。

例如从CSV到关系表的转换需要几个特定的​​技术任务(科学,包括规则和方法以及图表):

  1. 数据分析

  2. 关系数据建模

    • 包括关系归一化

如果您应该自己研究和了解所有这些任务,那么您的学校就是在开玩笑。教育是知识的传播。无法通过阅读获得,它需要以下附加组件:

  • 对权威的信任(通过听证而获得),和
  • 与当局的个人互动

据我了解,我需要将“型号”作为每个表的主键。

哇。那是步骤2.7,但是您还不了解数据(步骤1)。

第二,您正在将CSV 文件视为表,或者准备将其直接转换为表。它们不是表,而是文件。无论您创建什么关系表,都不会与CSV文件相同。

第三,由于文件(包括CVS文件)缺乏结构,因此不能假定可以将一列定义为键或主键。文件未编制索引,因此包含重复的记录。它们没有逻辑行的关系概念,它们包含物理记录。

  • 例如根据给出的内容,ModelNumber在每个文件中可能会出现多次。根据平台(可用的方法)和一个人选择的特定次要步骤,使ModelNumber为PK可能会丢失这些记录。只需保持CSV文件不变,然后从中提取记录即可。

  • 您可以选择将它们原样导入到原始表中,以便能够使用SQL从它们中提取出来,但这是不同的。在这种情况下,您将不需要在其上定义任何键(如上所述)。

而且我相信“型号”列中的每个项目都将仅映射到另一“型号号”列中的一个项目,从而使其成为一对一的关系。

再次,哇。您无需将一个CSV文件映射到另一个CSV文件,也无需识别它们之间的关系。该任务是定义所需的关系表,而不是按摩或处理CSV文件。

简而言之,任务(由讲师严格指定)是典型的任务(对于我在上面已经详细介绍的级别):给定这样的原始数据内容(例如,发票和付款;这里是CSV文件;等等),定义存储该内容所需的关系表。它包括:

  1. 数据分析了解CSV文件包含的数据。

  2. 关系数据建模定义存储该数据所需的关系表(不是CSV文件)。

关系数据模型

我无法为您提供内容或教程或每个任务产生的图表,我只能为您提供最终答案。

  • 看来练习中的主要挑战(假设学生已在科学方面得到适当的辅导)是确定:

    • 那个文件;文件名;和列名并不表示数据或存储要求,并且
    • 必须遵循上述规定的方法。
  • 也就是说,CSV与所需的关系表几乎没有相似之处。

  • [Region允许给定的大洲(例如North America)或国家(例如Brazil),等等

  • 第二个问题
    1. 描述如何从上面将输出获取到数据库中

    通过“输出”,我认为这个小宝贝意味着内容。

    这确实应该是一个单独的问题。

    此外,这不是一个可以完全回答的问题,因为它高度依赖于:

    • 特定平台
    • 是否使用正版SQL或假装的“ sql”
    • 每个都有可用的实用程序,等等。>>
    • 例如将CSV(或其他)文件导入Sybase很简单; MSSQL; IBM / DB2。 Oracle有点困难。免费软件/共享软件/蒸气软件/无软件套件(它们不是真正的SQL,也不是真正的平台)是没有希望的。

      然后大招:

    • 为CSV文件创建原始表

    • 将CSV文件导入原始表(以便您可以

      在原始表上使用SQL)
    • 使用INSERT...SELECT在关系表中建立键(NumPurchase为零)

    • 使用UPDATE(具有内置的SELECT)从每个CSV记录中递增NumPurchase(它们没有索引,它们也不是行)。

      • 此方法克服了CSV文件中的任何重复项(多次出现ModelNumber)所导致的后果。

    © www.soinside.com 2019 - 2024. All rights reserved.