我需要一些作业帮助。我被要求在关系数据库中定义存储三个CSV文件内容所需的一个或多个表。
NorthAmerica.csv包含两列(“型号”,“北美的购买数量”)
SouthAmerica.csv包含两列(“型号”,“南美的购买数量”)
ModelFamily.csv包含两列(“型号”,模特家庭)
据我了解,我需要将“型号”作为每个表的主键。而且我相信,“型号”列中的每个项目都将仅映射到另一个“型号号”列中的一个项目,从而使其成为一对一的关系。但是我在这里是因为我不确定,而我所看的资源给了我不同的答案。
注意:NorthAmerica.csv中的“型号”列可能不包含SouthAmerica.csv中的“型号”中的所有项目,依此类推,它们的顺序也可能不同。
- 概述在数据库中创建一个或多个关系表的步骤[存储这三个CSV文件的内容所需的]
问题实际上与高级课程有关,例如,在完成了整整一年的计算机科学入门课程之后的第二年,以及在第二年的关系数据库单元中。此外,这不是介绍性的练习(例如,提供给您的练习),而是在完成有关该主题的完整讲座后,作为证明所交付内容的能力的练习。在任何其他情况下,该练习将是(a)不公平的,并且(b)讲师无能的明确证据。
例如从CSV到关系表的转换需要几个特定的技术任务(科学,包括规则和方法以及图表):
数据分析
关系数据建模
如果您应该自己研究和了解所有这些任务,那么您的学校就是在开玩笑。教育是知识的传播。无法通过阅读获得,它需要以下附加组件:
据我了解,我需要将“型号”作为每个表的主键。
哇。那是步骤2.7,但是您还不了解数据(步骤1)。
第二,您正在将CSV 文件视为表,或者准备将其直接转换为表。它们不是表,而是文件。无论您创建什么关系表,都不会与CSV文件相同。
第三,由于文件(包括CVS文件)缺乏结构,因此不能假定可以将一列定义为键或主键。文件未编制索引,因此包含重复的记录。它们没有逻辑行的关系概念,它们包含物理记录。
例如根据给出的内容,ModelNumber
在每个文件中可能会出现多次。根据平台(可用的方法)和一个人选择的特定次要步骤,使ModelNumber
为PK可能会丢失这些记录。只需保持CSV文件不变,然后从中提取记录即可。
您可以选择将它们原样导入到原始表中,以便能够使用SQL从它们中提取出来,但这是不同的。在这种情况下,您将不需要在其上定义任何键(如上所述)。
而且我相信“型号”列中的每个项目都将仅映射到另一“型号号”列中的一个项目,从而使其成为一对一的关系。
再次,哇。您无需将一个CSV文件映射到另一个CSV文件,也无需识别它们之间的关系。该任务是定义所需的关系表,而不是按摩或处理CSV文件。
简而言之,任务(由讲师严格指定)是典型的任务(对于我在上面已经详细介绍的级别):给定这样的原始数据内容(例如,发票和付款;这里是CSV文件;等等),定义存储该内容所需的关系表。它包括:
数据分析了解CSV文件包含的数据。
关系数据建模定义存储该数据所需的关系表(不是CSV文件)。
我无法为您提供内容或教程或每个任务产生的图表,我只能为您提供最终答案。
”
看来练习中的主要挑战(假设学生已在科学方面得到适当的辅导)是确定:
也就是说,CSV与所需的关系表几乎没有相似之处。
[Region
允许给定的大洲(例如North America
)或国家(例如Brazil
),等等
- 描述如何从上面将输出获取到数据库中
通过“输出”,我认为这个小宝贝意味着内容。
这确实应该是一个单独的问题。
此外,这不是一个可以完全回答的问题,因为它高度依赖于:
例如将CSV(或其他)文件导入Sybase很简单; MSSQL; IBM / DB2。 Oracle有点困难。免费软件/共享软件/蒸气软件/无软件套件(它们不是真正的SQL,也不是真正的平台)是没有希望的。
然后大招:
为CSV文件创建原始表
将CSV文件导入原始表(以便您可以
在原始表上使用SQL)使用INSERT...SELECT
在关系表中建立键(NumPurchase
为零)
使用UPDATE
(具有内置的SELECT
)从每个CSV记录中递增NumPurchase
(它们没有索引,它们也不是行)。
ModelNumber
)所导致的后果。