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.
NumberRangeId, Name, Start, End
UserId, Name,....
NumberRangeId, Number, UserId, Returned
Ist das eine vernünftige Lösung bzw. gibt es hierzu schon Best Practices wie man soetwas löst?
Lg
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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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)
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
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.