我是关系数据库的新手,我读过的所有材料都覆盖了主键和外键,普通形式和联接,但是创建数据库后就不去填充它了.
您如何导入CSV文件,以便字段与它们的相关表匹配?
假设您要建立啤酒数据库,并拥有一个CSV文件,其中每一行都作为记录.
Header: brewer,beer_name,country,
city,state,beer_category,beer_type,
alcohol_contentRecord 1: Anheuser-Busch,Budweiser,
United States,St. Louis,Mo,Pale lager,
Regular,
5.0%Record 2: Anheuser-Busch,Bud Light,Pale lager
Light,4.2%Record 3: Miller Brewing Company,
Miller Lite,United States,Milwaukee,
WI,Light,
4.2%
您可以创建“啤酒”表和“啤酒”表.导入时如何在表之间连接主键?
例如,如果您尝试将一个记录添加到子(外部)表中,而该记录在父表中没有任何值,则如果关系建立正确,数据库将报错.
例如除非已添加记录1,否则将记录1添加到Beer表中将失败
Anheuser-Busch进入Brewers表.
有关设置表格的建议:
Brewer
id bigint
name varchar(50)
country varchar(50)
state varchar(10)
city varchar(50)
Beer
id bigint
brewerId bigint
name varchar(70)
category varchar(50)
type varchar(50)
alcohol decimal(3,1)
Set Brewer.Id as the Primary Key of the Brewer table.
Set Beer.Id as the Primary Key of the Beer table.
Then create a foreign key relationship between Brewer.Id = Beer.brewerId
然后手动添加冲泡器(因为其中没有太多)
Brewer
1 Anheuser-Busch United States Mo St. Louis
2 Miller Brewing Company United States WI Milwaukee
然后摆弄CSV文件,用酿酒商各自的ID替换所有酿酒商详细信息,并使用其填充Beer表:
Beer
1 1 Budweiser Pale lager Regular 5.0
2 1 Bud Light Pale lager Light 4.2
3 2 Miller Lite Pale lager Regular 4.2
因此:brewerId将每个啤酒链接到Brewer表中的Brewer.那是外键-每个啤酒会自动获取所有啤酒商的详细信息,因为它的brewerId与啤酒商的ID相匹配(并且您在创建表格时就设置了该关系).
> Beer 1(Budweiser)属于Brewer 1(Anheuser-Busch)
>啤酒2(芽光)属于Brewer 1(安海斯-布希)
>啤酒3(米勒之光)属于Brewer 2(米勒)
这可以让您做得很酷.假设Miller被另一家公司收购…您要做的就是更改Brewer表中的详细信息,瞧-Miller拥有的所有啤酒现在都属于新啤酒厂.您还可以按Brewer,州等计算销售额.
基本的经验法则是,主键和外键就像是父子关系.子代存储父代的ID.这样,每个父母可以有多个孩子.它可能会使整个过程变得更加复杂,但这将为您提供大多数数据库解决方案的很好的入门方法.