来自 3 个 CSV 文件的关系表

Relational tables from 3 CSV Files

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

根据我的理解,我需要让 'Model Number' 成为每个 table 的主键。而且我相信 'Model Number' 列中的每个项目都只会映射到另一个 'Model Number' 列中的一个项目,使其成为一对一的关系。但我在这里是因为我不确定,而且我查看的资源给了我不同的答案。

注意:NorthAmerica.csv 中的 'Model Number' 列可能不包含 [=] 中 'Model Number' 中的所有项目61=],等等,它们的顺序也可能不同。

问题一

  1. Outline the steps to create a relational table or tables in a database
    [that is required to store the content of these three CSV files]

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

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

  1. 数据分析

  2. 关系数据建模

    • 其中包括关系规范化

如果您应该自己研究和了解每一项任务,那么您的学校就是个笑话。教育是知识的传递。无法通过阅读获得,需要额外的组件:

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

From my understanding, I need to make the 'Model Number' the Primary Key for each table.

哇哦。那是第2.7步,但你还不了解数据(第1步)。

其次,您将 CSV 文件 视为表格,或者准备好按原样转换为表格。它们不是表格,它们是文件。无论您创建什么关系表,都不会与 CSV 文件相同。

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

  • 例如。根据给出的内容,ModelNumber 可能在每个文件中出现不止一次。根据平台(可用方法)和选择的具体小步骤,进行 ModelNumber PK 可能会丢失这些记录。保持 CSV 文件原样,并从中提取记录。

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

And I believe that every item in the 'Model Number' column will map to only one item in the other 'Model Number' column, making it a one-to-one relationship.

再次,哇。您不需要将一个 CSV 文件映射到另一个,或识别它们之间的关系。任务是定义所需的关系表,而不是修改或操作 CSV 文件。

简而言之,任务(讲师指定得很糟糕)是一个典型的任务(针对我在上面详细说明的级别):给定这样那样的原始数据内容(例如发票和付款;这里是 CSV 文件;等),定义存储该内容所需的关系表。它包括:

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

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

关系数据模型

我不能给你内容或教程,或每个任务的结果图,我只能给你最终的答案。

  • 看来练习中的主要挑战(假定学生已接受适当的科学辅导)是确定:

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

  • Region 允许给定大陆(例如 North America)或国家(例如 Brazil)等

问题二

  1. Describe how to get the output from above into the database

根据"output",我假设小宝贝的意思是满足。

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

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

  • 具体平台
  • 是否使用正版 SQL 或假冒 "sql"
  • 每个可用的实用程序,等等。

例如。将 CSV(或其他)文件导入 Sybase 很简单;女士SQL; IBM/DB2。甲骨文有点难。 freeware/shareware/vapourware/noware 套件(它们不是真正的 SQL 也不是真正的平台)是没有希望的。

粗略的,则:

  • 为 CSV 文件创建原始表

  • 将 CSV 文件导入原始表格(以便您可以在它们上使用SQL)

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

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

    • 此方法克服了 CSV 文件中任何重复项(ModelNumber 多次出现)可能产生的后果。