Cycles in the code generated by Lucid

  • the sets.setID - parts.partID relationship is the one that generated cycles in the model, so I deleted it. There is actually no need for it.
  • I set the sets.setID, translations.lang, sampleRelationships.sampleRelID column as primary keys, as all the tables should have one and the database complains if they do not, when running the code generated by Lucid.
  • I set the samples.pooled and measures.reportable data type to int, as there is no boolean data type in MS SQL Server. In the documentation, we should specify that 1/0 should be used instead of TRUE/FALSE. This improves the model compatibility with various databases.
    All these changes were implemented in a duplicated tab named [Sorin ERD V2.0.0]. If you’re happy with them, please delete the old [ERD V2.0.0] tab and delete the “Sorin” from the name of this tab. Also please change back to black the PKs and ints that I marked in red.

What else I got:

  • FK_sites.siteID, FK_datasets.datasetID, FK_protocols.protocolID relationships are reversed in the code exported by Lucid. I checked if starting the link from one or from the other column in the relationship influences the generated code but this is not the case. It may have to do with the order in which the column were added to the table but I don’t know for sure. The code should be fixed manually before generating the database.
  • there were two relationships named FK_samples.protocolID in the code generated by Lucid, which is not allowable, so I renamed one to FK_samples.protocolID_partID.

This is working code for MS SQL Server:

CREATE TABLE [sets] (
  [setID] varchar,
  [setType] varchar,
  [partID] varchar,
  [partLabel] varchar,
  [status] varchar,
  [firstReleased] datetime,
  [lastUpdated] datetime,
  [changes] varchar,
  [notes] varchar,
  PRIMARY KEY ([setID])
);

CREATE TABLE [parts] (
  [partID] varchar,
  [partLabel] varchar,
  [partType] varchar,
  [shortName] varchar,
  [partDesc] varchar,
  [partInstr] varchar,
  [domain] varchar,
  [specimenSet] varchar,
  [compartmentSet] varchar,
  [group] varchar,
  [class] varchar,
  [nomenclature] varchar,
  [ontologyRef] varchar,
  [latExp] varchar,
  [mmaSet] varchar,
  [unitSet] varchar,
  [aggreationScale] varchar,
  [aggregationSet] varchar,
  [qualitySet] varchar,
  [missingnessSet] varchar,
  [status] varchar,
  [firstReleased] datetime,
  [lastUpdated] datetime,
  [changes] varchar,
  [protocolSteps] varchar,
  [protocolStepsRequired] varchar,
  [protocolStepsOrder] int,
  [protocolRelationships] varchar,
  [protocolRelationshipsRequired] varchar,
  [protocolRelationshipsOrder] int,
  [measures] varchar,
  [measuresRequired] varchar,
  [measuresOrder] int,
  [measureSets] varchar,
  [measureSetsRequired] varchar,
  [measureSetsOrder] int,
  [datasets] varchar,
  [datasetsRequired] varchar,
  [datasetsOrder] int,
  [sites] varchar,
  [sitesRequired] varchar,
  [sitesOrder] int,
  [samples] varchar,
  [samplesRequired] varchar,
  [samplesOrder] int,
  [addresses] varchar,
  [addressesRequired] varchar,
  [addressesOrder] int,
  [contacts] varchar,
  [contactsRequired] varchar,
  [contactsOrder] int,
  [organizations] varchar,
  [organizationsRequired] varchar,
  [organizationsOrder] int,
  [instruments] varchar,
  [instrumentsRequired] varchar,
  [instrumentsOrder] int,
  [polygons] varchar,
  [polygonsRequired] varchar,
  [polygonsOrder] int,
  [languages] varchar,
  [languagesRequired] varchar,
  [languagesOrder] int,
  [translations] varchar,
  [translationsRequired] varchar,
  [translationsOrder] int,
  [parts] varchar,
  [partsRequired] varchar,
  [partsOrder] int,
  [sets] varchar,
  [setsRquired] varchar,
  [setsOrder] int,
  [qualityReports] varchar,
  [qualityReportsRequired] varchar,
  [qualityReportsOrder] int,
  [sampleRelationships] varchar,
  [sampleRelationshipsRequired] varchar,
  [sampleRelationshipsOrder] int,
  [protocols] varchar,
  [protocolsRequired] varchar,
  [protocolsOrder] int,
  [countries] varchar,
  [countriesRequired] varchar,
  [countriesOrder] int,
  [zones] varchar,
  [zonesRequired] varchar,
  [zonesOrder] int,
  [refLink] varchar,
  [dataType] varchar,
  [minValue] int,
  [maxValue] int,
  [minLength] int,
  [maxLength] int,
  PRIMARY KEY ([partID]));

CREATE TABLE [wideNames] (
  [wideName] varchar,
  [label] varchar,
  [charLength] int,
  [descr] varchar,
  [source] varchar,
  [wideMeasure] varchar,
  [wideProtocol] varchar,
  [wideAttribute] varchar,
  [wideNameType] varchar,
  [reportTableName] varchar,
  [reportTableInput] varchar,
  [partTypeName] varchar,
  [partTypeInput] varchar,
  [compartmentName] varchar,
  [compartmentInput] varchar,
  [specimenName] varchar,
  [specimenInput] varchar,
  [fractionName] varchar,
  [fractionInput] varchar,
  [measureName] varchar,
  [measureInput] varchar,
  [methodName] varchar,
  [methodInput] varchar,
  [unitName] varchar,
  [unitInput] varchar,
  [aggregationName] varchar,
  [aggregationInput] varchar,
  [index] int,
  [attributeName] varchar,
  [attributeInput] varchar,
  PRIMARY KEY ([wideName]));

CREATE TABLE [countries] (
  [isoCode] varchar,
  [isoCodeX] varchar,
  [numCode] varchar,
  [tld] varchar,
  [nameEngl] varchar,
  [nameOffical] varchar,
  [sovereignity] varchar,
  [countryExonym] varchar,
  [capitalExonym] varchar,
  [countryEndonym] varchar,
  [capitalEndonym] varchar,
  [langScript] varchar,
  [phone] varchar,
  [utc] varchar,
  [utcDST] varchar,
  PRIMARY KEY ([isoCode])
);

CREATE TABLE [zones] (
  [isoCode] varchar,
  [isoZone] varchar,
  [zoneName] varchar,
  PRIMARY KEY ([isoZone]));

CREATE TABLE [datasets] (
  [parDatasetID] varchar,
  [datasetID] varchar,
  [datasetDate] datetime,
  [name] varchar,
  [license] varchar,
  [descr] varchar,
  [refLink] varchar,
  [langID] int,
  [funderCont] varchar,
  [custodyCont] varchar,
  [funderID] varchar,
  [custodyID] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([datasetID]));

CREATE TABLE [addresses] (
  [addressID] varchar,
  [datasetID] varchar,
  [addL1] varchar,
  [addL2] varchar,
  [city] varchar,
  [stateProvReg] varchar,
  [pCode] varchar,
  [country] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([addressID]));

CREATE TABLE [organizations] (
  [organizationID] varchar,
  [name] varchar,
  [descr] varchar,
  [addressID] varchar,
  [datasetID] varchar,
  [orgType] varchar,
  [orgLevel] varchar,
  [orgSector] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([organizationID]));

CREATE TABLE [contacts] (
  [contactID] varchar,
  [datasetID] varchar,
  [organizationID] varchar,
  [firstName] varchar,
  [lastName] varchar,
  [email] varchar,
  [phone] varchar,
  [role] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([contactID]));

CREATE TABLE [instruments] (
  [InstrumentID] varchar,
  [datasetID] varchar,
  [name] varchar,
  [model] varchar,
  [manufacturer] varchar,
  [contactID] varchar,
  [organizationID] varchar,
  [descr] varchar,
  [refLink] varchar,
  [instType] varchar,
  [insTypeOth] varchar,
  [index] int,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([InstrumentID]));

CREATE TABLE [protocolSteps] (
  [stepID] varchar,
  [method] varchar,
  [measure] varchar,
  [summ] varchar,
  [sourceStep] varchar,
  [stepVer] varchar,
  [refLink] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [InstrumentID] varchar,
  [value] varchar,
  [unit] varchar,
  [aggregation] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([stepID]));

CREATE TABLE [protocols] (
  [sourceProtocol] varchar,
  [protocolID] varchar,
  [datasetID] varchar,
  [name] varchar,
  [summ] varchar,
  [refLink] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [protocolVersion] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([protocolID]));

CREATE TABLE [protocolRelationships] (
  [protocolIDContainer] varchar,
  [protocolIDObj] varchar,
  [stepIDObj] varchar,
  [relationshipID] varchar,
  [protocolIDSub] varchar,
  [stepIDSub] varchar,
  [lastEdited] datetime,
  [notes] varchar);

CREATE TABLE [samples] (
  [sampleID] varchar,
  [protocolID] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [siteID] varchar,
  [purposeID] varchar,
  [saMaterial] varchar,
  [datasetID] varchar,
  [origin] varchar,
  [repType] varchar,
  [collType] varchar,
  [collPer] float,
  [collNum] int,
  [pooled] int,
  [collDT] datetime,
  [collDTStart] datetime,
  [collDTEnd] datetime,
  [sentDate] datetime,
  [recDate] datetime,
  [reportable] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([sampleID]));

CREATE TABLE [sampleRelationships] (
  [sampleIDSubject] varchar,
  [sampleRelID] varchar,
  [sampleIDObject] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([sampleRelID]));

CREATE TABLE [polygons] (
  [polygonID] varchar,
  [datasetID] varchar,
  [name] varchar,
  [descr] varchar,
  [polyPop] int,
  [geoType] varchar,
  [geoEPSG] varchar,
  [geoWKT] varchar,
  [fileLocation] varchar,
  [refLink] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([polygonID]));

CREATE TABLE [sites] (
  [parSiteID] varchar,
  [siteID] varchar,
  [datasetID] varchar,
  [polygonID] varchar,
  [siteType] varchar,
  [sampleShed] varchar,
  [addressID] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [name] varchar,
  [descr] varchar,
  [repOrg1] varchar,
  [repOrg2] varchar,
  [healthReg] varchar,
  [popServ] int,
  [geoLat] varchar,
  [geoLong] varchar,
  [geoEPSG] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([siteID]));

CREATE TABLE [measureSets] (
  [measureSetRepID] varchar,
  [protocolID] varchar,
  [name] varchar,
  [organizationID] varchar,
  [contactID] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([measureSetRepID]));

CREATE TABLE [measures] (
  [measureRepID] varchar,
  [protocolID] varchar,
  [sampleID] varchar,
  [purposeID] varchar,
  [polygonID] varchar,
  [siteID] varchar,
  [datasetID] varchar,
  [measureSetRepID] varchar,
  [aDateStart] datetime,
  [aDateEnd] datetime,
  [reportDate] datetime,
  [compartment] varchar,
  [specimenID] varchar,
  [fraction] varchar,
  [group] varchar,
  [class] varchar,
  [measure] varchar,
  [value] varchar,
  [unit] varchar,
  [aggregation] varchar,
  [nomenclature] varchar,
  [index] int,
  [measureLic] varchar,
  [reportable] int,
  [organizationID] varchar,
  [contactID] varchar,
  [refLink] varchar,
  [lastEdited] datetime,
  PRIMARY KEY ([measureRepID]));

CREATE TABLE [qualityReports] (
  [quality] varchar,
  [measureRepID] varchar,
  [sampleID] varchar,
  [measureSetRepID] varchar,
  [qualityFlag] varchar,
  [severity] varchar,
  [lastEdited] datetime,
  [notes] varchar,
  PRIMARY KEY ([quality]));

CREATE TABLE [languages] (
  [lang] varchar,
  [langFam] varchar,
  [langName] varchar,
  [natName] varchar,
  [ISO6391] varchar,
  [ISO6392B] varchar,
  [ISO6392T] varchar,
  [ISO6393] varchar,
  [ISO6396] varchar,
  [firstRelased] datetime,
  [lastUpdated] datetime,
  [changes] varchar,
  [notes] varchar,
  PRIMARY KEY ([lang])
);

CREATE TABLE [translations] (
  [lang] varchar,
  [part] varchar,
  [partLabel] varchar,
  [partDesc] varchar,
  [partInstr] varchar,
  [firstReleased] datetime,
  [lastUpdated] datetime,
  [changes] varchar,
  [notes] varchar,
  PRIMARY KEY ([lang]));


;
ALTER TABLE [parts] ADD 
  CONSTRAINT [FK_parts.missingnessSet]
    FOREIGN KEY ([missingnessSet])
      REFERENCES [sets]([setID]),
  CONSTRAINT [FK_parts.compartmentSet]
    FOREIGN KEY ([compartmentSet])
      REFERENCES [sets]([setID]),
  CONSTRAINT [FK_parts.aggregationSet]
    FOREIGN KEY ([aggregationSet])
      REFERENCES [sets]([setID]),
  CONSTRAINT [FK_parts.specimenSet]
    FOREIGN KEY ([specimenSet])
      REFERENCES [sets]([setID]),
  CONSTRAINT [FK_parts.qualitySet]
    FOREIGN KEY ([qualitySet])
      REFERENCES [sets]([setID]),
  CONSTRAINT [FK_parts.unitSet]
    FOREIGN KEY ([unitSet])
      REFERENCES [sets]([setID])
;
ALTER TABLE [wideNames] ADD 
  CONSTRAINT [FK_wideNames.attributeInput]
    FOREIGN KEY ([attributeInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.aggregationInput]
    FOREIGN KEY ([aggregationInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.unitInput]
    FOREIGN KEY ([unitInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.methodInput]
    FOREIGN KEY ([methodInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.measureInput]
    FOREIGN KEY ([measureInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.fractionInput]
    FOREIGN KEY ([fractionInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.compartmentInput]
    FOREIGN KEY ([compartmentInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.partTypeInput]
    FOREIGN KEY ([partTypeInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.reportTableInput]
    FOREIGN KEY ([reportTableInput])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_wideNames.specimenInput]
    FOREIGN KEY ([specimenInput])
      REFERENCES [parts]([partID])
;
ALTER TABLE [zones] ADD 
  CONSTRAINT [FK_zones.isoCode]
    FOREIGN KEY ([isoCode])
      REFERENCES [countries]([isoCode])
;
ALTER TABLE [datasets] ADD 
  CONSTRAINT [FK_datasets.parDatasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID])
;
ALTER TABLE [addresses] ADD 
  CONSTRAINT [FK_addresses.stateProvReg]
    FOREIGN KEY ([stateProvReg])
      REFERENCES [zones]([isoZone]),
  CONSTRAINT [FK_addresses.country]
    FOREIGN KEY ([country])
      REFERENCES [countries]([isoCode]),
  CONSTRAINT [FK_addresses.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID])
;
ALTER TABLE [organizations] ADD 
  CONSTRAINT [FK_organizations.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_organizations.addressID]
    FOREIGN KEY ([addressID])
      REFERENCES [addresses]([addressID])
;
ALTER TABLE [contacts] ADD 
  CONSTRAINT [FK_contacts.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_contacts.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID])
;
ALTER TABLE [instruments] ADD 
  CONSTRAINT [FK_instruments.instType]
    FOREIGN KEY ([instType])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_instruments.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_instruments.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_instruments.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID])
;
ALTER TABLE [protocolSteps] ADD 
  CONSTRAINT [FK_protocolSteps.aggregation]
    FOREIGN KEY ([aggregation])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_protocolSteps.unit]
    FOREIGN KEY ([unit])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_protocolSteps.sourceStep]
    FOREIGN KEY ([sourceStep])
      REFERENCES [protocolSteps]([stepID]),
  CONSTRAINT [FK_protocolSteps.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_protocolSteps.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_protocolSteps.InstrumentID]
    FOREIGN KEY ([InstrumentID])
      REFERENCES [instruments]([InstrumentID])
;
ALTER TABLE [protocols] ADD 
  CONSTRAINT [FK_protocols.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_protocols.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_protocols.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_protocols.sourceProtocol]
    FOREIGN KEY ([protocolID])
      REFERENCES [protocols]([protocolID])
;
ALTER TABLE [protocolRelationships] ADD 
  CONSTRAINT [FK_protocolRelationships.stepIDObj]
    FOREIGN KEY ([stepIDObj])
      REFERENCES [protocolSteps]([stepID]),
  CONSTRAINT [FK_protocolRelationships.protocolIDSub]
    FOREIGN KEY ([protocolIDSub])
      REFERENCES [protocols]([protocolID]),
  CONSTRAINT [FK_protocolRelationships.protocolIDContainer]
    FOREIGN KEY ([protocolIDContainer])
      REFERENCES [protocols]([protocolID]),
  CONSTRAINT [FK_protocolRelationships.stepIDSub]
    FOREIGN KEY ([stepIDSub])
      REFERENCES [protocolSteps]([stepID]),
  CONSTRAINT [FK_protocolRelationships.protocolIDObj]
    FOREIGN KEY ([protocolIDObj])
      REFERENCES [protocols]([protocolID])
;
ALTER TABLE [samples] ADD 
  CONSTRAINT [FK_samples.collType]
    FOREIGN KEY ([collType])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_samples.repType]
    FOREIGN KEY ([repType])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_samples.saMaterial]
    FOREIGN KEY ([saMaterial])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_samples.purposeID]
    FOREIGN KEY ([purposeID])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_samples.protocolID_partID]
    FOREIGN KEY ([protocolID])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_samples.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_samples.protocolID]
    FOREIGN KEY ([protocolID])
      REFERENCES [protocols]([protocolID]),
  CONSTRAINT [FK_samples.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_samples.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID])
;
ALTER TABLE [sampleRelationships] ADD 
  CONSTRAINT [FK_sampleRelationships.sampleRelID]
    FOREIGN KEY ([sampleRelID])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_sampleRelationships.sampleIDSubject]
    FOREIGN KEY ([sampleIDSubject])
      REFERENCES [samples]([sampleID]),
  CONSTRAINT [FK_sampleRelationships.sampleIDObject]
    FOREIGN KEY ([sampleIDObject])
      REFERENCES [samples]([sampleID])
;
ALTER TABLE [polygons] ADD 
  CONSTRAINT [FK_polygons.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_polygons.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_polygons.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID])
;
ALTER TABLE [sites] ADD 
  CONSTRAINT [FK_sites.repOrg2]
    FOREIGN KEY ([repOrg2])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_sites.repOrg1]
    FOREIGN KEY ([repOrg1])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_sites.parSiteID]
    FOREIGN KEY ([siteID])
      REFERENCES [sites]([siteID]),
  CONSTRAINT [FK_sites.siteType]
    FOREIGN KEY ([siteType])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_sites.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_sites.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_sites.polygonID]
    FOREIGN KEY ([polygonID])
      REFERENCES [polygons]([polygonID])
;
ALTER TABLE [measureSets] ADD 
  CONSTRAINT [FK_measureSets.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_measureSets.protocolID]
    FOREIGN KEY ([protocolID])
      REFERENCES [protocols]([protocolID]),
  CONSTRAINT [FK_measureSets.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID])
;
ALTER TABLE [measures] ADD 
  CONSTRAINT [FK_measures.siteID]
    FOREIGN KEY ([siteID])
      REFERENCES [sites]([siteID]),
  CONSTRAINT [FK_measures.nomenclature]
    FOREIGN KEY ([nomenclature])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.contactID]
    FOREIGN KEY ([contactID])
      REFERENCES [contacts]([contactID]),
  CONSTRAINT [FK_measures.measureLic]
    FOREIGN KEY ([measureLic])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.unit]
    FOREIGN KEY ([unit])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.fraction]
    FOREIGN KEY ([fraction])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.organizationID]
    FOREIGN KEY ([organizationID])
      REFERENCES [organizations]([organizationID]),
  CONSTRAINT [FK_measures.aggregation]
    FOREIGN KEY ([aggregation])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.measure]
    FOREIGN KEY ([measure])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.class]
    FOREIGN KEY ([class])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.group]
    FOREIGN KEY ([group])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.specimenID]
    FOREIGN KEY ([specimenID])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.purposeID]
    FOREIGN KEY ([purposeID])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_measures.datasetID]
    FOREIGN KEY ([datasetID])
      REFERENCES [datasets]([datasetID]),
  CONSTRAINT [FK_measures.polygonID]
    FOREIGN KEY ([polygonID])
      REFERENCES [polygons]([polygonID]),
  CONSTRAINT [FK_measures.measureSetRepID]
    FOREIGN KEY ([measureSetRepID])
      REFERENCES [measureSets]([measureSetRepID]),
  CONSTRAINT [FK_measures.protocolID]
    FOREIGN KEY ([protocolID])
      REFERENCES [protocols]([protocolID]),
  CONSTRAINT [FK_measures.sampleID]
    FOREIGN KEY ([sampleID])
      REFERENCES [samples]([sampleID])
;
ALTER TABLE [qualityReports] ADD 
  CONSTRAINT [FK_qualityReports.quality]
    FOREIGN KEY ([quality])
      REFERENCES [parts]([partID]),
  CONSTRAINT [FK_qualityReports.measureRepID]
    FOREIGN KEY ([measureRepID])
      REFERENCES [measures]([measureRepID]),
  CONSTRAINT [FK_qualityReports.measureSetRepID]
    FOREIGN KEY ([measureSetRepID])
      REFERENCES [measureSets]([measureSetRepID]),
  CONSTRAINT [FK_qualityReports.sampleID]
    FOREIGN KEY ([sampleID])
      REFERENCES [samples]([sampleID])
;
ALTER TABLE [translations] ADD 
  CONSTRAINT [FK_translations.lang]
    FOREIGN KEY ([lang])
      REFERENCES [languages]([lang]),
  CONSTRAINT [FK_translations.part]
    FOREIGN KEY ([part])
      REFERENCES [parts]([partID])
;

… and this is actual code exported from MS SQL Server with proper column sizes (since not specifying a size for the varchar type would generate a size 1 column).
I chose to define most varchar columns as nvarchar(450) since columns above 900 bytes cannot be included in indexes and nvarchar takes 2 bytes for each character.
Description and Notes fields were allowed 4000 characters and geoWKT was defined as (MAX) - up to 2GB characters.

