AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FK mit CASCADE: Update unmöglich
Thema durchsuchen
Ansicht
Themen-Optionen

FK mit CASCADE: Update unmöglich

Ein Thema von RSE · begonnen am 3. Dez 2012 · letzter Beitrag vom 4. Dez 2012
 
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: FK mit CASCADE: Update unmöglich

  Alt 3. Dez 2012, 15:32
Das Feld INSTID in der Tabelle PROJMA ist redundant bzw. überbestimmt.

Jeder mit Mitarbeiter gehört zu einem best. Institut.
Primärschlüssel ist das Feld MAID.
INSTID gehört nicht zum Primärschlüssel!!
SQL-Code:
/* Liste aller Mitarbeiter, Zuordnung zur Institution */
CREATE TABLE MA (
  MAID INTEGER,
  INSTID INTEGER REFERENCES INST ON UPDATE CASCADE,
  NAME VARCHAR(100), /* Nutzdaten (Name, Anrede, Telefon, EMail, Gebdatum, Gehaltsstufe,...) */
  PRIMARY KEY (MAID)
);
Jedes Projekt gehört zu einem best. Institut. (sozusagen das Heimatinstitut des Projekts)
Primärschlüssel muss eine Projekt-ID sein!
SQL-Code:
/* Projektspezifische Auswahl der Institutionen incl. Adressdaten */
CREATE TABLE PROJINST (
  PROJID INTEGER,
  INSTID INTEGER REFERENCES INST ON UPDATE CASCADE, /* nur Institutionen aus INST */
  DESCRIPTION VARCHAR(100), /* Nutzdaten (mehrere Felder), nicht Adresse des Institut, sondern Beschreibung des Projekts */
  PRIMARY KEY (PROJID)
);
Mitarbeiter werden wohl dynamisch den Projekten zugewiesen.
Dabei kann ein Mitarbeiter durchaus Mitglied mehrerer Projekte sein.
Die INSTID hat in dieser Tabelle überhaupt nichts verloren.
Es könnte auch sein, dass ein Mitarbeiter einem Projekt eines anderen Instituts zugeteilt wird.
Man sollte das auf jeden Fall nicht durch die DB-Struktur verhindern.
SQL-Code:
/* Zuordnung der Mitarbeiter zu den Projekten */
CREATE TABLE PROJMA (
  MAID INTEGER, /* Primärschlüssel Feld 1 */
  PROJID INTEGER, /* Primärschlüssel Feld 2 */
  FOREIGN KEY ( MAID) REFERENCES MA (MAID) ON UPDATE CASCADE,
  FOREIGN KEY ( PROJID) REFERENCES PROJINST (PROJID) ON UPDATE CASCADE,

  STATUS INTEGER, /* z.B. 0=temporärer Projekt-MA, 1=Projektleiter,2=Projektberater*/
  PRIMARY KEY (INSTID, MAID)
);
Andreas
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz