Mehrere Felder einzeln optional, zusammen obligatorisch.

kellerfh

Neuer Benutzer
Beiträge
4
Grüß Gott,

ich habe eine vermutlich triviale Frage zum Design einer Datenbank.

Ich habe ein Objekt, das auf verschiedene Arten beschrieben werden kann und zwar einfach, erweitert und vollständig. Jede dieser Beschreibungen kann, aber muss nicht existieren. Es muss aber mindestens eine dieser Beschreibungen existieren.

Ein Beispiel: Das Objekt sei ein Verkaufsartikel. Die einfache Beschreibung könnten Schulnoten von 1-6 sein. Die erweiterte Beschreibung bewertet den Verkaufsartikel näher, sagen wird in Bezug auf Handhabung, Preis, Aussehen, usw. Und die vollständige Beschreibung wird anhand einer Art Fragenkatalog erfasst, in dem manche Felder Freitext, manche aus einer anderen Tabelle ermittelt werden.

Die Frage ist nun: Wie modelliere ich es, dass zwar jede dieser Beschreibungen einzeln betrachtet optional ist, es aber mindestens eine Beschreibung geben muss, also mindestens eine einfache oder erweiterte oder vollständige?

Falls noch weitere Infos gewünscht sind, bitte Fragen, es liegt in meinem Interesse.

LG Felix

P.S: Das gewählte Beispiel entspricht nicht meinem Anwendungsfall, also bitte nicht irgendwelche vorgefertigten Webshopprodukte empfehlen, es geht mir um den akademischen Aspekt.
 
Werbung:
So hätte ich das beim implementieren auch gelöst. Allerdings frage ich mich, wie man das in einem Modell abbildet, also beispielsweise in einem ERM.
 
Hi Felix.

Die Frage ist nun: Wie modelliere ich es, dass zwar jede dieser Beschreibungen einzeln betrachtet optional ist, es aber mindestens eine Beschreibung geben muss, also mindestens eine einfache oder erweiterte oder vollständige?

In der Wikipedia findet sich hier ein einführender Absatz zu Spezialisierung und Generalisierung. Gekennzeichnet wird ein Fall wie deiner dort als 1:c Beziehung. (Nach der modifizierten Chen-Notation)

P.S: Das gewählte Beispiel entspricht nicht meinem Anwendungsfall, also bitte nicht irgendwelche vorgefertigten Webshopprodukte empfehlen, es geht mir um den akademischen Aspekt.

Es geht hier im Forum ja auch um Datenbanken und nicht um Webshops. Produktempfehlungen wirst du hier normalerweise nur auf Wunsch bekommen. Empfehlungen zu einer Datenbank wird es allerdings hin und wieder geben.
 
Herausragend! Das ist exakt das, was ich wissen wollte. Vielen Dank!

Edit: Kann als gelöst markiert werden. Oder hab ich irgendwo nen Button übersehen, der das macht?
 
Hallo zusammen,

ich glaube eine ähnliche Situation zu haben. Angenommen ich erfasse Daten, und weitere Informationen zu diesen Daten sind optional in einer weiteren Tabelle hinterlegt. Diese weiteren Informationen können hinterlegt sein, müssen aber nicht. Wie wäre es in der zweiten Tabelle einen leeren Eintrag manuell einzutragen, der als PK z.B. 0 hat und die Zeile leer zu lassen. Die erste Tabelle verweißt dann auf diesen Eintrag, wenn keine weiteren Informationen hinterlegt sind. Die Prüfung, ob weitere Informationen eingetragen wurden prüft die Anwendung.

Wäre das so lösbar bzw. auch Datenbankkonform?

Gruß
 
Wie wäre es in der zweiten Tabelle einen leeren Eintrag manuell einzutragen, der als PK z.B. 0 hat und die Zeile leer zu lassen. Die erste Tabelle verweißt dann auf diesen Eintrag, wenn keine weiteren Informationen hinterlegt sind. Die Prüfung, ob weitere Informationen eingetragen wurden prüft die Anwendung.

Wäre das so lösbar bzw. auch Datenbankkonform?

Gruß

Unsinnig.
 
Die Frage ist, in welcher Beziehung die weiteren optionalen Daten stehen.
  • Wenn Du zu einem Eintrag in Deiner Ursprungstabelle maximal einen Eintrag in der Erweiterungstabelle hast und der immer gleich aussieht, kannst Du Dir das mit den zwei Tabellen sparen und gleich eine machen mit den optionalen Erweiterungsfeldern in einem Datensatz.
  • Wenn Du zu einem Eintrag in Deiner Ursprungstabelle mehr als einen Eintrag in der Erweiterungstabelle hast und der immer gleich aussieht, kannst Du in der zweiten Tabelle die Erweiterungen erfassen. Die Einträge in der zweiten Tabelle haben dann entsprechend ein Fremdschlüsselfeld auf die erste Tabelle.
  • Wenn Du zu einem Eintrag in Deiner Ursprungstabelle mehr als einen Eintrag in der Erweiterungstabelle hast und der unterschiedlich aussehen kann, dann machst Du nicht eine, sondern entsprechend mehrere Erweiterungstabellen, für jeden "Erweiterungstyp" eine. Die haben dann alle ein Fremdschlüsselfeld auf die erste Tabelle
Wenn Du dann eine Abfrage starten willst, in der alles steht, empfiehlt es sich, einen Join zu bemühen, aber das ist ein anderes Thema.

Generalisierung und Spezialisierung ist eine interessante Sache, denn die Generalisierung (also die Ursprungstabelle) weiß nichts von seiner Spezialisierung (also von ihren Erweiterungstabellen), umgekehrt aber schon.
 
Werbung:
Zurück
Oben