ALTER TABLE [dbo].[zones] DROP CONSTRAINT IF EXISTS [FK_zones.isoCode]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.unitInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.specimenInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.reportTableInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.partTypeInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.methodInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.measureInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.fractionInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.compartmentInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.attributeInput]
GO
ALTER TABLE [dbo].[wideNames] DROP CONSTRAINT IF EXISTS [FK_wideNames.aggregationInput]
GO
ALTER TABLE [dbo].[translations] DROP CONSTRAINT IF EXISTS [FK_translations.part]
GO
ALTER TABLE [dbo].[translations] DROP CONSTRAINT IF EXISTS [FK_translations.lang]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.siteType]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.repOrg2]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.repOrg1]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.polygonID]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.parSiteID]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.organizationID]
GO
ALTER TABLE [dbo].[sites] DROP CONSTRAINT IF EXISTS [FK_sites.datasetID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.saMaterial]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.repType]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.purposeID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.protocolID_partID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.protocolID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.organizationID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.datasetID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.contactID]
GO
ALTER TABLE [dbo].[samples] DROP CONSTRAINT IF EXISTS [FK_samples.collType]
GO
ALTER TABLE [dbo].[sampleRelationships] DROP CONSTRAINT IF EXISTS [FK_sampleRelationships.sampleRelID]
GO
ALTER TABLE [dbo].[sampleRelationships] DROP CONSTRAINT IF EXISTS [FK_sampleRelationships.sampleIDSubject]
GO
ALTER TABLE [dbo].[sampleRelationships] DROP CONSTRAINT IF EXISTS [FK_sampleRelationships.sampleIDObject]
GO
ALTER TABLE [dbo].[qualityReports] DROP CONSTRAINT IF EXISTS [FK_qualityReports.sampleID]
GO
ALTER TABLE [dbo].[qualityReports] DROP CONSTRAINT IF EXISTS [FK_qualityReports.quality]
GO
ALTER TABLE [dbo].[qualityReports] DROP CONSTRAINT IF EXISTS [FK_qualityReports.measureSetRepID]
GO
ALTER TABLE [dbo].[qualityReports] DROP CONSTRAINT IF EXISTS [FK_qualityReports.measureRepID]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.unit]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.sourceStep]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.organizationID]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.InstrumentID]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.contactID]
GO
ALTER TABLE [dbo].[protocolSteps] DROP CONSTRAINT IF EXISTS [FK_protocolSteps.aggregation]
GO
ALTER TABLE [dbo].[protocols] DROP CONSTRAINT IF EXISTS [FK_protocols.sourceProtocol]
GO
ALTER TABLE [dbo].[protocols] DROP CONSTRAINT IF EXISTS [FK_protocols.organizationID]
GO
ALTER TABLE [dbo].[protocols] DROP CONSTRAINT IF EXISTS [FK_protocols.datasetID]
GO
ALTER TABLE [dbo].[protocols] DROP CONSTRAINT IF EXISTS [FK_protocols.contactID]
GO
ALTER TABLE [dbo].[protocolRelationships] DROP CONSTRAINT IF EXISTS [FK_protocolRelationships.stepIDSub]
GO
ALTER TABLE [dbo].[protocolRelationships] DROP CONSTRAINT IF EXISTS [FK_protocolRelationships.stepIDObj]
GO
ALTER TABLE [dbo].[protocolRelationships] DROP CONSTRAINT IF EXISTS [FK_protocolRelationships.protocolIDSub]
GO
ALTER TABLE [dbo].[protocolRelationships] DROP CONSTRAINT IF EXISTS [FK_protocolRelationships.protocolIDObj]
GO
ALTER TABLE [dbo].[protocolRelationships] DROP CONSTRAINT IF EXISTS [FK_protocolRelationships.protocolIDContainer]
GO
ALTER TABLE [dbo].[polygons] DROP CONSTRAINT IF EXISTS [FK_polygons.organizationID]
GO
ALTER TABLE [dbo].[polygons] DROP CONSTRAINT IF EXISTS [FK_polygons.datasetID]
GO
ALTER TABLE [dbo].[polygons] DROP CONSTRAINT IF EXISTS [FK_polygons.contactID]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.unitSet]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.specimenSet]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.qualitySet]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.missingnessSet]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.compartmentSet]
GO
ALTER TABLE [dbo].[parts] DROP CONSTRAINT IF EXISTS [FK_parts.aggregationSet]
GO
ALTER TABLE [dbo].[organizations] DROP CONSTRAINT IF EXISTS [FK_organizations.datasetID]
GO
ALTER TABLE [dbo].[organizations] DROP CONSTRAINT IF EXISTS [FK_organizations.addressID]
GO
ALTER TABLE [dbo].[measureSets] DROP CONSTRAINT IF EXISTS [FK_measureSets.protocolID]
GO
ALTER TABLE [dbo].[measureSets] DROP CONSTRAINT IF EXISTS [FK_measureSets.organizationID]
GO
ALTER TABLE [dbo].[measureSets] DROP CONSTRAINT IF EXISTS [FK_measureSets.contactID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.unit]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.specimenID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.siteID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.sampleID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.purposeID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.protocolID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.polygonID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.organizationID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.nomenclature]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.measureSetRepID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.measureLic]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.measure]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.group]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.fraction]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.datasetID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.contactID]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.class]
GO
ALTER TABLE [dbo].[measures] DROP CONSTRAINT IF EXISTS [FK_measures.aggregation]
GO
ALTER TABLE [dbo].[instruments] DROP CONSTRAINT IF EXISTS [FK_instruments.organizationID]
GO
ALTER TABLE [dbo].[instruments] DROP CONSTRAINT IF EXISTS [FK_instruments.instType]
GO
ALTER TABLE [dbo].[instruments] DROP CONSTRAINT IF EXISTS [FK_instruments.datasetID]
GO
ALTER TABLE [dbo].[instruments] DROP CONSTRAINT IF EXISTS [FK_instruments.contactID]
GO
ALTER TABLE [dbo].[datasets] DROP CONSTRAINT IF EXISTS [FK_datasets.parDatasetID]
GO
ALTER TABLE [dbo].[contacts] DROP CONSTRAINT IF EXISTS [FK_contacts.organizationID]
GO
ALTER TABLE [dbo].[contacts] DROP CONSTRAINT IF EXISTS [FK_contacts.datasetID]
GO
ALTER TABLE [dbo].[addresses] DROP CONSTRAINT IF EXISTS [FK_addresses.stateProvReg]
GO
ALTER TABLE [dbo].[addresses] DROP CONSTRAINT IF EXISTS [FK_addresses.datasetID]
GO
ALTER TABLE [dbo].[addresses] DROP CONSTRAINT IF EXISTS [FK_addresses.country]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[zones]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[zones]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[wideNames]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[wideNames]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[translations]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[translations]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sites]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[sites]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sets]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[sets]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[samples]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[samples]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sampleRelationships]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[sampleRelationships]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[qualityReports]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[qualityReports]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[protocolSteps]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[protocolSteps]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[protocols]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[protocols]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[protocolRelationships]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[protocolRelationships]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[polygons]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[polygons]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[parts]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[parts]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[organizations]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[organizations]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[measureSets]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[measureSets]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[measures]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[measures]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[languages]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[languages]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[instruments]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[instruments]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[datasets]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[datasets]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[countries]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[countries]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[contacts]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[contacts]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addresses]') AND type in (N'U'))
DROP TABLE IF EXISTS [dbo].[addresses]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[addresses](
	[addressID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[addL1] [nvarchar](450) NULL,
	[addL2] [nvarchar](450) NULL,
	[city] [nvarchar](450) NULL,
	[stateProvReg] [nvarchar](450) NULL,
	[pCode] [nvarchar](450) NULL,
	[country] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__addresse__26A1118D36EF0D50] PRIMARY KEY CLUSTERED 
(
	[addressID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[contacts](
	[contactID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[organizationID] [nvarchar](450) NULL,
	[firstName] [nvarchar](450) NULL,
	[lastName] [nvarchar](450) NULL,
	[email] [nvarchar](450) NULL,
	[phone] [nvarchar](450) NULL,
	[role] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__contacts__7121FD15AD0C0727] PRIMARY KEY CLUSTERED 
(
	[contactID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[countries](
	[isoCode] [nvarchar](450) NOT NULL,
	[isoCodeX] [nvarchar](450) NULL,
	[numCode] [nvarchar](450) NULL,
	[tld] [nvarchar](450) NULL,
	[nameEngl] [nvarchar](450) NULL,
	[nameOffical] [nvarchar](450) NULL,
	[sovereignity] [nvarchar](450) NULL,
	[countryExonym] [nvarchar](450) NULL,
	[capitalExonym] [nvarchar](450) NULL,
	[countryEndonym] [nvarchar](450) NULL,
	[capitalEndonym] [nvarchar](450) NULL,
	[langScript] [nvarchar](450) NULL,
	[phone] [nvarchar](450) NULL,
	[utc] [nvarchar](450) NULL,
	[utcDST] [nvarchar](450) NULL,
 CONSTRAINT [PK__countrie__659C56C34FC2A72C] PRIMARY KEY CLUSTERED 
(
	[isoCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[datasets](
	[parDatasetID] [nvarchar](450) NULL,
	[datasetID] [nvarchar](450) NOT NULL,
	[datasetDate] [datetime2] NULL,
	[name] [nvarchar](450) NULL,
	[license] [nvarchar](450) NULL,
	[descr] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[langID] [int] NULL,
	[funderCont] [nvarchar](450) NULL,
	[custodyCont] [nvarchar](450) NULL,
	[funderID] [nvarchar](450) NULL,
	[custodyID] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__datasets__02DFF0A143515AEA] PRIMARY KEY CLUSTERED 
(
	[datasetID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[instruments](
	[InstrumentID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[name] [nvarchar](450) NULL,
	[model] [nvarchar](450) NULL,
	[manufacturer] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[organizationID] [nvarchar](450) NULL,
	[descr] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[instType] [nvarchar](450) NULL,
	[insTypeOth] [nvarchar](450) NULL,
	[index] [int] NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__instrume__430A5366C687BEB1] PRIMARY KEY CLUSTERED 
(
	[InstrumentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[languages](
	[lang] [nvarchar](450) NOT NULL,
	[langFam] [nvarchar](450) NULL,
	[langName] [nvarchar](450) NULL,
	[natName] [nvarchar](450) NULL,
	[ISO6391] [nvarchar](450) NULL,
	[ISO6392B] [nvarchar](450) NULL,
	[ISO6392T] [nvarchar](450) NULL,
	[ISO6393] [nvarchar](450) NULL,
	[ISO6396] [nvarchar](450) NULL,
	[firstRelased] [datetime2] NULL,
	[lastUpdated] [datetime2] NULL,
	[changes] [nvarchar](450) NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__language__A448E7831DC30204] PRIMARY KEY CLUSTERED 
(
	[lang] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[measures](
	[measureRepID] [nvarchar](450) NOT NULL,
	[protocolID] [nvarchar](450) NULL,
	[sampleID] [nvarchar](450) NULL,
	[purposeID] [nvarchar](450) NULL,
	[polygonID] [nvarchar](450) NULL,
	[siteID] [nvarchar](450) NULL,
	[datasetID] [nvarchar](450) NULL,
	[measureSetRepID] [nvarchar](450) NULL,
	[aDateStart] [datetime2] NULL,
	[aDateEnd] [datetime2] NULL,
	[reportDate] [datetime2] NULL,
	[compartment] [nvarchar](450) NULL,
	[specimenID] [nvarchar](450) NULL,
	[fraction] [nvarchar](450) NULL,
	[group] [nvarchar](450) NULL,
	[class] [nvarchar](450) NULL,
	[measure] [nvarchar](450) NULL,
	[value] [nvarchar](450) NULL,
	[unit] [nvarchar](450) NULL,
	[aggregation] [nvarchar](450) NULL,
	[nomenclature] [nvarchar](450) NULL,
	[index] [int] NULL,
	[measureLic] [nvarchar](450) NULL,
	[reportable] [int] NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[lastEdited] [datetime2] NULL,
 CONSTRAINT [PK__measures__EEB5CFA1A2FB28AE] PRIMARY KEY CLUSTERED 
(
	[measureRepID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[measureSets](
	[measureSetRepID] [nvarchar](450) NOT NULL,
	[protocolID] [nvarchar](450) NULL,
	[name] [nvarchar](450) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__measureS__6BF4F5F3ED304632] PRIMARY KEY CLUSTERED 
(
	[measureSetRepID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[organizations](
	[organizationID] [nvarchar](450) NOT NULL,
	[name] [nvarchar](450) NULL,
	[descr] [nvarchar](450) NULL,
	[addressID] [nvarchar](450) NULL,
	[datasetID] [nvarchar](450) NULL,
	[orgType] [nvarchar](450) NULL,
	[orgLevel] [nvarchar](450) NULL,
	[orgSector] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__organiza__29747D79B216482A] PRIMARY KEY CLUSTERED 
(
	[organizationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[parts](
	[partID] [nvarchar](450) NOT NULL,
	[partLabel] [nvarchar](450) NULL,
	[partType] [nvarchar](450) NULL,
	[shortName] [nvarchar](450) NULL,
	[partDesc] [nvarchar](4000) NULL,
	[partInstr] [nvarchar](450) NULL,
	[domain] [nvarchar](450) NULL,
	[specimenSet] [nvarchar](450) NULL,
	[compartmentSet] [nvarchar](450) NULL,
	[group] [nvarchar](450) NULL,
	[class] [nvarchar](450) NULL,
	[nomenclature] [nvarchar](450) NULL,
	[ontologyRef] [nvarchar](450) NULL,
	[latExp] [nvarchar](450) NULL,
	[mmaSet] [nvarchar](450) NULL,
	[unitSet] [nvarchar](450) NULL,
	[aggreationScale] [nvarchar](450) NULL,
	[aggregationSet] [nvarchar](450) NULL,
	[qualitySet] [nvarchar](450) NULL,
	[missingnessSet] [nvarchar](450) NULL,
	[status] [nvarchar](450) NULL,
	[firstReleased] [datetime2] NULL,
	[lastUpdated] [datetime2] NULL,
	[changes] [nvarchar](450) NULL,
	[protocolSteps] [nvarchar](450) NULL,
	[protocolStepsRequired] [nvarchar](450) NULL,
	[protocolStepsOrder] [int] NULL,
	[protocolRelationships] [nvarchar](450) NULL,
	[protocolRelationshipsRequired] [nvarchar](450) NULL,
	[protocolRelationshipsOrder] [int] NULL,
	[measures] [nvarchar](450) NULL,
	[measuresRequired] [nvarchar](450) NULL,
	[measuresOrder] [int] NULL,
	[measureSets] [nvarchar](450) NULL,
	[measureSetsRequired] [nvarchar](450) NULL,
	[measureSetsOrder] [int] NULL,
	[datasets] [nvarchar](450) NULL,
	[datasetsRequired] [nvarchar](450) NULL,
	[datasetsOrder] [int] NULL,
	[sites] [nvarchar](450) NULL,
	[sitesRequired] [nvarchar](450) NULL,
	[sitesOrder] [int] NULL,
	[samples] [nvarchar](450) NULL,
	[samplesRequired] [nvarchar](450) NULL,
	[samplesOrder] [int] NULL,
	[addresses] [nvarchar](450) NULL,
	[addressesRequired] [nvarchar](450) NULL,
	[addressesOrder] [int] NULL,
	[contacts] [nvarchar](450) NULL,
	[contactsRequired] [nvarchar](450) NULL,
	[contactsOrder] [int] NULL,
	[organizations] [nvarchar](450) NULL,
	[organizationsRequired] [nvarchar](450) NULL,
	[organizationsOrder] [int] NULL,
	[instruments] [nvarchar](450) NULL,
	[instrumentsRequired] [nvarchar](450) NULL,
	[instrumentsOrder] [int] NULL,
	[polygons] [nvarchar](450) NULL,
	[polygonsRequired] [nvarchar](450) NULL,
	[polygonsOrder] [int] NULL,
	[languages] [nvarchar](450) NULL,
	[languagesRequired] [nvarchar](450) NULL,
	[languagesOrder] [int] NULL,
	[translations] [nvarchar](450) NULL,
	[translationsRequired] [nvarchar](450) NULL,
	[translationsOrder] [int] NULL,
	[parts] [nvarchar](450) NULL,
	[partsRequired] [nvarchar](450) NULL,
	[partsOrder] [int] NULL,
	[sets] [nvarchar](450) NULL,
	[setsRquired] [nvarchar](450) NULL,
	[setsOrder] [int] NULL,
	[qualityReports] [nvarchar](450) NULL,
	[qualityReportsRequired] [nvarchar](450) NULL,
	[qualityReportsOrder] [int] NULL,
	[sampleRelationships] [nvarchar](450) NULL,
	[sampleRelationshipsRequired] [nvarchar](450) NULL,
	[sampleRelationshipsOrder] [int] NULL,
	[protocols] [nvarchar](450) NULL,
	[protocolsRequired] [nvarchar](450) NULL,
	[protocolsOrder] [int] NULL,
	[countries] [nvarchar](450) NULL,
	[countriesRequired] [nvarchar](450) NULL,
	[countriesOrder] [int] NULL,
	[zones] [nvarchar](450) NULL,
	[zonesRequired] [nvarchar](450) NULL,
	[zonesOrder] [int] NULL,
	[refLink] [nvarchar](4000) NULL,
	[dataType] [nvarchar](450) NULL,
	[minValue] [int] NULL,
	[maxValue] [int] NULL,
	[minLength] [int] NULL,
	[maxLength] [int] NULL,
 CONSTRAINT [PK__parts__7FDB1448E687C5F1] PRIMARY KEY CLUSTERED 
(
	[partID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[polygons](
	[polygonID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[name] [nvarchar](450) NULL,
	[descr] [nvarchar](4000) NULL,
	[polyPop] [int] NULL,
	[geoType] [nvarchar](450) NULL,
	[geoEPSG] [nvarchar](450) NULL,
	[geoWKT] [nvarchar](MAX) NULL,
	[fileLocation] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__polygons__28246249F5ECDE1B] PRIMARY KEY CLUSTERED 
(
	[polygonID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[protocolRelationships](
	[protocolIDContainer] [nvarchar](450) NULL,
	[protocolIDObj] [nvarchar](450) NULL,
	[stepIDObj] [nvarchar](450) NULL,
	[relationshipID] [nvarchar](450) NULL,
	[protocolIDSub] [nvarchar](450) NULL,
	[stepIDSub] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[protocols](
	[sourceProtocol] [nvarchar](450) NULL,
	[protocolID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[name] [nvarchar](450) NULL,
	[summ] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[protocolVersion] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__protocol__48F3B4094A743A35] PRIMARY KEY CLUSTERED 
(
	[protocolID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[protocolSteps](
	[stepID] [nvarchar](450) NOT NULL,
	[method] [nvarchar](450) NULL,
	[measure] [nvarchar](450) NULL,
	[summ] [nvarchar](450) NULL,
	[sourceStep] [nvarchar](450) NULL,
	[stepVer] [nvarchar](450) NULL,
	[refLink] [nvarchar](4000) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[InstrumentID] [nvarchar](450) NULL,
	[value] [nvarchar](450) NULL,
	[unit] [nvarchar](450) NULL,
	[aggregation] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__protocol__4E25C23D392861EE] PRIMARY KEY CLUSTERED 
(
	[stepID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[qualityReports](
	[quality] [nvarchar](450) NOT NULL,
	[measureRepID] [nvarchar](450) NULL,
	[sampleID] [nvarchar](450) NULL,
	[measureSetRepID] [nvarchar](450) NULL,
	[qualityFlag] [nvarchar](450) NULL,
	[severity] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__qualityR__B9B86FE6DA3E7440] PRIMARY KEY CLUSTERED 
(
	[quality] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[sampleRelationships](
	[sampleIDSubject] [nvarchar](450) NULL,
	[sampleRelID] [nvarchar](450) NOT NULL,
	[sampleIDObject] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__sampleRe__67C1F34DBC078CEA] PRIMARY KEY CLUSTERED 
(
	[sampleRelID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[samples](
	[sampleID] [nvarchar](450) NOT NULL,
	[protocolID] [nvarchar](450) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[siteID] [nvarchar](450) NULL,
	[purposeID] [nvarchar](450) NULL,
	[saMaterial] [nvarchar](450) NULL,
	[datasetID] [nvarchar](450) NULL,
	[origin] [nvarchar](450) NULL,
	[repType] [nvarchar](450) NULL,
	[collType] [nvarchar](450) NULL,
	[collPer] [float] NULL,
	[collNum] [int] NULL,
	[pooled] [int] NULL,
	[collDT] [datetime2] NULL,
	[collDTStart] [datetime2] NULL,
	[collDTEnd] [datetime2] NULL,
	[sentDate] [datetime2] NULL,
	[recDate] [datetime2] NULL,
	[reportable] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__samples__3FD4F24B6428A88E] PRIMARY KEY CLUSTERED 
(
	[sampleID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[sets](
	[setID] [nvarchar](450) NOT NULL,
	[setType] [nvarchar](450) NULL,
	[partID] [nvarchar](450) NULL,
	[partLabel] [nvarchar](450) NULL,
	[status] [nvarchar](450) NULL,
	[firstReleased] [datetime2] NULL,
	[lastUpdated] [datetime2] NULL,
	[changes] [nvarchar](450) NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__sets__DA8A697A917E076A] PRIMARY KEY CLUSTERED 
(
	[setID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[sites](
	[parSiteID] [nvarchar](450) NULL,
	[siteID] [nvarchar](450) NOT NULL,
	[datasetID] [nvarchar](450) NULL,
	[polygonID] [nvarchar](450) NULL,
	[siteType] [nvarchar](450) NULL,
	[sampleShed] [nvarchar](450) NULL,
	[addressID] [nvarchar](450) NULL,
	[organizationID] [nvarchar](450) NULL,
	[contactID] [nvarchar](450) NULL,
	[name] [nvarchar](450) NULL,
	[descr] [nvarchar](450) NULL,
	[repOrg1] [nvarchar](450) NULL,
	[repOrg2] [nvarchar](450) NULL,
	[healthReg] [nvarchar](450) NULL,
	[popServ] [int] NULL,
	[geoLat] [nvarchar](450) NULL,
	[geoLong] [nvarchar](450) NULL,
	[geoEPSG] [nvarchar](450) NULL,
	[lastEdited] [datetime2] NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__sites__EAF19B59301A5C75] PRIMARY KEY CLUSTERED 
(
	[siteID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[translations](
	[lang] [nvarchar](450) NOT NULL,
	[part] [nvarchar](450) NULL,
	[partLabel] [nvarchar](450) NULL,
	[partDesc] [nvarchar](450) NULL,
	[partInstr] [nvarchar](450) NULL,
	[firstReleased] [datetime2] NULL,
	[lastUpdated] [datetime2] NULL,
	[changes] [nvarchar](450) NULL,
	[notes] [nvarchar](4000) NULL,
 CONSTRAINT [PK__translat__A448E783E94932F1] PRIMARY KEY CLUSTERED 
(
	[lang] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[wideNames](
	[wideName] [nvarchar](450) NOT NULL,
	[label] [nvarchar](450) NULL,
	[charLength] [int] NULL,
	[descr] [nvarchar](4000) NULL,
	[source] [nvarchar](450) NULL,
	[wideMeasure] [nvarchar](450) NULL,
	[wideProtocol] [nvarchar](450) NULL,
	[wideAttribute] [nvarchar](450) NULL,
	[wideNameType] [nvarchar](450) NULL,
	[reportTableName] [nvarchar](450) NULL,
	[reportTableInput] [nvarchar](450) NULL,
	[partTypeName] [nvarchar](450) NULL,
	[partTypeInput] [nvarchar](450) NULL,
	[compartmentName] [nvarchar](450) NULL,
	[compartmentInput] [nvarchar](450) NULL,
	[specimenName] [nvarchar](450) NULL,
	[specimenInput] [nvarchar](450) NULL,
	[fractionName] [nvarchar](450) NULL,
	[fractionInput] [nvarchar](450) NULL,
	[measureName] [nvarchar](450) NULL,
	[measureInput] [nvarchar](450) NULL,
	[methodName] [nvarchar](450) NULL,
	[methodInput] [nvarchar](450) NULL,
	[unitName] [nvarchar](450) NULL,
	[unitInput] [nvarchar](450) NULL,
	[aggregationName] [nvarchar](450) NULL,
	[aggregationInput] [nvarchar](450) NULL,
	[index] [int] NULL,
	[attributeName] [nvarchar](450) NULL,
	[attributeInput] [nvarchar](450) NULL,
 CONSTRAINT [PK__wideName__D8C8E8B9053BAAC2] PRIMARY KEY CLUSTERED 
(
	[wideName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[zones](
	[isoCode] [nvarchar](450) NULL,
	[isoZone] [nvarchar](450) NOT NULL,
	[zoneName] [nvarchar](450) NULL,
 CONSTRAINT [PK__zones__4D598FEE4AF22C86] PRIMARY KEY CLUSTERED 
(
	[isoZone] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

…continued:

ALTER TABLE [dbo].[addresses]  WITH CHECK ADD  CONSTRAINT [FK_addresses.country] FOREIGN KEY([country])
REFERENCES [dbo].[countries] ([isoCode])
GO
ALTER TABLE [dbo].[addresses] CHECK CONSTRAINT [FK_addresses.country]
GO
ALTER TABLE [dbo].[addresses]  WITH CHECK ADD  CONSTRAINT [FK_addresses.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[addresses] CHECK CONSTRAINT [FK_addresses.datasetID]
GO
ALTER TABLE [dbo].[addresses]  WITH CHECK ADD  CONSTRAINT [FK_addresses.stateProvReg] FOREIGN KEY([stateProvReg])
REFERENCES [dbo].[zones] ([isoZone])
GO
ALTER TABLE [dbo].[addresses] CHECK CONSTRAINT [FK_addresses.stateProvReg]
GO
ALTER TABLE [dbo].[contacts]  WITH CHECK ADD  CONSTRAINT [FK_contacts.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[contacts] CHECK CONSTRAINT [FK_contacts.datasetID]
GO
ALTER TABLE [dbo].[contacts]  WITH CHECK ADD  CONSTRAINT [FK_contacts.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[contacts] CHECK CONSTRAINT [FK_contacts.organizationID]
GO
ALTER TABLE [dbo].[datasets]  WITH CHECK ADD  CONSTRAINT [FK_datasets.parDatasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[datasets] CHECK CONSTRAINT [FK_datasets.parDatasetID]
GO
ALTER TABLE [dbo].[instruments]  WITH CHECK ADD  CONSTRAINT [FK_instruments.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[instruments] CHECK CONSTRAINT [FK_instruments.contactID]
GO
ALTER TABLE [dbo].[instruments]  WITH CHECK ADD  CONSTRAINT [FK_instruments.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[instruments] CHECK CONSTRAINT [FK_instruments.datasetID]
GO
ALTER TABLE [dbo].[instruments]  WITH CHECK ADD  CONSTRAINT [FK_instruments.instType] FOREIGN KEY([instType])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[instruments] CHECK CONSTRAINT [FK_instruments.instType]
GO
ALTER TABLE [dbo].[instruments]  WITH CHECK ADD  CONSTRAINT [FK_instruments.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[instruments] CHECK CONSTRAINT [FK_instruments.organizationID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.aggregation] FOREIGN KEY([aggregation])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.aggregation]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.class] FOREIGN KEY([class])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.class]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.contactID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.datasetID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.fraction] FOREIGN KEY([fraction])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.fraction]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.group] FOREIGN KEY([group])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.group]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.measure] FOREIGN KEY([measure])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.measure]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.measureLic] FOREIGN KEY([measureLic])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.measureLic]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.measureSetRepID] FOREIGN KEY([measureSetRepID])
REFERENCES [dbo].[measureSets] ([measureSetRepID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.measureSetRepID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.nomenclature] FOREIGN KEY([nomenclature])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.nomenclature]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.organizationID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.polygonID] FOREIGN KEY([polygonID])
REFERENCES [dbo].[polygons] ([polygonID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.polygonID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.protocolID] FOREIGN KEY([protocolID])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.protocolID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.purposeID] FOREIGN KEY([purposeID])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.purposeID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.sampleID] FOREIGN KEY([sampleID])
REFERENCES [dbo].[samples] ([sampleID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.sampleID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.siteID] FOREIGN KEY([siteID])
REFERENCES [dbo].[sites] ([siteID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.siteID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.specimenID] FOREIGN KEY([specimenID])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.specimenID]
GO
ALTER TABLE [dbo].[measures]  WITH CHECK ADD  CONSTRAINT [FK_measures.unit] FOREIGN KEY([unit])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[measures] CHECK CONSTRAINT [FK_measures.unit]
GO
ALTER TABLE [dbo].[measureSets]  WITH CHECK ADD  CONSTRAINT [FK_measureSets.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[measureSets] CHECK CONSTRAINT [FK_measureSets.contactID]
GO
ALTER TABLE [dbo].[measureSets]  WITH CHECK ADD  CONSTRAINT [FK_measureSets.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[measureSets] CHECK CONSTRAINT [FK_measureSets.organizationID]
GO
ALTER TABLE [dbo].[measureSets]  WITH CHECK ADD  CONSTRAINT [FK_measureSets.protocolID] FOREIGN KEY([protocolID])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[measureSets] CHECK CONSTRAINT [FK_measureSets.protocolID]
GO
ALTER TABLE [dbo].[organizations]  WITH CHECK ADD  CONSTRAINT [FK_organizations.addressID] FOREIGN KEY([addressID])
REFERENCES [dbo].[addresses] ([addressID])
GO
ALTER TABLE [dbo].[organizations] CHECK CONSTRAINT [FK_organizations.addressID]
GO
ALTER TABLE [dbo].[organizations]  WITH CHECK ADD  CONSTRAINT [FK_organizations.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[organizations] CHECK CONSTRAINT [FK_organizations.datasetID]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.aggregationSet] FOREIGN KEY([aggregationSet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.aggregationSet]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.compartmentSet] FOREIGN KEY([compartmentSet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.compartmentSet]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.missingnessSet] FOREIGN KEY([missingnessSet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.missingnessSet]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.qualitySet] FOREIGN KEY([qualitySet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.qualitySet]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.specimenSet] FOREIGN KEY([specimenSet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.specimenSet]
GO
ALTER TABLE [dbo].[parts]  WITH CHECK ADD  CONSTRAINT [FK_parts.unitSet] FOREIGN KEY([unitSet])
REFERENCES [dbo].[sets] ([setID])
GO
ALTER TABLE [dbo].[parts] CHECK CONSTRAINT [FK_parts.unitSet]
GO
ALTER TABLE [dbo].[polygons]  WITH CHECK ADD  CONSTRAINT [FK_polygons.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[polygons] CHECK CONSTRAINT [FK_polygons.contactID]
GO
ALTER TABLE [dbo].[polygons]  WITH CHECK ADD  CONSTRAINT [FK_polygons.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[polygons] CHECK CONSTRAINT [FK_polygons.datasetID]
GO
ALTER TABLE [dbo].[polygons]  WITH CHECK ADD  CONSTRAINT [FK_polygons.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[polygons] CHECK CONSTRAINT [FK_polygons.organizationID]
GO
ALTER TABLE [dbo].[protocolRelationships]  WITH CHECK ADD  CONSTRAINT [FK_protocolRelationships.protocolIDContainer] FOREIGN KEY([protocolIDContainer])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[protocolRelationships] CHECK CONSTRAINT [FK_protocolRelationships.protocolIDContainer]
GO
ALTER TABLE [dbo].[protocolRelationships]  WITH CHECK ADD  CONSTRAINT [FK_protocolRelationships.protocolIDObj] FOREIGN KEY([protocolIDObj])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[protocolRelationships] CHECK CONSTRAINT [FK_protocolRelationships.protocolIDObj]
GO
ALTER TABLE [dbo].[protocolRelationships]  WITH CHECK ADD  CONSTRAINT [FK_protocolRelationships.protocolIDSub] FOREIGN KEY([protocolIDSub])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[protocolRelationships] CHECK CONSTRAINT [FK_protocolRelationships.protocolIDSub]
GO
ALTER TABLE [dbo].[protocolRelationships]  WITH CHECK ADD  CONSTRAINT [FK_protocolRelationships.stepIDObj] FOREIGN KEY([stepIDObj])
REFERENCES [dbo].[protocolSteps] ([stepID])
GO
ALTER TABLE [dbo].[protocolRelationships] CHECK CONSTRAINT [FK_protocolRelationships.stepIDObj]
GO
ALTER TABLE [dbo].[protocolRelationships]  WITH CHECK ADD  CONSTRAINT [FK_protocolRelationships.stepIDSub] FOREIGN KEY([stepIDSub])
REFERENCES [dbo].[protocolSteps] ([stepID])
GO
ALTER TABLE [dbo].[protocolRelationships] CHECK CONSTRAINT [FK_protocolRelationships.stepIDSub]
GO
ALTER TABLE [dbo].[protocols]  WITH CHECK ADD  CONSTRAINT [FK_protocols.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[protocols] CHECK CONSTRAINT [FK_protocols.contactID]
GO
ALTER TABLE [dbo].[protocols]  WITH CHECK ADD  CONSTRAINT [FK_protocols.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[protocols] CHECK CONSTRAINT [FK_protocols.datasetID]
GO
ALTER TABLE [dbo].[protocols]  WITH CHECK ADD  CONSTRAINT [FK_protocols.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[protocols] CHECK CONSTRAINT [FK_protocols.organizationID]
GO
ALTER TABLE [dbo].[protocols]  WITH CHECK ADD  CONSTRAINT [FK_protocols.sourceProtocol] FOREIGN KEY([protocolID])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[protocols] CHECK CONSTRAINT [FK_protocols.sourceProtocol]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.aggregation] FOREIGN KEY([aggregation])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.aggregation]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.contactID]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.InstrumentID] FOREIGN KEY([InstrumentID])
REFERENCES [dbo].[instruments] ([InstrumentID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.InstrumentID]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.organizationID]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.sourceStep] FOREIGN KEY([sourceStep])
REFERENCES [dbo].[protocolSteps] ([stepID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.sourceStep]
GO
ALTER TABLE [dbo].[protocolSteps]  WITH CHECK ADD  CONSTRAINT [FK_protocolSteps.unit] FOREIGN KEY([unit])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[protocolSteps] CHECK CONSTRAINT [FK_protocolSteps.unit]
GO
ALTER TABLE [dbo].[qualityReports]  WITH CHECK ADD  CONSTRAINT [FK_qualityReports.measureRepID] FOREIGN KEY([measureRepID])
REFERENCES [dbo].[measures] ([measureRepID])
GO
ALTER TABLE [dbo].[qualityReports] CHECK CONSTRAINT [FK_qualityReports.measureRepID]
GO
ALTER TABLE [dbo].[qualityReports]  WITH CHECK ADD  CONSTRAINT [FK_qualityReports.measureSetRepID] FOREIGN KEY([measureSetRepID])
REFERENCES [dbo].[measureSets] ([measureSetRepID])
GO
ALTER TABLE [dbo].[qualityReports] CHECK CONSTRAINT [FK_qualityReports.measureSetRepID]
GO
ALTER TABLE [dbo].[qualityReports]  WITH CHECK ADD  CONSTRAINT [FK_qualityReports.quality] FOREIGN KEY([quality])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[qualityReports] CHECK CONSTRAINT [FK_qualityReports.quality]
GO
ALTER TABLE [dbo].[qualityReports]  WITH CHECK ADD  CONSTRAINT [FK_qualityReports.sampleID] FOREIGN KEY([sampleID])
REFERENCES [dbo].[samples] ([sampleID])
GO
ALTER TABLE [dbo].[qualityReports] CHECK CONSTRAINT [FK_qualityReports.sampleID]
GO
ALTER TABLE [dbo].[sampleRelationships]  WITH CHECK ADD  CONSTRAINT [FK_sampleRelationships.sampleIDObject] FOREIGN KEY([sampleIDObject])
REFERENCES [dbo].[samples] ([sampleID])
GO
ALTER TABLE [dbo].[sampleRelationships] CHECK CONSTRAINT [FK_sampleRelationships.sampleIDObject]
GO
ALTER TABLE [dbo].[sampleRelationships]  WITH CHECK ADD  CONSTRAINT [FK_sampleRelationships.sampleIDSubject] FOREIGN KEY([sampleIDSubject])
REFERENCES [dbo].[samples] ([sampleID])
GO
ALTER TABLE [dbo].[sampleRelationships] CHECK CONSTRAINT [FK_sampleRelationships.sampleIDSubject]
GO
ALTER TABLE [dbo].[sampleRelationships]  WITH CHECK ADD  CONSTRAINT [FK_sampleRelationships.sampleRelID] FOREIGN KEY([sampleRelID])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[sampleRelationships] CHECK CONSTRAINT [FK_sampleRelationships.sampleRelID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.collType] FOREIGN KEY([collType])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.collType]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.contactID] FOREIGN KEY([contactID])
REFERENCES [dbo].[contacts] ([contactID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.contactID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.datasetID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.organizationID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.protocolID] FOREIGN KEY([protocolID])
REFERENCES [dbo].[protocols] ([protocolID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.protocolID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.protocolID_partID] FOREIGN KEY([protocolID])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.protocolID_partID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.purposeID] FOREIGN KEY([purposeID])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.purposeID]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.repType] FOREIGN KEY([repType])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.repType]
GO
ALTER TABLE [dbo].[samples]  WITH CHECK ADD  CONSTRAINT [FK_samples.saMaterial] FOREIGN KEY([saMaterial])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[samples] CHECK CONSTRAINT [FK_samples.saMaterial]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.datasetID] FOREIGN KEY([datasetID])
REFERENCES [dbo].[datasets] ([datasetID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.datasetID]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.organizationID] FOREIGN KEY([organizationID])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.organizationID]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.parSiteID] FOREIGN KEY([siteID])
REFERENCES [dbo].[sites] ([siteID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.parSiteID]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.polygonID] FOREIGN KEY([polygonID])
REFERENCES [dbo].[polygons] ([polygonID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.polygonID]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.repOrg1] FOREIGN KEY([repOrg1])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.repOrg1]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.repOrg2] FOREIGN KEY([repOrg2])
REFERENCES [dbo].[organizations] ([organizationID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.repOrg2]
GO
ALTER TABLE [dbo].[sites]  WITH CHECK ADD  CONSTRAINT [FK_sites.siteType] FOREIGN KEY([siteType])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[sites] CHECK CONSTRAINT [FK_sites.siteType]
GO
ALTER TABLE [dbo].[translations]  WITH CHECK ADD  CONSTRAINT [FK_translations.lang] FOREIGN KEY([lang])
REFERENCES [dbo].[languages] ([lang])
GO
ALTER TABLE [dbo].[translations] CHECK CONSTRAINT [FK_translations.lang]
GO
ALTER TABLE [dbo].[translations]  WITH CHECK ADD  CONSTRAINT [FK_translations.part] FOREIGN KEY([part])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[translations] CHECK CONSTRAINT [FK_translations.part]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.aggregationInput] FOREIGN KEY([aggregationInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.aggregationInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.attributeInput] FOREIGN KEY([attributeInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.attributeInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.compartmentInput] FOREIGN KEY([compartmentInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.compartmentInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.fractionInput] FOREIGN KEY([fractionInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.fractionInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.measureInput] FOREIGN KEY([measureInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.measureInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.methodInput] FOREIGN KEY([methodInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.methodInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.partTypeInput] FOREIGN KEY([partTypeInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.partTypeInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.reportTableInput] FOREIGN KEY([reportTableInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.reportTableInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.specimenInput] FOREIGN KEY([specimenInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.specimenInput]
GO
ALTER TABLE [dbo].[wideNames]  WITH CHECK ADD  CONSTRAINT [FK_wideNames.unitInput] FOREIGN KEY([unitInput])
REFERENCES [dbo].[parts] ([partID])
GO
ALTER TABLE [dbo].[wideNames] CHECK CONSTRAINT [FK_wideNames.unitInput]
GO
ALTER TABLE [dbo].[zones]  WITH CHECK ADD  CONSTRAINT [FK_zones.isoCode] FOREIGN KEY([isoCode])
REFERENCES [dbo].[countries] ([isoCode])
GO
ALTER TABLE [dbo].[zones] CHECK CONSTRAINT [FK_zones.isoCode]
GO

Thanks for this detailed review, Sorin - apologies that it took me so long to look it over.

It makes sense now, thinking about the sets_setID-parts_partID caused the cycle. The int vs bool makes sense too. I’ll make a note in the dictionary, maybe, though perhaps @jeandavidt and @dmanuel and I should also chat about it. I know that we had long chats about boolean variables before, so this is maybe an inevitable sequel.

For the setting of sets_setID, translations_lang and sampleRelationships_sampleRelID as PKs, I think this is all fine as well. My only real concern is about consistency across the ERD in terms of how we codify the relationship between parts_partID and the various parts in the model, particularly without redundancy. But I think if we make note of the rules that guide these decisions (i.e. that every table needs at least one PK, so in such an instance, the partID reference may become a PK), we should be good. I don’t see any other issues. I’ll mainline these changes in lucid chart right away.

On a slight tangential note - I have a memory that PKs are supposed to be unique across all rows in order to be “true” PKs. Is this true? Is this a concern we need to take action on?

If so, I don’t think it’ll take too much to fix; we can add a saReportID (sample relationship report ID) to be a unique identifier for describing a sample relationship, for example, or adding a “sets entry field” and “translation entry field” that are unique codes for each entry. If this is a non-issue though, please let me know and I’ll disregard these thoughts.

Also odd that there are weird little glitches like the relationship reversal and duplication of some relationships. Good to be conscious of it, though. Thank you for catching these things!

Indeed, PK’s should be unique for each row. If we don’t have a “true” PK automatically generated or derived from the content of the table, by uniqueness of the records in some column, we should strive to generate a composite one by combining multiple columns that together would ensure uniqueness. Anyhow, to maintain compatibility with Lucid and easily extract (almost) workable SQL code from it, it is best to define primary keys by identifying the naturally unique attributes (but non-values) in each table and I think at this stage we acquired that, at least in the model, so no need to get fancy with the sampleRelationships table and such. The moment of truth will come when real data will start pouring in the structure - aka “when the s**t hits the fan” anyhow :slight_smile:

1 Like