Struktur für Parent / Child Produkt

OnDemand

Top Contributor
Hallo zusammen,

hat jemand noch eine bessere Idee für ein Datenbankdesign für Folgendes:

Es gibt Artikel in verschiedenen Eigenschaften und Varianten

zb Hose in XL, rot und XXL grün. Außerdem gibts Computer mit 16 GB RAM 32GB RAM

Aktuell sieht die DB so aus:
In products_properties_combination stehen Daten zur Kombination wie Preis, Bestand, EAN usw (eigentlich die selbe nDaten wie es auch ein nicht-Varianten Produkt hat)

products_properties_combinations_values hält die Kombinationen und deren Möglichkeiten
zb Kombination 1 gibts in
Größe XL mit Farbe rot
Größe L mit Farbe grün

und die anderen beiden jeweils die Namen wie "Größe", " Farbe" sowie deren Werte wie "XL, L, grün, rot"
1615902431029.png

Hat jemand ne Idee wie man das eleganter lösen kann? Sind mir irgendwie zu viele Abhängigkeiten und Tabellen. Wie verwerflich wäre es wenn man das Keyvalue paar direkt als Key-Value abspeichert also quasi nicht mit Fremdschlüsseln. Dann wäre diese Daten übel doppelt aber irgendwie einfacher ;)

Freu mich auf euren Input!
 

OnDemand

Top Contributor
Ja klar ich versuchs mal, hoffe es reicht so. Wärehd ich das so schreibe, fällt mir auf wie unnötig tabelle products_properties_combinations ist. Das könnte auch einfach die products_tabelle sein. Entweder hat ein Produkt Kombinationen oder nicht

products_properties_combinations
id, sku, preis
1, AB-DE, 8.00
2, FD-12, 158.00

products_properties_combinations_values (müsste eigentlich products_properties_combinations_values _names heißen ist die link tabelle zwishen names und values)
combi_id, name_id, value_id
1, 1, 3
1, 1, 4
2, 2, 1
2, 2, 2

products_properties_values
id, value
1, rot
2, grün
3, XL
4, S

products_properties_names
id, value
1, Größe
2, Farbe
 

mrBrown

Super-Moderator
Mitarbeiter
Das was du beschreibst ist ein simples Entity-Attribute-Value-Model, deine Variante ist auch die klassische relationale Lösung dafür.

Je nachdem was die Datenbank bietet kann man auch anderes nutzen, zB statt products_properties_combinations_values eine Json-Column direkt in products_tabelle, welche alle Kombinationen enthält. (Wurde hier sogar erst vor kurzem angeschnitten...).
 

LimDul

Top Contributor
Ich stell mal die - meines Erachtens relevante Frage - Was ist das Problem bzw. was ist der Anwendungsfall?

Klar, die Tabellen explodieren und sind, wenn man auf die Datenbank schaut, nicht mehr auf den ersten Blick übersichtlich aus.

Allerdings, ist das Problem? Denn das Dinge "hübsch aussehen" ist für mich kein Anwendungsfall. Und im Idealfall wird es ja durch das Entitäts-Modell in Java entsprechend abstrahiert und auf der DB durch Foreign Keys findet man sich auch zurecht.

Denn "Menge von Tabellen oder Abhänigkeiten" ist für mich erst mal per se kein Problem.
Ich hab in Java lieber 50 Klassen mit kleiner <100 Zeilen Code als 10 Klassen mit 500 Zeilen Code. Es sieht zwar nach vielen Tabellen und Abhängigkeiten aus - aber die bilden ja eine gekapselte in sich konsistente Bedeutung. Die Abhängigkeiten existieren sollten ja nur untereinander exisitieren - nach Außen hingegen wird es ja hoffentlich abstrahiert.
 

OnDemand

Top Contributor
Danke für euren Input. Dachte gibt eine schlankere Lösung. Mit den Klassen ist das einfach abbildbar ja, aber ob die Daten nun in 3 oder 1 Tabelle wären macht ja von der Datenmenge kaum einen Unterschied. Bleibt daher wie es ist :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
DStrohma Kann sich jemand mal diese DB-Struktur ansehen? Datenbankprogrammierung 2
G Datenbasis SQL, Struktur XML Datenbankprogrammierung 5
L Struktur einer vorhandenen Datenbanktabelle ändern Datenbankprogrammierung 8
N Struktur eines Datenbankinterface? Datenbankprogrammierung 7
M Struktur Datenbankanwendung Datenbankprogrammierung 10
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
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 Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
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
J Tipps für ERM Datenbankprogrammierung 4
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
S ich brauche tipps für JDBC 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
D Sicherheit für Datenbankverbindung Datenbankprogrammierung 19
S Standard für Datenbanken Datenbankprogrammierung 3
R Entfernte MySQL Datenbank für lokale Swing-App Datenbankprogrammierung 8
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben