Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 45

Thema: Datenbankprojekt

  1. #1
    andetsa ist offline Neuer Benutzer
    Registriert seit
    21.02.2010
    Beiträge
    18

    Standard Datenbankprojekt

    Hallo zusammen!

    Ich bin gerade dabei ein Datenbankprojekt durchzuführen. Datenbankdesign steht soweit, der Import aus xml ist ebenfalls am laufen. Allerdings weiß ich nicht wie ich die Relationen zwischen den Tabellen hinbekomme, sprich wie ich die Tabellen untereinander verknüpft bekomme.

    Hat vielleicht jemand Lust mir dabei zu helfen?

    Datenbankdesign und SQL-Tabellen stelle ich dann gerne bereit.

    Vielen dank schonmal!

    Gruß

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von andetsa Beitrag anzeigen
    Hallo zusammen!

    Ich bin gerade dabei ein Datenbankprojekt durchzuführen. Datenbankdesign steht soweit, der Import aus xml ist ebenfalls am laufen. Allerdings weiß ich nicht wie ich die Relationen zwischen den Tabellen hinbekomme, sprich wie ich die Tabellen untereinander verknüpft bekomme.
    Begriffe wie Primary Key und Foreign Key sind aber schon bekannt, oder?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von andetsa Beitrag anzeigen
    Hat vielleicht jemand Lust mir dabei zu helfen?
    Schon. Wohin soll ich mein Angebot schicken?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Schon. Wohin soll ich mein Angebot schicken?
    Du kannst aus den mageren Angaben ein verbindliches Angebot erstellen? Respekt ;-)

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Du kannst aus den mageren Angaben ein verbindliches Angebot erstellen? Respekt ;-)
    Ja klar. Meine Stunde kostet Summe x. Gut ist.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Ja klar. Meine Stunde kostet Summe x. Gut ist.
    Ja, und wieviel Stunden siehst Du dort Bedarf?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Ja, und wieviel Stunden siehst Du dort Bedarf?
    Wieso muss ich das in dem Fall vorab wissen?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Wieso muss ich das in dem Fall vorab wissen?
    Stimmt auch wieder ;-)

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    andetsa ist offline Neuer Benutzer
    Registriert seit
    21.02.2010
    Beiträge
    18

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Begriffe wie Primary Key und Foreign Key sind aber schon bekannt, oder?

    Andreas
    Hallo Andreas!

    Vielen Dank schonmal für deine Antwort! Ja ich habe mich schon näher mit SQL und PostgreSQL beschäftigt und auch bereits die Datenbank erstellt. Ich denke die Beziehungen stimmen soweit auch (Das ERM findet man im Anhang!) Doch jetzt stehe ich vor der Aufgabe die Datenbank mit Daten zu füllen. Die INSERT Statements sind dabei nicht das Problem, wohl aber wie ich die Relationen zwischen den Tabellen beim Einfügen der Daten per SQL Statements herstelle. Ich habe 6 "normale" Tabellen und 5 Relationstabellen.

    Wenn du dir die Datenbank selbst anlegen möchtest hier der komplette SQL-Dump ohne die OWNED BY statements:

    Code:
    CREATE TABLE artikel (
        artikel_id integer DEFAULT nextval('public.artikel_artikel_id_seq'::text) NOT NULL,
        dok_nr integer,
        titel character varying(1000),
        inhalt text,
        anfangsseite integer,
        endseite integer,
        erfassungsdatum character varying(12),
        korrekturdatum character varying(12),
        fk_ausgabe_id integer
    );
    
    CREATE SEQUENCE artikel_artikel_id_seq
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE artikel_artikel_id_seq OWNED BY artikel.artikel_id;
    
    SELECT pg_catalog.setval('artikel_artikel_id_seq', 1, true);
    
    CREATE TABLE ausgabe (
        ausgabe_id integer DEFAULT nextval('public.ausgabe_ausgabe_id_seq'::text) NOT NULL,
        heft_nr integer,
        jahr integer,
        jahrgang integer,
        fk_zeitschrift_id integer
    );
    
    CREATE SEQUENCE ausgabe_ausgabe_id_seq
        START WITH 1
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE ausgabe_ausgabe_id_seq OWNED BY ausgabe.ausgabe_id;
    
    SELECT pg_catalog.setval('ausgabe_ausgabe_id_seq', 1, false);
    
    CREATE TABLE beteiligte_koerperschaften (
        fk_artikel_id integer NOT NULL,
        fk_koerperschaft_id integer NOT NULL
    );
    
    CREATE TABLE beteiligte_personen (
        fk_person_id integer NOT NULL,
        fk_artikel_id integer NOT NULL
    );
    
    CREATE TABLE keywords (
        keywords_id integer DEFAULT nextval('public.keywords_keywords_id_seq'::text) NOT NULL,
        keywords character varying(100)
    );
    
    CREATE SEQUENCE keywords_keywords_id_seq
        START WITH 1
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE keywords_keywords_id_seq OWNED BY keywords.keywords_id;
    
    SELECT pg_catalog.setval('keywords_keywords_id_seq', 1, false);
    
    CREATE TABLE koerperschaft (
        koerperschaft_id integer DEFAULT nextval('public.koerperschaft_koerperschaft_id_seq'::text) NOT NULL,
        nachname character varying(1000)
    );
    
    CREATE SEQUENCE koerperschaft_koerperschaft_id_seq
        START WITH 1
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE koerperschaft_koerperschaft_id_seq OWNED BY koerperschaft.koerperschaft_id;
    
    SELECT pg_catalog.setval('koerperschaft_koerperschaft_id_seq', 1, false);
    
    CREATE TABLE person (
        person_id integer DEFAULT nextval('public.person_person_id_seq'::text) NOT NULL,
        nachname character varying(200),
        vorname character varying(200)
    );
    
    CREATE SEQUENCE person_person_id_seq
        START WITH 1
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE person_person_id_seq OWNED BY person.person_id;
    
    SELECT pg_catalog.setval('person_person_id_seq', 1, false);
    
    CREATE TABLE rel_keywords_artikel (
        fk_artikel_id integer NOT NULL,
        fk_keywords_id integer NOT NULL
    );
    
    CREATE TABLE rel_koerperschaft_artikel (
        fk_artikel_id integer NOT NULL,
        fk_koerperschaft_id integer NOT NULL
    );
    
    CREATE TABLE rel_person_artikel (
        fk_artikel_id integer NOT NULL,
        fk_person_id integer NOT NULL
    );
    
    CREATE TABLE zeitschrift (
        zeitschrift_id integer DEFAULT nextval('public.zeitschrift_zeitschrift_id_seq'::text) NOT NULL,
        name character varying(1000),
        kurzname character varying(200),
        issn character varying(9)
    );
    
    CREATE SEQUENCE zeitschrift_zeitschrift_id_seq
        START WITH 1
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
    
    ALTER SEQUENCE zeitschrift_zeitschrift_id_seq OWNED BY zeitschrift.zeitschrift_id;
    
    SELECT pg_catalog.setval('zeitschrift_zeitschrift_id_seq', 1, false);
    
    COPY artikel (artikel_id, dok_nr, titel, inhalt, anfangsseite, endseite, erfassungsdatum, korrekturdatum, fk_ausgabe_id) FROM stdin;
    \.
    
    COPY ausgabe (ausgabe_id, heft_nr, jahr, jahrgang, fk_zeitschrift_id) FROM stdin;
    \.
    
    COPY beteiligte_koerperschaften (fk_artikel_id, fk_koerperschaft_id) FROM stdin;
    \.
    
    COPY beteiligte_personen (fk_person_id, fk_artikel_id) FROM stdin;
    \.
    
    COPY keywords (keywords_id, keywords) FROM stdin;
    \.
    
    COPY koerperschaft (koerperschaft_id, nachname) FROM stdin;
    \.
    
    COPY person (person_id, nachname, vorname) FROM stdin;
    \.
    
    COPY rel_keywords_artikel (fk_artikel_id, fk_keywords_id) FROM stdin;
    \.
    
    COPY rel_koerperschaft_artikel (fk_artikel_id, fk_koerperschaft_id) FROM stdin;
    \.
    
    COPY rel_person_artikel (fk_artikel_id, fk_person_id) FROM stdin;
    \.
    
    COPY zeitschrift (zeitschrift_id, name, kurzname, issn) FROM stdin;
    \.
    
    ALTER TABLE ONLY artikel
        ADD CONSTRAINT pk_artikel PRIMARY KEY (artikel_id);
    
    ALTER TABLE ONLY ausgabe
        ADD CONSTRAINT pk_ausgabe PRIMARY KEY (ausgabe_id);
    
    ALTER TABLE ONLY beteiligte_koerperschaften
        ADD CONSTRAINT pk_beteiligte_koerperschaften PRIMARY KEY (fk_artikel_id, fk_koerperschaft_id);
    
    ALTER TABLE ONLY beteiligte_personen
        ADD CONSTRAINT pk_beteiligte_personen PRIMARY KEY (fk_person_id, fk_artikel_id);
    
    ALTER TABLE ONLY keywords
        ADD CONSTRAINT pk_keywords PRIMARY KEY (keywords_id);
    
    ALTER TABLE ONLY koerperschaft
        ADD CONSTRAINT pk_koerperschaft PRIMARY KEY (koerperschaft_id);
    
    ALTER TABLE ONLY person
        ADD CONSTRAINT pk_person PRIMARY KEY (person_id);
    
    ALTER TABLE ONLY rel_keywords_artikel
        ADD CONSTRAINT pk_rel_keywords_artikel PRIMARY KEY (fk_artikel_id, fk_keywords_id);
    
    ALTER TABLE ONLY rel_koerperschaft_artikel
        ADD CONSTRAINT pk_rel_koerperschaft_artikel PRIMARY KEY (fk_artikel_id, fk_koerperschaft_id);
    
    ALTER TABLE ONLY rel_person_artikel
        ADD CONSTRAINT pk_rel_person_artikel PRIMARY KEY (fk_artikel_id, fk_person_id);
    
    ALTER TABLE ONLY zeitschrift
        ADD CONSTRAINT pk_zeitschrift PRIMARY KEY (zeitschrift_id);
    
    ALTER TABLE ONLY beteiligte_koerperschaften
        ADD CONSTRAINT fk_artikel_id FOREIGN KEY (fk_artikel_id) REFERENCES artikel(artikel_id);
    
    ALTER TABLE ONLY beteiligte_personen
        ADD CONSTRAINT fk_artikel_id FOREIGN KEY (fk_artikel_id) REFERENCES artikel(artikel_id);
    
    ALTER TABLE ONLY rel_keywords_artikel
        ADD CONSTRAINT fk_artikel_id FOREIGN KEY (fk_artikel_id) REFERENCES artikel(artikel_id);
    
    ALTER TABLE ONLY rel_koerperschaft_artikel
        ADD CONSTRAINT fk_artikel_id FOREIGN KEY (fk_artikel_id) REFERENCES artikel(artikel_id);
    
    ALTER TABLE ONLY rel_person_artikel
        ADD CONSTRAINT fk_artikel_id FOREIGN KEY (fk_artikel_id) REFERENCES artikel(artikel_id);
    
    ALTER TABLE ONLY artikel
        ADD CONSTRAINT fk_ausgabe FOREIGN KEY (fk_ausgabe_id) REFERENCES ausgabe(ausgabe_id);
    
    ALTER TABLE ONLY rel_keywords_artikel
        ADD CONSTRAINT fk_keywords_id FOREIGN KEY (fk_keywords_id) REFERENCES keywords(keywords_id);
    
    ALTER TABLE ONLY beteiligte_koerperschaften
        ADD CONSTRAINT fk_koerperschaft_id FOREIGN KEY (fk_koerperschaft_id) REFERENCES koerperschaft(koerperschaft_id);
    
    ALTER TABLE ONLY rel_koerperschaft_artikel
        ADD CONSTRAINT fk_koerperschaft_id FOREIGN KEY (fk_koerperschaft_id) REFERENCES koerperschaft(koerperschaft_id);
    
    ALTER TABLE ONLY beteiligte_personen
        ADD CONSTRAINT fk_person_id FOREIGN KEY (fk_person_id) REFERENCES person(person_id);
    
    ALTER TABLE ONLY rel_person_artikel
        ADD CONSTRAINT fk_person_id FOREIGN KEY (fk_person_id) REFERENCES person(person_id);
    
    ALTER TABLE ONLY ausgabe
        ADD CONSTRAINT fk_zeitschrift_id FOREIGN KEY (fk_zeitschrift_id) REFERENCES zeitschrift(zeitschrift_id);
    Die Tabellen werden nun mit Daten gefüllt die aus einer XML-Datei stammen, die folgendes Aussehen hat -> siehe Anhang!

    Was mich nun interessiert ist wie die Herangehensweise speziell in meinem Fall hier oder generell bei dem Einfügen und Verknüpfen von Daten aussieht. Es gibt ja sicher einen Ansatz wie man dem Problem Herr wird. Damit wende ich mich mal an euch als Experten, da ich sowas wie gesagt noch nie gemacht habe

    Schon mal vielen Dank für eure Hilfe!

    Gruß
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    Geändert von andetsa (24.02.2010 um 11:46 Uhr)

  10. #10
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von andetsa Beitrag anzeigen

    Was mich nun interessiert ist wie die Herangehensweise speziell in meinem Fall hier oder generell bei dem Einfügen und Verknüpfen von Daten aussieht. Es gibt ja sicher einen Ansatz wie man dem Problem Herr wird. Damit wende ich mich mal an euch als Experten, da ich sowas wie gesagt noch nie gemacht habe
    Ich versteh noch immer nicht genau, was Dein Problem ist. Du hast eine Reihe von Tabellen, die untereinander via FK-Beziehungen verknüpft sind. Das sind diese Zeilen, hier mal ein Beispiel:

    Code:
    ALTER TABLE ONLY rel_person_artikel
        ADD CONSTRAINT fk_person_id FOREIGN KEY (fk_person_id) REFERENCES person(person_id);
    Damit kannst Du nur Werte für fk_person_id in der Tabelle rel_person_artikel eintragen, für die vorher in der Tabelle person ein Eintrag mit der gleichen person_id gemacht wurde.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum