Skip to content

FK in DataSetAttributeAnnotation references wrong columns in DataSetAttributes #93

@atn38

Description

@atn38

lines 81-82 in https://github.com/lter/LTER-core-metabase/blob/migration/sql/33_semantic_annotation.sql establishes a foreign key "fk_SAA_DataSetID"

CREATE TABLE semantic_annotation."DataSetAttributeAnnotation"
(
  "DataSetID"   integer,
  "EntitySortOrder" integer,
  "ColumnPosition"  int, -- alternatively, AttributeName.
  "TermID"      character varying(40),
  "ObjectPropertyID"    character varying(200) DEFAULT 'containsMeasurementsOfType',
  CONSTRAINT "pk_DataSetAttributeAnnotation_DataSetID_TermID" PRIMARY KEY ("DataSetID","EntitySortOrder","ColumnPosition","TermID"),
  CONSTRAINT "fk_SAA_DataSetID" FOREIGN KEY ("DataSetID","EntitySortOrder","ColumnPosition") REFERENCES lter_metabase."DataSetAttributes" ("DataSetID","EntitySortOrder","ColumnPosition")
  MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION,
  CONSTRAINT "fk_SAA_TermID" FOREIGN KEY ("TermID") REFERENCES semantic_annotation."EMLSemanticAnnotationTerms" ("TermID")
  MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION,
  CONSTRAINT "fk_SAA_ObjPropID" FOREIGN KEY ("ObjectPropertyID") REFERENCES semantic_annotation."EMLObjectProperties" ("ObjectPropertyID")
  MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION
);

however, DSAttributes itself uses ColumnName as part of its PK, thus rendering above FK invalid

solution1: change PK in DSAttributes to use ColumnPosition
effects: need to change the same in the enumeration and missing codes tables and their corresponding views

solution2: change PK in DSAttributeAnnotation to use ColumnName
effects: need to change its corresponding view

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions