Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Nummern-Kreise verwalten
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

Themenstarter:

Nummern-Kreise verwalten

beantworten | zitieren | melden

verwendetes Datenbanksystem: MS-SQL 2008 r2 express


Hi,

ich sitz grad vor einem Problem und bin grad etwas ratlos. Es geht um das Verwalten und Handeln von Nummernkreisen. Das könnten Nummernkreise von Gutscheinen, Eintrittskarten, Tombolalosen etc... sein.

Nehmen wir mal an es gibt einen Nummernkreis (es könnten auch mehrere sein, ist aber für das Problem imho nicht relevant) für Lose.


100 - 199


Nun bekommt

User "Maier" 10 Lose => 101, 102, 103, 104, 105, 106
User "Huber" 3 Lose => 112, 143, 178


Man kann also nicht davon ausgehen dass man einen "Start" und einen "End"-Wert der erhaltenen Nummern hat und es sollen auch Nummern "zurückgegeben" werden und neu vergeben werden können.


Ich hätt mir jetzt folgendes ausgedacht.

Table "NumberRange":
--------------------------
NumberRangeId, Name, Start, End

Table "User":
---------------
UserId, Name,....

Table "UsedNumber":
------------------------
NumberRangeId, Number, UserId, Returned


Ist das eine vernünftige Lösung bzw. gibt es hierzu schon Best Practices wie man soetwas löst?

Lg
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

In meinen Augen hast Du ein NummernPaket. Dieses hat eine offene Anzahl an Nummern (Dein Range) ( 1-n Relation )
Hinter jeder Nummern befindet sich ja ein bestimmter Gewinn (1-1 Relation)
Der User hingegen hat nun eine Relation zur Nummer; und darüber dann indirekt zum NummernPaket (0-1 zu n Relation)

<Item> = Entity

Jedenfalls wäre das nun mein spontaner Gedanke.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Khalid
myCSharp.de - Experte

Avatar #avatar-2534.gif


Dabei seit:
Beiträge: 3627
Herkunft: Hannover

beantworten | zitieren | melden

Hallo,

ist so schon fast gut. Allerdings würde ich keine "UsedNumbers" Tabelle anlegen, sondern nur eine "Numbers". Also, du hast eine Tabelle "NumberRange", "Numbers" und "Users". Der Aufbau der Tabellen ist ziemlich einfach

NumberRange

ID GUID
Name VARCHAR
Numbers

ID GUID
NumberRangeID GUID
Number INT
AssignedUserID GUID
AssignedOn DATETIME
Users

ID GUID
Name, Vorname, BlaBlaBla
So. From und To brauchst du in der NumberRange-Tabelle nicht, das sich dies aus der Numbers Tabelle ergibt. Ist eine Nummer zugewiesen, wird die ID des Benutzers und das Datum zugewiesen. Wird eine Nummer zurückgewiesen, werden diese einfach wieder auf NULL gestellt. Du hast damit wesentlich weniger Verwaltungsoverhead als mit einer "UsedNumbers"-Tabelle.

Neben den gezeigten Spalten kann da natürlich alles mögliche hinzukommen: Rücknahmegrund, Rücknahmedatum usw...
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

Themenstarter:

beantworten | zitieren | melden

Hallo,

danke, daran für jede Nummer eines Nummernkreises vorne weg schon einen Datensatz anzulegen hab ich gar nicht gedacht...

Ich müsste allerdings an die Number-Table noch eine LogTable dranhängen,
damit ich bei Rückgaben trotzdem noch die History hab....

lg
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 429
Herkunft: Bawü

beantworten | zitieren | melden

Zitat von [email protected]
Ich müsste allerdings an die Number-Table noch eine LogTable dranhängen,
damit ich bei Rückgaben trotzdem noch die History hab....

Die kannste dir ja per Trigger automatisch erstellen lassen.
private Nachricht | Beiträge des Benutzers