SQL - 根据列

时间:2017-03-27 19:52:17

标签: sql database-design

我目前正在设计一个SQL数据库来存储大量的生物数据。主表有超过100列,其中每行是特定的采样事件,每列是物种名称。值是该抽样事件中该物种的个体数量。

通常,我希望根据他们的分类法将物种聚集在一起。例如:假设Sp1,Sp2和Sp3属于Family1; Sp4,Sp5和Sp6属于Family2;而Family1和Family2属于Class1。如何构建数据库,以便我可以简单地查询特定的族或类,而不是每次列出100多列?

我的第一个想法是创建第二个表,列出第一个表中每列的属性。这样第二个表中的主键对应于表1中的列标题,表2中的列是我想要选择的类别(例如,族,馈送类型,生命阶段等)。但是,我不确定如何编写可以这种方式连接表的查询。

我是SQL的新手,我不确定我是否会以完全错误的方式解决这个问题。如何构建我的数据/写入查询以实现我的目标?

提前致谢。

1 个答案:

答案 0 :(得分:5)

不,不,不。不要在表格中列出物种列。

相反,如果您现在有一行,则需要多行。它将包含如下列:

  • id:自动生成的序号
  • sampleId:当前表中的每一行都属于
  • speciesId:对species
  • 的引用
  • 该种类的数据列

species表可以有一个层次结构,整个层次结构包含属,族,顺序等。