|
|
Zeile 44: |
Zeile 44: |
| * Kirchen gehören zu Kirchspielen (''nicht Kirchspiele -> Kirche'') | | * Kirchen gehören zu Kirchspielen (''nicht Kirchspiele -> Kirche'') |
| | | |
− | == Relationale Darstellung ==
| |
− | Alle Ausprägungen der Quicktext-Elemente eines Eintrags (GOV-ID) werden intern als eine XML-Zeichenkette gespeichert. Diese kann man mit einem [[GOV/Webservice|Webservice]] auslesen und in relationale Tabelle umwandeln. Der Zugriff auf die XML-Zeichenkette kann mit XPath-Funktionen einer Programmiersprache erfolgen.
| |
− |
| |
− | === Vereinfachte Darstellung ===
| |
− | In der vereinfachten Darstellung sind Quellenangaben nicht enthalten.
| |
− | Je GOV-ID (Schlüssel) kann es viele Ausprägungen geben. Sie werden je GOV-ID im zweiten Schlüsselfeld lfd_id gezählt.
| |
− |
| |
− | Im Kommentar sind Beispiele für den Pfadzugriff und die Attribute angegeben. Details ergeben sich aus der WSDL-Definition. Beispiel für Datumsumrechnung siehe [[GOV/Webservice/Oracle#Name_mit_Datum|Name mit Datum]].
| |
− |
| |
− | <source lang="sql">
| |
− | create table gov_rel (
| |
− | govid varchar(40), -- GOV-ID (PK 1)
| |
− | lfd_id number (10), -- laufende Satznummer je GOV-ID (PK 2)
| |
− | -- [1] letzte Änderung ----- //out
| |
− | last_modification date, -- @last-modification z.B. "2007-08-11T19:37:21.000+02:00"
| |
− | dep_govid varchar(40), -- @deprecated = Eintrag wurde verschmolzen mit dep_govid
| |
− | -- position ------------ //out
| |
− | postyp varchar(1), -- ns2:position/@type
| |
− | lat number(18,14), -- ns2:position/@lat = Breite
| |
− | lon number(18,14), -- ns2:position/@lon = Länge
| |
− | height number(8), -- ns2:position/@height
| |
− | -- [2] external-reference -- //out/ns2:external-reference
| |
− | ext varchar(100), -- @value
| |
− | -- [3] url ----------------- //out/ns2:url
| |
− | url varchar(100), -- @value = URL der Webseite
| |
− | -- [4] name ---------------- //out/ns2:name
| |
− | name varchar(100), -- @value = Name (z.B. Ortsname)
| |
− | name_l varchar(3), -- @lang = Sprache
| |
− | name_z varchar(25), -- Datum von/bis - ist zu berechnen aus name_b* und name_e* und name_y
| |
− | name_b date, -- Datum von - zu berechnen aus name_b* ...
| |
− | name_e date, -- Datum bis - zu berechnen aus name_e* ...
| |
− | -- mögliche Felder vor der Berechnung könnten sein:
| |
− | --name_by varchar(4), -- begin year @begin-year
| |
− | --name_ey varchar(4), -- end year @end-year
| |
− | --name_y varchar(4), -- year @year
| |
− | --name_bc varchar(8), -- begin ns2:timespan/ns2:begin/@jd
| |
− | --name_bp varchar(1), -- precision ns2:timespan/ns2:begin/@precision
| |
− | --name_ec varchar(8), -- end ns2:timespan/ns2:end/@jd
| |
− | --name_ep varchar(1), -- precision ns2:timespan/ns2:end/@precision
| |
− | -- [5] type ---------------- //out/ns2:type
| |
− | type number (5), -- @value GOV-Objekttyp
| |
− | type_z varchar(25),
| |
− | type_b date,
| |
− | type_e date,
| |
− | type_c varchar(100), -- Typ-Beschreibung aus Beschreibungstabelle (s.u.)
| |
− | -- [6] population ---------- //out/ns2:population
| |
− | einw number (15), -- @value = Einwohnerzahl
| |
− | einw_z varchar(25),
| |
− | einw_b date,
| |
− | einw_e date,
| |
− | -- [7] postal-code --------- //out/ns2:postal-code
| |
− | plz varchar(20), -- @value = Postleitzahl
| |
− | plz_z varchar(25),
| |
− | plz_b date,
| |
− | plz_e date,
| |
− | -- [8] w-number ------------ //out/ns2:w-number
| |
− | wnr varchar(10), -- @value = W-Nummer
| |
− | -- [9] denomination -------- //out/ns2:denomination
| |
− | konf varchar(6), -- @value = Konfession (z.B. ev, rk, lu)
| |
− | konf_z varchar(25),
| |
− | konf_b date,
| |
− | konf_e date,
| |
− | -- [10] municipal-id ------- //out/ns2:municipal-id
| |
− | gkz varchar(10), -- @value = Gemeindekennziffer (=AGS)
| |
− | gkz_z varchar(25),
| |
− | gkz_b date,
| |
− | gkz_e date,
| |
− | -- [11] area --------------- //out/ns2:area
| |
− | area number (18,5), -- @value = Fläche (ersetzen . -> ,)
| |
− | area_z varchar(25),
| |
− | area_b date,
| |
− | area_e date,
| |
− | -- [12] households --------- //out/ns2:households
| |
− | hh number(8), -- @value = Haushalte
| |
− | hh_z varchar(25),
| |
− | hh_b date,
| |
− | hh_e date,
| |
− | -- [13] part-of ------------ //out/ns2:part-of
| |
− | part varchar(40), -- @value = gehört zu GOV-ID
| |
− | part_z varchar(25),
| |
− | part_b date,
| |
− | part_e date,
| |
− | -- [14] located-in --------- //out/ns2:located-in
| |
− | loc_govid varchar (40), -- @value = (z.B. Kirche) steht in GOV-ID
| |
− | -- [15] represents --------- //out/ns2:represents
| |
− | repre varchar(40), -- @value = (z.B. Pfarrei) repräsentiert GOV-ID
| |
− | repre_z varchar(25),
| |
− | repre_b date,
| |
− | repre_e date,
| |
− | -- [16] note --------------- //out/ns2:note
| |
− | txt varchar(1000) -- '.' = TEXT: ... :TEXT = Anmerkungen
| |
− | );
| |
− | </source>
| |
− |
| |
− | <source lang="sql">
| |
− | create unique index pk_gov_rel on gov_rel (govid, lfd_id);
| |
− | </source>
| |
− |
| |
− | <source lang="sql">
| |
− | alter table gov_rel add primary key (govid, lfd_id) using index pk_gov_rel;
| |
− | </source>
| |
− |
| |
− | Die Beschreibung der Objekttypen kann man per Webservice mit der WSDL-Operation getTypeDescription abholen und in einer Tabelle ablegen.
| |
− |
| |
− | <source lang="sql">
| |
− | -- Objekttypen-Tabelle
| |
− | CREATE TABLE gov_type (
| |
− | type_id number(3),
| |
− | type_c varchar(100)
| |
− | lang varchar(3),
| |
− | );
| |
− | </source>
| |
− |
| |
− | Beispiel für die zwei Einträge AARRSTJO72WT und object_262995.
| |
− |
| |
− | <table border="1">
| |
− | <tr>
| |
− | <tr><th>GOVID </th><th>LFD_ID</th><th>LAST_MODIFICATION </th><th>ID </th><th>POSTYP</th><th> LAT</th><th> LON</th><th>NAME </th><th>NAME_Z </th><th>NAME_B </th><th>TYPE</th><th>TYPE_Z </th><th>TYPE_B </th><th>TYPE_E </th><th>TYPE_C </th><th>EINW</th><th>EINW_Z </th><th>EINW_B </th><th>EINW_E </th><th>PLZ </th><th>PLZ_Z</th><th>PLZ_B </th><th>WNR </th><th>GKZ </th><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 1</td><td>05.12.2014 21:59:38</td><td>AARRSTJO72WT </td><td>p </td><td> 52,8219</td><td> 15,891</td><td>Tuczępy </td><td>1945 - </td><td>01.01.1945</td><td> 85</td><td> - 1935-03-31</td><td> </td><td>31.03.1935</td><td>Landgemeinde </td><td> 316</td><td>1885 </td><td>01.01.1885</td><td>31.12.1885</td><td> </td><td> </td><td> </td><td>52335</td><td> </td><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 2</td><td>05.12.2014 21:59:38</td><td> </td><td> </td><td> </td><td> </td><td>Aarhorst </td><td> </td><td> </td><td> 18</td><td>1935-04-01 - </td><td>01.04.1935</td><td> </td><td>Gemeinde </td><td> 209</td><td>1939 </td><td>01.01.1939</td><td>31.12.1939</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 3</td><td>05.12.2014 21:59:38</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> 248</td><td>1910-12-01 - 1910-12-01</td><td>01.12.1910</td><td>01.12.1910</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 4</td><td>05.12.2014 21:59:38</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> 313</td><td>1895-12-02 - 1895-12-02</td><td>02.12.1895</td><td>02.12.1895</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 5</td><td>05.12.2014 21:59:38</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> 215</td><td>1933 </td><td>01.01.1933</td><td>31.12.1933</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>AARRSTJO72WT </td><td> 6</td><td>05.12.2014 21:59:38</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> 240</td><td>1925 </td><td>01.01.1925</td><td>31.12.1925</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>object_262995</td><td> 1</td><td>24.11.2014 21:33:28</td><td>object_262995</td><td>c </td><td>52,7854486</td><td>13,9423364</td><td>Falkenberg</td><td>2001-12-31 -</td><td>31.12.2001</td><td> 18</td><td>2001-12-31 - </td><td>31.12.2001</td><td> </td><td>Gemeinde </td><td>2518</td><td>2001 </td><td>01.01.2001</td><td>31.12.2001</td><td>16259</td><td>2002 </td><td>01.01.2002</td><td> </td><td>12064125 </td><tr>
| |
− | <tr><td>object_262995</td><td> 2</td><td>24.11.2014 21:33:28</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>2479</td><td>2005 </td><td>01.01.2005</td><td>31.12.2005</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>object_262995</td><td> 3</td><td>24.11.2014 21:33:28</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>2481</td><td>2004 </td><td>01.01.2004</td><td>31.12.2004</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>object_262995</td><td> 4</td><td>24.11.2014 21:33:28</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>2447</td><td>2006 </td><td>01.01.2006</td><td>31.12.2006</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>object_262995</td><td> 5</td><td>24.11.2014 21:33:28</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>2486</td><td>2003 </td><td>01.01.2003</td><td>31.12.2003</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | <tr><td>object_262995</td><td> 6</td><td>24.11.2014 21:33:28</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>2510</td><td>2002 </td><td>01.01.2002</td><td>31.12.2002</td><td> </td><td> </td><td> </td><td> </td><td> </td><tr>
| |
− | </table>
| |
− |
| |
− | === Exakte Darstellung ===
| |
− | Die exakte Darstellung müsste den verschachtelten Typ-Deklarationen in der WSDL-Datei der Webservices entsprechen. Man könnte erzeugen:
| |
− | * eine führende Tabelle mit den eindeutigen GOV-ID Eigenschaften,
| |
− | * eine oder mehrere Tabellen für die mehrfach auftretenden Quicktext-Eigenschaften (oder je Eigenschaft eine eigene Tabelle),
| |
− | * eine Tabelle für die Quellen-Referenzen (Verwendung der Quellen mit Notizen, z.B. Seitenzahlen) und
| |
− | * eine Tabelle für die GOV-IDs, die Quellen sind.
| |
− |
| |
− | Hier ein grober Entwurf für eine mögliche Tabellenstruktur.
| |
− |
| |
− | <source lang="sql">
| |
− | -- GOV-ID-Tabelle
| |
− | create table govid (
| |
− | govid varchar(40), -- GOV-ID (PK)
| |
− | last_modification date, -- @last-modification z.B. "2007-08-11T19:37:21.000+02:00"
| |
− | dep_govid varchar(40), -- @deprecated = Eintrag wurde verschmolzen mit dep_govid
| |
− | postyp varchar(1), -- ns2:position/@type
| |
− | lat number(18,14), -- ns2:position/@lat = Breite
| |
− | lon number(18,14), -- ns2:position/@lon = Länge
| |
− | height number(8) -- ns2:position/@height
| |
− | );
| |
− | CREATE UNIQUE INDEX pk_govid ON gov_rel (govid, lfd_id);
| |
− | ALTER TABLE govid ADD PRIMARY KEY (govid) USING INDEX pk_govid;
| |
− | </source>
| |
− |
| |
− |
| |
− | <source lang="sql">
| |
− | -- Eigenschaften (Property)-Tabelle
| |
− | create table property(
| |
− | property_id number(10), -- laufende Nummer (PK)
| |
− | govid varchar(40), -- GOV-ID (Indexspalte 1)
| |
− | property varchar(10), -- Property (Eigenschaft): 'name', 'type', 'population', 'postal-code'... (Indexspalte 1)
| |
− | lang varchar (3), -- language @lang
| |
− | value varchar200), -- Wert @value
| |
− | begin_year number (4), -- begin year @begin-year
| |
− | end_year number (4), -- end year @end-year
| |
− | year number (4), -- year @year
| |
− | begin date, -- begin ns2:<property>/ns2:begin/@jd
| |
− | begin_p varchar2 (1), -- precision ns2:<property>/ns2:begin/@precision
| |
− | end date, -- end ns2:<property>/ns2:end/@jd
| |
− | end_p varchar2 (1) -- precision ns2:<property>/ns2:end/@precision
| |
− | begin_d date, -- Datum von (für Abfragen) - zu berechnen aus b* ...
| |
− | end_d date, -- Datum bis (für Abfragen) - zu berechnen aus e* ...
| |
− | source_ref_id number (10) -- Verweis auf Quellen-Referenz
| |
− | );
| |
− | CREATE UNIQUE INDEX pk_property ON property (property_id, govid);
| |
− | ALTER TABLE property ADD PRIMARY KEY (property_id, govid) USING INDEX pk_property;
| |
− | -- Index zur Suche
| |
− | CREATE INDEX fk1_property ON property (govid, property);
| |
− | -- Sequenz für Primärschlüssel
| |
− | create sequence seq_property
| |
− | start with 1
| |
− | increment by 1
| |
− | order;
| |
− | </source>
| |
− |
| |
− |
| |
− | <source lang="sql">
| |
− | -- Quellen-Referenz mit Zähler, govid zu source_id und Anmerkungen
| |
− | create table source_ref(
| |
− | source_ref_id number(10), -- laufende Nummer (PK)
| |
− | note varchar(1000), -- Text
| |
− | source_govid -- GOV-ID der Source
| |
− | );
| |
− | -- Sequenz für Primärschlüssel
| |
− | create sequence seq_source_ref
| |
− | start with 1
| |
− | increment by 1
| |
− | order;
| |
− | </source>
| |
− |
| |
− |
| |
− | <source lang="sql">
| |
− | -- Quellen (Sourcen)
| |
− | create table source(
| |
− | source_govid -- GOV-ID der Source (PK)
| |
− | );
| |
− | --------------------------------------
| |
− | -- Eigenschaften einer Quelle (Source)
| |
− | --------------------------------------
| |
− | -- external-reference
| |
− | -- url
| |
− | -- located-in
| |
− | -- note
| |
− | --- nur Quellen-Eigenschaften
| |
− | -- title
| |
− | -- author
| |
− | -- subtitle
| |
− | -- isbn
| |
− | -- batchnumber
| |
− | -- describes
| |
− | </source>
| |
| | | |
| [[Kategorie:GOV-Intern]] | | [[Kategorie:GOV-Intern]] |
GOV-Hauptseite > GOV/Projekt > GOV Datenmodell
Projekt GOV
|
hier: GOV/Datenmodell
|
GOV-Datenbankabfrage:
Infoseiten zum Projekt:
Datenerfassung:
Kontakt:
Kategorien:
|
Das zentrale Element mit Modell ist das GOV-Objekt. Ein GOV-Objekt hat
- Eigenschaften
- Beziehungen zu anderen GOV-Objekten
Eigenschaften
Ein GOV-Objekt hat eine Menge von Eigenschaften, z.B. Namen
Objekt O1 hat (zu einer gewissen Zeit) die Eigenschaft E1 (Quellenangabe),
Liste von Eigenschaften
Beziehungen
Beziehungen zwischen zwei GOV-Objekten haben die Form
Objekt O1 steht (zu einer gewissen Zeit) in Beziehung zu Objekt O2 (Quellenangabe),
Liste von Beziehungen
Zeitangabe
Sowohl Eigenschaften als auch Beziehungen können mit Zeitangaben versehen werden. Es können angegeben werden
Objekt01 steht JJJJ-MM-TT in Beziehung zu Objekt02 (sagt Quelle),
Objekt01 steht ab JJJJ-MM-TT bis JJJJ-MM-TT in Beziehung zu Objekt02 (sagt Quelle),
Zeiträume können auch teilweise (nur ab oder nur bis) angegeben werden.
Weitere Informationen zu Zeitangaben im GOV stehen hier.
Quellenangaben
Sowohl Eigenschaften als auch Beziehungen können mit Quellenangaben versehen werden.
Die Quelle, zB. ein Buch, wird im GOV als eigenes Objekt hinterlegt.
Nähere Angaben - zB. bei Büchern Seitenangaben oder bei Periodika Jahrgang, Nr. der Ausgabe und Seite - werden in Klammern gesetzt.
... sagt Quelle (Nähere Angaben),
Bei mehreren Quellenangaben - zB bei Zeiträumen - werden die Quellenangaben hintereinander gesetzt.
... sagt Quelle (Nähere Angaben) sagt Quelle (Nähere Angaben),
Das ganze als Graph
Man kann sich die Daten auch als gerichteten, zyklenfreien Graph vorstellen, in dem die GOV-Objekte Knoten und die Beziehungen Kanten zwischen diesen Knoten sind. Eine Kante kann mit einer Zeitangabe und Quellenangaben versehen werden.
Wichtig: Der Graph darf keine Zyklen haben, da sonst die Suche nach den Kind-Elementen nicht aufhört.
- Kirchen stehen in Orten
- Orte gehören zu Kirchspielen
- Kirchen gehören zu Kirchspielen (nicht Kirchspiele -> Kirche)