Realisierung einer DB in Combi mit Java

Javandroid

Neuer Benutzer
Beiträge
1
Hallo zusammen,

das mit den Datenbanke ist doch nicht so einfach wie so manch einer denkt :).

Ich bitte euch um Rat, bin neu auf diesem Gebiet.

Mein Vorhaben:

Ich möchte mit Java ein Programm schreiben aus dem Ich - zu jedem Kunde- folgende Daten bzw. 3 MySQL DB's erhalten werde:

DATABASE Customers: (soll letztlich alle Kunden beinhalten)
  1. MySQL DB 1:
    • LoginTable
      • ID, LoginName, Passwort (Für den Login)
      • .....
  1. MySQL DB 2:
    • KundeTable
      • ID, KundenNummer, AnmeldeDatum, Anschrift
      • .....
  2. MySQL DB 3:
    • WarenkorbTable
      • ID, Produkt 1, Produkt 2
      • .....
Ein Kunde und nur der Kunde kann die Daten editieren, 2 weitere Personen können die Daten einsehen, jedoch nur lesend.

Meine Fragen:
  • Ist so etwas möglich und ein guter Weg die DB's in eine "globale" DB zuschreiben?
  • Muss jeder Kunde in allen drei DB's die gleiche ID bekommen, damit Ich mir später alle Infos zum jeweiligen Kunden zusammen fügen kann?
  • Wie kann man es realisieren, dass bei Änderung einer Eingabe bspw. der Anschrift alle Auslesenden über die Änderung informiert werden. Wie wird so etwas angetriggert, setzt man ein Flag?
  • Wie kann Ich in einer Datenbank oder in einem Java-Code festlegen wer die Daten von welchem Kunden auslesen darf (es sind ja alle Kunden in einer DB)?
Ich hoffe man kann meine Fragen verstehen und hoffe jemand kann mir helfen bzw. Tipps zum Vorgehen geben.

Vielen Dank vorab.
 
Werbung:
Ich möchte mit Java ein Programm schreiben aus dem Ich - zu jedem Kunde- folgende Daten bzw. 3 MySQL DB's erhalten werde:

DATABASE Customers: (soll letztlich alle Kunden beinhalten)
  1. MySQL DB 1:
    • LoginTable
      • ID, LoginName, Passwort (Für den Login)
      • .....
  1. MySQL DB 2:
    • KundeTable
      • ID, KundenNummer, AnmeldeDatum, Anschrift
      • .....
  2. MySQL DB 3:
    • WarenkorbTable
      • ID, Produkt 1, Produkt 2
      • .....
Ein Kunde und nur der Kunde kann die Daten editieren, 2 weitere Personen können die Daten einsehen, jedoch nur lesend.

Meine Fragen:
  • Ist so etwas möglich und ein guter Weg die DB's in eine "globale" DB zuschreiben?
  • Muss jeder Kunde in allen drei DB's die gleiche ID bekommen, damit Ich mir später alle Infos zum jeweiligen Kunden zusammen fügen kann?
  • Wie kann man es realisieren, dass bei Änderung einer Eingabe bspw. der Anschrift alle Auslesenden über die Änderung informiert werden. Wie wird so etwas angetriggert, setzt man ein Flag?
  • Wie kann Ich in einer Datenbank oder in einem Java-Code festlegen wer die Daten von welchem Kunden auslesen darf (es sind ja alle Kunden in einer DB)?
Ich hoffe man kann meine Fragen verstehen und hoffe jemand kann mir helfen bzw. Tipps zum Vorgehen geben.

Vielen Dank vorab.

Damit Du auch etwas Anwort bekommst:

  • 3 Datenbanken oder 3 Tabellen? Das sind unterschiedliche Dinge
  • eine Kunden-ID sollte in allen Tabellen gleich und eindeutig auf die Kundenstammtabelle referenzieren. Also so mit Foreign Key und so.
  • Deine 'Sicherheitsforderungen' lassen sich ganz easy über Stored Procs realisieren und einem strengen Rechtesystem. 'Security Definer' wäre hier das Stichwort - bei PostgreSQL. Zalando macht exakt sowas auch, btw.
  • Notification bei Änderung: gibt es viele Wege, Listen/Notify wäre wieder ein Stichwort - bei PostgreSQL.
  • letzte Deiner Fragen: wie schon gesagt, Kapselung der Zugriffe NUR und AUSSCHLIEßLICH über Funktionen, die prüfen, ob der angeforderte Datensatz dem anforderndem User gehört.
  • Dein Warenkorb ist schon mal für die Tonne. Wie viele Artikel darf man kaufen? 2, 3, 42 oder 4711? Hint: je Artikel eine Spalte ist schlicht FAIL. Stichwort: Normalisierung. Diesmal nicht nur für PostgreSQL

Btw.: Java. Klingt nach JSON. Kann PG native mit umgehen. Mal so als Hinweis.
 
Zurück
Oben