Database 使用子类别创建postgresql数据库的适当方法?

Database 使用子类别创建postgresql数据库的适当方法?,database,postgresql,csv,database-design,workflow,Database,Postgresql,Csv,Database Design,Workflow,我对使用数据库非常陌生 我需要向现有数据库中添加一个新表 问题是我需要向数据库添加200+种材料,如油漆、木材、铁等 每种材质有4个值。(重量、密度、导电性、成本) 某些材质具有子类别。例如:木材有不同的亚类(橡木、松木、灰烬等) 所有这些亚_类型都有不同的(重量、密度、导电性、成本) 有些材料没有子类别,例如:(PVC框架) 所以我的问题是,把所有这些材料放在同一张表中是否合适。 或者我应该为每种材料制作一个表格,因为有些材料有子类别,有些没有子类别 因此,基本上我担心的是,如果一些材料有子类

我对使用数据库非常陌生

我需要向现有数据库中添加一个新表

问题是我需要向数据库添加200+种材料,如油漆、木材、铁等

每种材质有4个值。(重量、密度、导电性、成本)

某些材质具有子类别。例如:木材有不同的亚类(橡木、松木、灰烬等)

所有这些亚_类型都有不同的(重量、密度、导电性、成本)

有些材料没有子类别,例如:(PVC框架)

所以我的问题是,把所有这些材料放在同一张表中是否合适。 或者我应该为每种材料制作一个表格,因为有些材料有子类别,有些没有子类别

因此,基本上我担心的是,如果一些材料有子类,而另一些材料没有子类,这将对数据库有害,因为空间是空的

下面是
.csv
表格标题的屏幕截图,子类别标记为物料类型


规范化数据库将为您省去很多麻烦

我假设“普通木材类别”没有(重量、密度、导电性、成本)属性,因为木材类型未知。这些参数适用于橡树、松树等

我会使用物料类别表:

category_id   PK
category_name
和材料表:

category_id  Foreign Key
material_id  PK
material_name
material_weight ... etc

对于不属于任何类别的材质,您可以创建一个“其他所有”类别,使每个材质始终属于一个类别,这将使代码的其余部分更加简单。

谢谢,这似乎是一个很好的方法,我应该制作主键和外键的列。我需要这样做,因为表是“链接的”?是的,外键是必要的。我已经把PK和FK注释放在了专栏上。嗨@peufeu,如果你有时间的话,我还有一个问题:我正在构建数据库,一些材料在其子类别中有子类别。我怎么能用它呢?那么,它是一棵树?查找“层次数据”和树,如:谢谢@peufeu,是的,很明显这是一棵树,或者至少有一些材料是。例子。木材=>橡木、灰烬、桦树等=>未经加工、可回收。我来看看这个。我想我现在必须使用
第1.2.3节在一个表中构建它。
否?