create table dm_dokumentart (
        dokumentart          counter,
        "text"                 varchar(250),
        tabelle              char(40)
        ) ;


create unique  index dm_pk_dokumentart
        on dm_dokumentart (
        dokumentart          asc
        ) ;


alter table dm_dokumentart add constraint dm_dokumentartBeziehung
primary key  (
        dokumentart ) ;


create table dm_erscheinungsart (
        erscheinungsart      counter,
        "text"                 char(50)
        ) ;


create unique  index dm_pk_eart
        on dm_erscheinungsart (
        erscheinungsart      asc
        ) ;



alter table dm_erscheinungsart add constraint dm_erscheinungsartBeziehung
primary key  (
        erscheinungsart ) ;


create table dm_format (
        format               counter,
        "text"                 char(50),
        beschreibung         varchar(250)
        ) ;


create unique  index dm_pk_format
        on dm_format (
        format               asc
        ) ;



alter table dm_format add constraint dm_formatBeziehung
primary key  (
        format ) ;


create table dm_intervall (
        intervall            counter,
        "text"                 char(50)
        ) ;


create unique  index dm_pk_intervall
        on dm_intervall (
        intervall            asc
        ) ;

alter table dm_intervall add constraint dm_intervallBeziehung
primary key  (
        intervall ) ;


create table dm_klassifikation (
        klassifikation       counter,
        code                 varchar(250),
        beschreibung         varchar(250)
        ) ;


create unique  index dm_pk_klass
        on dm_klassifikation (
        klassifikation       asc
        ) ;


alter table dm_klassifikation add constraint dm_klassifikationBeziehung
primary key  (
        klassifikation ) ;


create table dm_sprache (
        sprache              counter,
        "text"                 varchar(250)
        ) ;

create unique  index dm_pk_sprache
        on dm_sprache (
        sprache              asc
        ) ;



alter table dm_sprache add constraint dm_spracheBeziehung
primary key  (
        sprache ) ;

create table dm_titelart (
        titelart             counter,
        "text"                 varchar(250)
        ) ;


create unique  index dm_pk_titelart
        on dm_titelart (
        titelart             asc
        ) ;



alter table dm_titelart add constraint dm_titelartBeziehung
primary key  (
        titelart ) ;


create table dm_verweisart (
        verweisart           counter,
        "text"                 varchar(250)
        ) ;


create unique  index dm_pk_verweisart
        on dm_verweisart (
        verweisart           asc
        ) ;


alter table dm_verweisart add constraint dm_verweisartBeziehung
primary key  (
        verweisart ) ;

create table pr_produzent (
        produzent            counter,
        name                 varchar(250),
        kurz                 char(50)
        ) ;


create unique  index pr_pk_produzent
        on pr_produzent (
        produzent            asc
        ) ;


alter table pr_produzent add constraint pr_produzentBeziehung
primary key  (
        produzent ) ;

create table pr_rolle (
        rolle                counter,
        "text"                 varchar(250)
        ) ;


create unique  index pr_pk_rolle
        on pr_rolle (
        rolle                asc
        ) ;


alter table pr_rolle add constraint pr_rolleBeziehung
primary key  (
        rolle ) ;


create table pr_verbindungsart (
        verbindungsart       counter,
        "text"                 varchar(250)
        ) ;


create unique  index pr_pk_verbart
        on pr_verbindungsart (
        verbindungsart       asc
        ) ;



alter table pr_verbindungsart add constraint pr_verbindungsartBeziehung
primary key  (
        verbindungsart ) ;

create table dok_dokument (
        dokument             counter,
        erscheinungsjahr     smallint ,
        erscheinungsmonat    smallint ,
        erscheinungstag      smallint ,
        format               integer,
        seiten               integer ,
        dokumentart          integer,
        erfasst_am           datetime,
        geaendert_am         datetime,
        status               char(1)
        ) ;


create unique  index dok_pk_dokument
        on dok_dokument (
        dokument             asc
        ) ;




alter table dok_dokument add constraint dok_dokumentBeziehung
primary key  (
        dokument ) ;

alter table dok_dokument add constraint dok_dokumentBeziehung1
foreign key  (
        format
        ) references dm_format (
        format ) ;

alter table dok_dokument add constraint dok_dokumentBeziehung2
foreign key  (
        dokumentart
        ) references dm_dokumentart (
        dokumentart ) ;


create table ko_konferenz (
        konferenz            counter,
        titel                varchar(250),
        intervall            integer,
        tag                  smallint ,
        monat                smallint ,
        jahr                 smallint
        ) ;

create unique  index ko_pk_konferenz
        on ko_konferenz (
        konferenz            asc
        ) ;



alter table ko_konferenz add constraint ko_konferenzBeziehung
primary key  (
        konferenz ) ;


alter table ko_konferenz add constraint ko_konferenzBeziehung1
foreign key  (
        intervall
        ) references dm_intervall (
        intervall ) ;


create table pr_institution (
        produzent            integer,
        namenszusatz         varchar(250) ,
        adresse              varchar(250)
        ) ;


create unique  index pr_pk_institution
        on pr_institution (
        produzent            asc
        ) ;

alter table pr_institution add constraint pr_institutionBeziehung
primary key  (
        produzent ) ;


alter table pr_institution add constraint pr_institutionBeziehung1 foreign key  (
        produzent
        ) references pr_produzent (
        produzent ) ;


create table pr_person (
        produzent            integer,
        name                 varchar(250) ,
        vorname              varchar(250) ,
        titel                varchar(250)
        ) ;



create unique  index pr_pk_person
        on pr_person (
        produzent            asc
        ) ;


alter table pr_person add constraint pr_personBeziehung primary key  (
        produzent ) ;

alter table pr_person add constraint pr_personBeziehung1 foreign key  (
        produzent
        ) references pr_produzent (
        produzent ) ;

create table pr_verbindung (
        verbindungsart       integer,
        produzent_1          integer,
        produzent_2          integer
        ) ;


create unique  index pr_pk_verbindung
        on pr_verbindung (
        verbindungsart       asc,
        produzent_1          asc,
        produzent_2          asc
        ) ;


alter table pr_verbindung add constraint pr_verbindungBeziehung primary key  (
        verbindungsart,
        produzent_1,
        produzent_2 ) ;


alter table pr_verbindung add constraint pr_verbindungBeziehung1 foreign key  (
        verbindungsart
        ) references pr_verbindungsart (
        verbindungsart ) ;

alter table pr_verbindung add constraint pr_verbindungBeziehung2 foreign key  (
        produzent_1
        ) references pr_produzent (
        produzent ) ;

alter table pr_verbindung add constraint pr_verbindungBeziehung3 foreign key  (
        produzent_2
        ) references pr_produzent (
        produzent ) ;


create table dok_abstract (
        sprache              integer,
        dokument             integer,
        langtext             varchar(250)
        ) ;


create unique  index dok_pk_abstract
        on dok_abstract (
        sprache              asc,
        dokument             asc
        ) ;



alter table dok_abstract add constraint dok_abstractBeziehung primary key  (
        sprache,
        dokument ) ;


alter table dok_abstract add constraint dok_abstractBeziehung1 foreign key  (
        sprache
        ) references dm_sprache (
        sprache ) ;

alter table dok_abstract add constraint dok_abstractBeziehung2 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_isbn (
        isbn                 char(15),
        dokument             integer
        ) ;


create unique  index dok_pk_isbn
        on dok_isbn (
        isbn                 asc,
        dokument             asc
        ) ;



alter table dok_isbn add constraint dok_isbnBeziehung primary key  (
        isbn,
        dokument ) ;


alter table dok_isbn add constraint dok_isbnBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;

create table dok_issn (
        issn                 char(15),
        dokument             integer
        ) ;


create unique  index dok_pk_issn
        on dok_issn (
        issn                 asc,
        dokument             asc
        ) ;


alter table dok_issn add constraint dok_issnBeziehung primary key  (
        issn,
        dokument ) ;

alter table dok_issn add constraint dok_issnBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;

create table dok_klassifikation (
        klassifikation       integer,
        dokument             integer
        ) ;


create unique  index dok_pk_klass
        on dok_klassifikation (
        klassifikation       asc,
        dokument             asc
        ) ;



alter table dok_klassifikation add constraint dok_klassifikationBeziehung primary key  (
        klassifikation,
        dokument ) ;

alter table dok_klassifikation add constraint dok_klassifikationBeziehung1 foreign key  (
        klassifikation
        ) references dm_klassifikation (
        klassifikation ) ;

alter table dok_klassifikation add constraint dok_klassifikationBeziehung2 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_produzent (
        dokument             integer,
        produzent            integer,
        rang                 integer ,
        rolle                integer
        ) ;

create unique  index dok_pk_prod
        on dok_produzent (
        dokument             asc,
        produzent            asc,
        rolle                asc
        ) ;


alter table dok_produzent add constraint dok_produzentBeziehung primary key  (
        dokument,
        produzent,
        rolle ) ;


alter table dok_produzent add constraint dok_produzentBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;

alter table dok_produzent add constraint dok_produzentBeziehung2 foreign key  (
        produzent
        ) references pr_produzent (
        produzent ) ;

alter table dok_produzent add constraint dok_produzentBeziehung3 foreign key  (
        rolle
        ) references pr_rolle (
        rolle ) ;


create table dok_sprache (
        sprache              integer,
        dokument             integer
        ) ;


create unique  index dok_pk_sprache
        on dok_sprache (
        sprache              asc,
        dokument             asc
        ) ;


alter table dok_sprache add constraint dok_spracheBeziehung primary key  (
        sprache,
        dokument ) ;

alter table dok_sprache add constraint dok_spracheBeziehung1 foreign key  (
        sprache
        ) references dm_sprache (
        sprache ) ;

alter table dok_sprache add constraint dok_spracheBeziehung2 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_titel (
        dokument             integer,
        titelart             integer,
        sprache              integer,
        "text"                 varchar(250)
        ) ;

create unique  index dok_pk_titel
        on dok_titel (
        dokument             asc,
        titelart             asc,
        sprache              asc
        ) ;




alter table dok_titel add constraint dok_titelBeziehung primary key  (
        dokument,
        titelart,
        sprache ) ;


alter table dok_titel add constraint dok_titelBeziehung1 foreign key  (
        sprache
        ) references dm_sprache (
        sprache ) ;

alter table dok_titel add constraint dok_titelBeziehung2 foreign key  (
        titelart
        ) references dm_titelart (
        titelart ) ;

alter table dok_titel add constraint dok_titelBeziehung3 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_typ_a (
        dokument             integer
        ) ;


create unique  index dok_pk_typ_a
        on dok_typ_a (
        dokument             asc
        ) ;



alter table dok_typ_a add constraint dok_typ_aBeziehung primary key  (
        dokument ) ;



alter table dok_typ_a add constraint dok_typ_aBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_typ_b (
        dokument             integer,
        auflage              varchar(250) ,
        band                 varchar(250)
        ) ;

create unique  index dok_pk_typ_b
        on dok_typ_b (
        dokument             asc
        ) ;


alter table dok_typ_b add constraint dok_typ_bBeziehung primary key  (
        dokument ) ;


alter table dok_typ_b add constraint dok_typ_bBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_typ_c (
        dokument             integer,
        intervall            integer,
        erscheinungsart      integer,
        ausgabe              varchar(250)
        ) ;


create unique  index dok_pk_typ_c
        on dok_typ_c (
        dokument             asc
        ) ;


alter table dok_typ_c add constraint dok_typ_cBeziehung primary key  (
        dokument ) ;


alter table dok_typ_c add constraint dok_typ_cBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;

alter table dok_typ_c add constraint dok_typ_cBeziehung2 foreign key  (
        intervall
        ) references dm_intervall (
        intervall ) ;

alter table dok_typ_c add constraint dok_typ_cBeziehung3 foreign key  (
        erscheinungsart
        ) references dm_erscheinungsart (
        erscheinungsart ) ;


create table dok_typ_d (
        dokument             integer,
        fassung              varchar(250) ,
        lv_nr                varchar(250) ,
        semester             varchar(250)
        ) ;


create unique  index dok_pk_typ_d
        on dok_typ_d (
        dokument             asc
        ) ;



alter table dok_typ_d add constraint dok_typ_dBeziehung primary key  (
        dokument ) ;

alter table dok_typ_d add constraint dok_typ_dBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_typ_e (
        dokument             integer,
        sachgebiet           char(30),
        auflage              char(30)
        ) ;


create unique  index dok_pk_typ_e
        on dok_typ_e (
        dokument             asc
        ) ;



alter table dok_typ_e add constraint dok_typ_eBeziehung primary key  (
        dokument ) ;

alter table dok_typ_e add constraint dok_typ_eBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;


create table dok_verweis (
        ziel_dokument        integer,
        quell_dokument       integer,
        verweisart           integer,
        quellpos             varchar(250) ,
        zielpos              varchar(250)
        ) ;


create unique  index dok_pk_verweis
        on dok_verweis (
        ziel_dokument        asc,
        quell_dokument       asc,
        verweisart           asc
        ) ;



alter table dok_verweis add constraint dok_verweisBeziehung primary key  (
        ziel_dokument,
        quell_dokument,
        verweisart ) ;


alter table dok_verweis add constraint dok_verweisBeziehung1 foreign key  (
        verweisart
        ) references dm_verweisart (
        verweisart ) ;

alter table dok_verweis add constraint dok_verweisBeziehung2 foreign key  (
        quell_dokument
        ) references dok_dokument (
        dokument ) ;

alter table dok_verweis add constraint dok_verweisBeziehung3 foreign key  (
        ziel_dokument
        ) references dok_dokument (
        dokument ) ;


create table ko_tagung (
        tagung               counter,
        konferenz            integer,
        titel                varchar(250),
        ort                  varchar(250) ,
        tag                  smallint ,
        monat                smallint ,
        jahr                 smallint
        ) ;


create unique  index dok_pk_tagung
        on ko_tagung (
        tagung               asc
        ) ;


alter table ko_tagung add constraint ko_tagungBeziehung primary key  (
        tagung ) ;


alter table ko_tagung add constraint ko_tagungBeziehung1 foreign key  (
        konferenz
        ) references ko_konferenz (
        konferenz ) ;

create table ko_verantwortung (
        konferenz            integer,
        produzent            integer
        ) ;


create unique  index ko_pk_verantw
        on ko_verantwortung (
        konferenz            asc,
        produzent            asc
        ) ;


alter table ko_verantwortung add constraint ko_verantwortungBeziehung primary key  (
        konferenz,
        produzent ) ;


alter table ko_verantwortung add constraint ko_verantwortungBeziehung1 foreign key  (
        konferenz
        ) references ko_konferenz (
        konferenz ) ;

alter table ko_verantwortung add constraint ko_verantwortungBeziehung2 foreign key  (
        produzent
        ) references pr_produzent (
        produzent ) ;


create table dok_typ_f (
        dokument             integer,
        band                 varchar(250) ,
        tagung               integer
        ) ;


create unique  index dok_pk_typ_f
        on dok_typ_f (
        dokument             asc
        ) ;


alter table dok_typ_f add constraint dok_typ_fBeziehung primary key  (
        dokument ) ;


alter table dok_typ_f add constraint dok_typ_fBeziehung1 foreign key  (
        dokument
        ) references dok_dokument (
        dokument ) ;

alter table dok_typ_f add constraint dok_typ_fBeziehung2 foreign key  (
        tagung
        ) references ko_tagung (
        tagung ) ;


create table ko_durchfuehrung (
        tagung               integer,
        produzent            integer
        ) ;


create unique  index ko_pk_durchf
        on ko_durchfuehrung (
        tagung               asc,
        produzent            asc
        ) ;


alter table ko_durchfuehrung add constraint ko_durchfuehrungBeziehung primary key  (
        tagung,
        produzent ) ;

alter table ko_durchfuehrung add constraint ko_durchfuehrungBeziehung1 foreign key  (
        tagung
        ) references ko_tagung (
        tagung ) ;

alter table ko_durchfuehrung add constraint ko_durchfuehrungBeziehung2 foreign key  (
        produzent
        ) references pr_produzent (
        produzent ) ;

