Programmdaten des Nutzers auch in Datenbank speichern?



  • Hallo,

    für gewöhnlich speichere ich die BL Daten in der Datenbank. Doch was ist mit Daten zu einer Entität z.B. gibt es die Entität REPORT. Darin werden Vergehen von MItarbeitern gespeichert. REPORT hat ein field "report_kind" also Art des Vergehens. Nun soll der Benutzer des Programms die Möglichkeit haben selbst Vergehen einer ListBox hinzuzufügen. Speichere ich nun die Elemente der ListBox ebenso in einer Datenbanktabelle? Was ich nicht will ist diese Daten in der usertabelle abzuspeichern, denn jedes Jahr wird eine neue angelegt, somit gehen die Vergehen verloren und es müssen die gleichen nochmals angelegt werden... Besser wäre also diese Daten in einer XML Datei zu speichern?

    Wie würdet Ihr das mache?



  • Harlequeen schrieb:

    Speichere ich nun die Elemente der ListBox ebenso in einer Datenbanktabelle?

    Ja. Mach eine Tabelle mit den Vergehen und referenziere den Primärschlüssel dieser Tabelle als Fremdschlüssel in der Tabelle Report. Du kannst ja noch einen Button 'Neues Vergehen' an Deine Oberfläche packen oder die Listbox auch beschreibbar machen. Wenn der Text der Listbox nicht in der Tabelle sich befindet dann eben eintragen und referenzieren.



  • witte schrieb:

    Harlequeen schrieb:

    Speichere ich nun die Elemente der ListBox ebenso in einer Datenbanktabelle?

    Ja. Mach eine Tabelle mit den Vergehen und referenziere den Primärschlüssel dieser Tabelle als Fremdschlüssel in der Tabelle Report. Du kannst ja noch einen Button 'Neues Vergehen' an Deine Oberfläche packen oder die Listbox auch beschreibbar machen. Wenn der Text der Listbox nicht in der Tabelle sich befindet dann eben eintragen und referenzieren.

    hm.. ich glaub du hast mich net 100% verstanden.

    1:N relation.
    REPORT:
    report_id (PK)
    art_des_vorfalls
    datum
    maßnahmen
    etc...
    mitarbeiter_id(FK)

    REPORTART
    reportart_id(PK)
    bezeichnung
    report_id(FK)

    doch ich will gar keine Beziehung zwischen dem Report und Reportart haben, warum auch?

    der user wählt aus ner listbox eine art aus und dieser string wird dann in seinem REPORT gespeichert,fertig! Die Frage ist nur, wie speichere ich solche user daten? was anderes sind z.B. der user erstellt auch eigene strings in einer listbox mit einer Hintergrundfarbe zu genau diesem string.

    Oder wie speichere ich Daten unabhängig von den Datenbankdaten, z.B. wo der user zuletzt die DB gespeichert hat also pfade. Diese werden in einer Liste angezeigt BEVOR der user überhaupt eine DB lädt/laden kann. Da wäre doch eine xml Datei am besten geeignet?



  • Die Sache mit den Relationen ist schon ok aber halt nicht in derselben DB, denn nach einem Jahr muss eine andere DB benutzt werden und alle einstellungen bzw. daten die der user angelegt hat neu machen lassen ist ätzend... du verstehst? darum dachte ich sei linq to xml evtl. net verkehrt da mir ja 1:N relations ausreichen.



  • Dass jedes Jahr eine neue Datenbank gemacht wird ist etwas ungewöhnlich.
    Eine Möglichkeit wäre zwei Datenbanken zu verwenden, eine die jedes Jahr gewechselt wird, und eine die bleibt. In der die bleibt könntest du dann diverse User-Settings/Preferences etc. abspeichern.

    Was den Default-Pfad zu Datenbank o.ä. angeht, also Dinge die nötig sind bevor eine Connection zur Datenbank hergestellt ist... Sowas kannst du in der Registry ablegen, oder in einem einfachen .ini File, oder wenn du willst auch in einem XML File. Falls du ein File verwendest wäre vermutlich gut dieses in ein User-spezifisches Verzeichnis zu legen, also z.B. unter "%APPDATA%\MyApplication\...".

    Ob du dort auch alle weiteren Dinge abspeichern solltest, wie User-Settings etc., hängt wohl hauptsächlich davon ab, ob diese "lokal" oder "zentral" abgespeichert werden sollen. Also wenn User A normal an PC X arbeitet, hin und wieder aber mal an PC Y und PC Z, dann wäre es vermutlich vorteilhaft, solche Dinge zentral abzulegen, da User A sonst immer alle Einstellungen 3x machen müsste.



  • Was den Default-Pfad zu Datenbank o.ä. angeht, also Dinge die nötig sind bevor eine Connection zur Datenbank hergestellt ist... Sowas kannst du in der Registry ablegen, oder in einem einfachen .ini File, oder wenn du willst auch in einem XML File. Falls du ein File verwendest wäre vermutlich gut dieses in ein User-spezifisches Verzeichnis zu legen, also z.B. unter "%APPDATA%\MyApplication\...".

    Die userdata.xml lege ich unter \myapplication\data ab, da nur ein user draufzugreift, da single thread programm. Danke!


Anmelden zum Antworten