Skip to content

Insufficient keys, especially for variant #21

Description

@rowlesmr

Hi again.

I've been play around with database construction from dictionaries, and have come across some issues, mainly with variant. I know that this is probably known, but just flagging it explicitly

Variant is used in many categories, but they don't have enough keys to properly refer to a particular variant, as variant is keyed on variant, diffrn_id, and entry_id.

The following are all category keys that are linked to _variant.variant, but can't find the right one, as we're missing diffrn_id and entry_id.

  !  FK: '_array_data.variant'                -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_array_element_size.variant'        -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_array_intensities.variant'         -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_array_structure.variant'           -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_array_structure_list.variant'      -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_array_structure_list_axis.variant' -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_axis.variant'                      -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_data_frame.variant'         -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_detector.variant'           -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_detector_axis.variant'      -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_detector_element.variant'   -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_measurement.variant'        -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_measurement_axis.variant'   -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_radiation.variant'          -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_refln.variant'              -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan.variant'               -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan_axis.variant'          -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan_collection.variant'    -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan_frame.variant'         -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan_frame_axis.variant'    -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_diffrn_scan_frame_monitor.variant' -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_map.variant'                       -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']
  !  FK: '_map_segment.variant'               -> '_variant.variant': partial FK to 'variant' — covers ['variant'] of PKs=['variant', 'diffrn_id', 'entry_id']

additionally, _entry.id is used in MAP, and VARIANT, but is never defined?

There are other underspecified keys:

  !  FK: '_array_element_size.index'                   -> '_array_structure_list.index'     : partial FK to 'array_structure_list'         — covers ['index'] of PKs=['array_id', 'index', 'variant']
  !  FK: '_array_intensities.binary_id'                -> '_array_data.binary_id'           : partial FK to 'array_data'                   — covers ['binary_id'] of PKs=['array_id', 'binary_id', 'variant']
  !  FK: '_array_structure_list_axis.axis_id'          -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_array_structure_list_section.index'         -> '_array_structure_list.index'     : partial FK to 'array_structure_list'         — covers ['index'] of PKs=['array_id', 'index', 'variant']
  !  FK: '_axis.depends_on'                            -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_diffrn_data_frame.binary_id'                -> '_array_data.binary_id'           : partial FK to 'array_data'                   — covers ['binary_id'] of PKs=['array_id', 'binary_id', 'variant']
  !  FK: '_diffrn_data_frame.array_section_id'         -> '_array_structure_list_section.id': partial FK to 'array_structure_list_section' — covers ['id'] of PKs=['id', 'array_id', 'index', 'variant']
  !  FK: '_diffrn_data_frame.detector_element_id'      -> '_diffrn_detector_element.id'     : partial FK to 'diffrn_detector_element'      — covers ['id'] of PKs=['id', 'detector_id', 'variant']
  !  FK: '_diffrn_detector_axis.axis_id'               -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_diffrn_detector_axis.detector_id'           -> '_diffrn_detector.id'             : partial FK to 'diffrn_detector'              — covers ['id'] of PKs=['diffrn_id', 'id', 'variant']
  !  FK: '_diffrn_measurement_axis.axis_id'            -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_diffrn_measurement_axis.measurement_device' -> '_diffrn_measurement.device'      : partial FK to 'diffrn_measurement'           — covers ['device_class', 'id'] of PKs=['device_class', 'diffrn_id', 'id', 'variant']
  !  FK: '_diffrn_measurement_axis.measurement_id'     -> '_diffrn_measurement.id'          : partial FK to 'diffrn_measurement'           — covers ['device_class', 'id'] of PKs=['device_class', 'diffrn_id', 'id', 'variant']
  !  FK: '_diffrn_refln.frame_id'                      -> '_diffrn_data_frame.id'           : partial FK to 'diffrn_data_frame'            — covers ['id'] of PKs=['id', 'detector_element_id', 'variant']
  !  FK: '_diffrn_scan_axis.axis_id'                   -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_diffrn_scan_frame.frame_id'                 -> '_diffrn_data_frame.id'           : partial FK to 'diffrn_data_frame'            — covers ['id'] of PKs=['id', 'detector_element_id', 'variant']
  !  FK: '_diffrn_scan_frame_axis.axis_id'             -> '_axis.id'                        : partial FK to 'axis'                         — covers ['id'] of PKs=['id', 'equipment', 'variant']
  !  FK: '_diffrn_scan_frame_axis.frame_id'            -> '_diffrn_data_frame.id'           : partial FK to 'diffrn_data_frame'            — covers ['id'] of PKs=['id', 'detector_element_id', 'variant']
  !  FK: '_diffrn_scan_frame_monitor.frame_id'         -> '_diffrn_data_frame.id'           : partial FK to 'diffrn_data_frame'            — covers ['id'] of PKs=['id', 'detector_element_id', 'variant']
  !  FK: '_diffrn_scan_frame_monitor.detector_id'      -> '_diffrn_detector.id'             : partial FK to 'diffrn_detector'              — covers ['id'] of PKs=['diffrn_id', 'id', 'variant']
  !  FK: '_map_segment.array_section_id'               -> '_array_structure_list_section.id': partial FK to 'array_structure_list_section' — covers ['id'] of PKs=['id', 'array_id', 'index', 'variant']
  !  FK: '_map_segment.id'                             -> '_map.id'                         : partial FK to 'map'                          — covers ['id'] of PKs=['id', 'diffrn_id', 'entry_id', 'variant']

and I don't know if this one matters: a part of the primary key of array_structure_list_axis, which is also a foriegn key to array_structure_list, doesn't point to the primary key of that category.

  !  FK: '_array_structure_list_axis.axis_set_id'      -> '_array_structure_list.axis_set_id': target column 'axis_set_id' is not a PK of 'array_structure_list' (PKs=['array_id', 'index', 'variant'])

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