Datenbank mit Benutzerverwaltung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Angry Onion.

    Datenbank mit Benutzerverwaltung

    Hallo,

    ich habe eine Datenbank mit einer Tabelle "auftraege" und einer tabelle "benutzer".
    Ich habe ein vb.net Programm, mit dem man einzelne Aufträge an verschiedene Benutzer weiterleiten kann.
    Dadurch soll dann bei den entsprechenden Benutzern, sobald sie sich im Programm angemeldet haben, eine Meldung erscheinen, mit den Datensätzen, die an sie weitergeleitet wurden.

    Wie setze ich das am besten in der Datenbank um?

    Ist es schlau eine 3. Tabelle zu erstellen, in der jeder Benutzer ein Feld von Typ boolean hat und so für jeden Auftrag einfach ja/nein für die Weiterleitung eingetragen wird?
    Oder ist es sinnvoller ein Feld in der benutzertabelle, in der einfach die IDs der Aufträge hintereinander in einem String gespeichert werden? Oder sollte ich das ganz anders angehen?

    Danke im Vorraus, ich hoffe ihr könnt mir helfen,

    Yannic
    3. Normalform sagt nein ...

    die Idee mit der 3. Tabelle ist schon der richtige Ansatz aber nicht mit boolschen werten.
    Da du zwischen Benutzer und Auftraege eine n:m Beziehung herstellst
    ( ... ein Benutzer kann mehrere Aufträge annehmen und ein Auftrag kann von meheren Benutzern bearbeitet werden...)
    sollte deine 3. Tabelle aus Benutzer_id und Auftraege_id bestehen.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Danke für den Ansatz, aber das habe ich noch nicht ganz verstanden.

    Als Datensätze hat man dann die Aufträge-IDs und als Felder die User und was trägt man dann dort ein?

    wenn man dann während der Laufzeit Benutzer, und somit auch neue Felder in der dritten Tabelle hinzufügt, kann das schnell zu Schwierigkeiten führen oder? Ich habe gelesen, dass es schlecht ist, während der Laufzeit neue Felder in einer datenbanktabelle hinzuzufügen.
    Du brauchst nicht unbedingt eine Zwischentabelle, falls ein Auftrag nur von einem Benutzer bearbeitet werden kann.
    Erweitere die Tabelle Auftrag um die Spalte "BearbeiterID".
    Dort trägst du die BenutzerID des Benutzers ein, der den Auftrag bearbeiten soll.
    Beim Login kannst du dem Benutzer seine Datensätze anzeigen:
    SELECT * FROM Auftraege WHERE BearbeiterID=MeineBenutzerID

    Der Auftrag kann ggf. auch weitergereicht oder verschoben werden, indem man einfach eine andere BearbeiterID einträgt.

    Du solltest dir allerdings den Workflow eines solchen Auftrags genau durchdenken, bevor du zu codieren beginnst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Manü schrieb:

    Da du zwischen Benutzer und Auftraege eine n:m Beziehung herstellst
    ( ... ein Benutzer kann mehrere Aufträge annehmen und ein Auftrag kann von meheren Benutzern bearbeitet werden...)
    Dieser Fall liegt hier doch grade nicht vor.

    So verstehe ich das jdfs, wenn er einen Auftrag mal dem einen User, mal dem anneren zuschanzen will.

    Das ist in meinen Augen keine m:n, sondern eine 1:n - Relation: Ein User hat viele Aufträge, aber ein Auftrag wird nur von einem User bearbeitet.

    Ich kann mich auch irren, das muss der TE wissen, wie das Modell der Wirklichkeit entspricht.
    (Ich würde die Auftragsbearbeiter übrigens keinesfalls User nennen. Im Datenmodell sind es Bearbeiter, keine Nutzer von iwas)