Brauche Tipps für Datenbankdesign

beta20

Top Contributor
Hallo zuzammen,

ich habe eine Tabelle "Activity", in der ich alle Aktivitäten speichere.
Nun ist das Problem aber, dass ich 80 FOREIGN_KEY zu allen Entities habe.

Ich habe z.B. die Entity:
- Reifen
- Speiche
- Sattel
-...

All diese Entities haben ebenfall in der Tabelle Activity einen Fremdschlüssel.

Nun ist aber mein Problem, dass mit JPA / Hibernate für jeden FK einen Index generiert und ich hier schon Mal eine Fehlermeldung bekomme.
21:30:47,298 INFO [stdout] (EJB default - 6) Hibernate:
21:30:47,298 INFO [stdout] (EJB default - 6)
21:30:47,298 INFO [stdout] (EJB default - 6) alter table activities
21:30:47,298 INFO [stdout] (EJB default - 6) add constraint FKs9qx51p69n9f7dbrmxwutfg8w
21:30:47,298 INFO [stdout] (EJB default - 6) foreign key (offer_fk)
21:30:47,298 INFO [stdout] (EJB default - 6) references offer (offer_id)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Too many keys specified; max 64 keys allowed

Klicke in dieses Feld, um es in vollständiger Größe anzuzeigen.
Da ich nicht immer alle Entities holen möchte, habe ich den FK jeweils so deklariert:
@ManyToOne(optional = true, fetch = FetchType.LAZY)

Habe ich nun aber eine Query, in welcher in alles mit "LEFT JOIN FETCH" hole, bekomme ich eine Fehlermeldung, dass ich zu viele Columns habe.

Meine Frage:
Ist die Idee überhaupt gut, dass ich so viele FK´s habe?
Wie könnte man es anders lösen?

Ich habe eine Tabelle, in der alle Aktivitäten aufgelistet werden.
Demnach brauche hier alle FK´s auch...

Danke für jede Hilfe
 

beta20

Top Contributor
Danke für den Link.
Hast Du einen Lösungsansatz, wie man sonst von einer Entity 80 andere Entities connecten kann?

Ich könnte in der Tabelle "Activity" folgendes machen:
- Eine Spalte "entity_type" haben (varchar)
- Eine Spalte key_number (long)

- In entity_type steht dann der Name der anderen Entity
- In key_number steht dann die ID, auf welche verwiesen wird.
-> In meiner WHERE Clause filtere ich dann auf entity_type = "BLABLA" and key_number="1" z.B.

In meiner HTML Liste lade ich dann immer nur die Activity. Wenn ich zum eigentlichen Objekte gehen will, dann baue ich mir einen Link ein, der dann auf die entsprechende Seite geht.
if(entity_type = 'REIFEN')
-> dann holt es mir aus der Entity "REIFEN" das Objekt mit der ID=1

Danke
 

Thallius

Top Contributor
Ich habe ehrlich gesagt überhaupt keine Ahnung wieso man hier Fremdschlüssel braucht. So wie es aussieht willst du Fehradteile verwalten. Also hast du eine Tabelle "parts" mit den Spalten id als primary key autoincrement unique und "name" (oder meinetwegen auch "type" und dann halt eventuell weiteren Attributen die ein Fahrradteil haben kann.

Wo braucht man da jetzt einen Fremdschlüssel=

Gruß

Claus
 

beta20

Top Contributor
Nein, nicht wirklich....

Ich habe eine Tabelle "Activity", diese soll alle Aktivitäten (speicher, löschen....) der anderen Entities loggen.
Also wenn Entity1 gespeichert wird, dann wird in der Activity Tabelle das gespeichert:
- ID
- Typ (create, modify, delete)
- EntityType
- User_FK (derjenige, der die Aktion durchgeführt hat)
- FK_Entity1....
 

Thallius

Top Contributor
Ich verstehe immer noch nicht wieso du für jedes Teil eine Klasse brauchst. Pack die doch alle in eine Klasse Fahrradteil und gut ist. Alles andere wird doch total unübersichtlich im Code.
 

beta20

Top Contributor
Das war nur ein Beispiel mit dem Fahrrad - ich habe nichts mit irgendwelche Fahrradteilen zu tun.
Es geht um Entities wie Customer, Offer, Invoice usw usw. diese kann ich mit Sicherheit nicht in eine Tabelle / Klasse stecken..
 

Thallius

Top Contributor
Dann würde ich es machen wie Du es oben beschrieben hast. In die Activity eine Spalte um welche Entity es sich handelt und einen Zeiger auf die Id.
 

mrBrown

Super-Moderator
Mitarbeiter
Warum willst du denn alle Änderungen an allen Entitäten in einer einzigen großen Tabelle speichern?

Nimm eine Tabelle pro Entität und gut ist.
Und wenn du sowieso Hibernate nutzt, nimm doch auch gleich Hibernate Envers und das ganze passiert automatisch im Hintergrund...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ich brauche tipps für JDBC Datenbankprogrammierung 4
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
J Brauche Hilfe bei meinem Programm ! Datenbankprogrammierung 12
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
J brauche HILFE: java.lang.NoSuchMethodError: calculateSecurityWarningPosition Datenbankprogrammierung 2
D Welches System brauche ich? Datenbankprogrammierung 6
D Brauche hilfe bei Delete mit Datum! Datenbankprogrammierung 4
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
J Tipps für ERM Datenbankprogrammierung 4
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
J Buffer Manager für Datenbank Datenbankprogrammierung 4
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6
T Debugger für SQL? Datenbankprogrammierung 5
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
A Struct für Datenbank abfrage? Datenbankprogrammierung 12
O Hibernate für Eclipse Datenbankprogrammierung 5
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben