Zum Inhalt springen

Problem mit dem Designen der Datenbank


Maiki1983VF

Empfohlene Beiträge

Hallo zusammen,

Ich soll auf Daten aus zwei verschiedenen Tabellen referenzieren. Eine dieser beiden Tabellen ist statisch (also darf nicht editiert werden), die andere Tabelle enthält selbst erstellte Daten und darf editiert werden.

Die statische Tabelle hat eine 11-stellige Zeichenfolge als PrimaryKey, die editierbare hat einen Number-Wert ( in MySQL INT(9) ).

Jetzt stellt sich für mich die Frage, wie ich bereits in der Datenbank die referenzielle Integrität sicherstellen kann, dass auch der richtige Datensatz ausgelesen wird.

Ich hoffe, jmd. kann mir einen Denkanstoß geben.

Tabelle 1:

-------------

FK Person: INT(11)

Person_1: [statisch]

------------

PK Id : VARCHAR(11)

Name : VARCHAR(50)

Person_2: [editierbar]

------------

PK Id: INT(11)

Name: VARCHAR(50)

Hintergrundinformationen:

Ich bekomme einen festen Datenbestand mit Daten (in diesem Fall Banken: ca. 85.000 Einträge) vorgegeben. Diese sind mit einem 11-stelligen Buchstaben-Code (--> VARCHAR) als PrimaryKey versehen. Diese Daten sollen für den späteren Anwender zwar zu sehen, aber nicht editierbar sein. Es sollen auch keine weiteren Einträge in diese Tabelle gemacht werden können, weil es sich hier um offiziell herausgegebene Daten handelt.

Die späteren Anwender haben aber angefordert, bei Bedarf weitere Einträge zu dieser Liste hinzuzufügen, da nicht alle Geschäftspartner in der offiziellen Liste mit der eigenen Firmierung ( evtl. durch eine andere Bank vertreten ) auftauchen.

Somit habe ich zwei Tabellen ( eine editierbare und eine feste ). Aber in einer anderen Tabelle will ich auf einen Eintrag aus der einen oder anderen Tabelle referenzieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich schätze das du mysql verwendest?


-- statische Tabelle

CREATE TABLE P1 (

  PKID VARCHAR(11) NOT NULL AUTO_INCREMENT,

  name VARCHAR(50) NULL,

  PRIMARY KEY(PKID)

);



-- editierbare Tabelle

CREATE TABLE P2 (

  PKID2 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  name VARCHAR(50) NULL,

  PKID VARCHAR(11) NULL,

  PRIMARY KEY(PKID2)

);


Die Integrität würde ich über einen Trigger auf P2 sicherstellen, "ON INSERT OR UPDATE" die PKID in P2 optional setzen ( falls es sich um eine Referenz handelt, falls es ein Komplett neuer Eintrag ist eben nicht setzen) Alternativlösung: du erlaubst insert in diese Tabelle grenzt aber die neuen Einträge über ein extra FLAG ab

CREATE TABLE P1 (

  PKID VARCHAR(11) NOT NULL AUTO_INCREMENT,

  name VARCHAR(50) NULL,

  typ ENUM ('S','V') NULL,  -- S - Statisch, V - Variabel

  PRIMARY KEY(PKID)

);

Und erlaubst/verbietest den Edit Zugriff basierend auf dem FLAG. Das auseineandersortieren der "offiziellen" Einträge geht ja dann auch FALG-basiert mit einem einfachen SELECT.

Mir gefällt die Variante 2 besser, falls sihc das it deinen Anforderungen vereinbaren läßt

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt neue einträge in der variablen Tabelle die nicht mit den Einträgen der statischen Tabelle gelinkt sind, ein Fk ist ja logischerweise NOT NULL, also kann man diese "Optionale" Verknüpfung damit nicht darstellen, weil nur ein Teil der Records in der variablen Tabelle mit denen aus der Statischen über den Fk verbunden ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also entweder is hab das jetzt falsch verstanden...



SELECT * FROM PERSON_1

LEFT JOIN PERSON_2 ON CAST(PERSON_1.`PK Id` as UNSIGNED) = PERSON_2.`PK Id` 


Mit dem Umwandeln String in Int bin ich mir nich sicher... muss da jedesmal wieder nachsehen ;) Und hab das jetzt auch nicht testen können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...