Auswahlfeld und freie Eingabe

exzel

SQL-Guru
Beiträge
170
Hallo zusammen,

ich möchte eine Eingabemaske erstellen, in der der Anwender Ausgaben erfassen kann. Er kann dazu vorgegebene Kategorien auswählen oder aber auch eine freie Eingabe tätigen.

Hier der Ausschnitt aus der Tabelle. Bei Haushaltsausgaben habe ich einmal eine freie Eingabe mit "Premiere" getätigt und einmal eine vorgegebene Kategorie 2.

ausgaben.PNG
Die vorgegebenen Kategorien befinden sich in einer anderen Tabelle. Nur ich weiß eben nicht, wie ich mit den freien Eingabe umgehen soll. Momentan werden diese eben direkt in die gleiche Spalte wie die vorgegebenen Kategorien eingetragen. Aber so gibt es Probleme mit den Joins.

Wie kann ich sowas modellieren

Gruß
 
Werbung:
Er kann dazu vorgegebene Kategorien auswählen oder aber auch eine freie Eingabe tätigen.

Hier der Ausschnitt aus der Tabelle. Bei Haushaltsausgaben habe ich einmal eine freie Eingabe mit "Premiere" getätigt und einmal eine vorgegebene Kategorie 2.

Dann stimmt was nicht. Wenn Du sauber mit Foreign Keys arbeitest, kann das nicht funktionieren. MySQL macht's möglich, gell?

Entwder ist es eine freie Auswahl, oder aber Du referenzierst auf eine andere Tabelle.
 
Die Spalte muss ja VARCHAR sein, das allein finde ich schon unglücklich wenn man dort auch INT reinschreibt. Natürlich ließe sich bei einer Abfrage jetzt eine Lösung fuschen aber einen gültigen FK Constraint kannst du so nicht erstellen. Dazu müsstest du die "Premiere" vorher in deine andere Tabelle schreiben und dann referenzieren.
 
Hallo,

wäre es eine Möglichkeit die Tabelle wie hier um eine Spalte zu erweitern?

tabelle.PNG

Also die vorgegebenen Werte zu referenzieren und die freien Eingaben in einer gesonderten Spalte unterzubringen.
 
Und erlicherweise muss ich dazu sagen das ich einfach die Default Kategorien mit in die VARCHAR Spalte schreiben würde, sofern diese Namen nicht besonders viel Platz einnehmen. Man kann sich auch zu tode normalisieren.
 
Also ich habe es so mit einer gesonderten Spalte gemacht und mit Referenzen bei vorgegebenen Eingaben.

Hier der Code zum Abfragen

Code:
SELECT ausgaben as haushaltsausgaben, beitrag, zw, falligkeit FROM ausgaben, haushaltsausgaben WHERE haushaltsausgaben = id UNION
SELECT freieeingabe as haushaltsausgaben, beitrag, zw, falligkeit FROM ausgaben, haushaltsausgaben WHERE haushaltsausgaben = ''

Aber eine Frage habe ich noch. Wahrscheinlich verstoße ich mit diesem vorgehen gegen eine Normalform, oder? Gegen welche?

Gruß
 
Wieder was gelernt! Aber in diesem fall ist das wohl verzeihbar, oder?
Für gewöhnlich wird bis zur BCN normalisiert. Die 4. oder 5. NF können wiederum zu neuen – anderen Problemen führen.

Ein Verstoß gegen die 1. und einfachste NF halte ich persönlich schlichtweg für unverzeihlich. Oder anders ausgedrückt ist so etwas einfach nur Pfusch. ;)

Gruß
Hony
 
Theorie hin oder her, in diesem Fall würde ich einen simplen Weg bevorzugen und einfach eine Spalte für alle Kategorienamen machen. Wenn dann 1000 Einträge den selben Wert aufweisen ist das halt so, spart ne Menge arbeit bei Abfragen oder Inserts. Der Speicherbedarf wird auch nicht exorbitant sein.
 
Werbung:
Zurück
Oben