Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

mir ist grad kein besserer Titel eingefallen, da ich nicht wirklich einen Namen für das Problem habe.

Folgende Situation:

Anhand von Benutzern, soll herausgefunden werden, wer welchen Datensatz in meiner Datenbank sehen darf und welchen nicht.

Dies wurde bei uns so umgesetzt, dass eine Zahlenreihenfolge gesetzt wird, die den Datensatz eindeutig in der Sicht kennzeichnet.

Und zwar gibt es verschiendene Benutzergruppen, die aus dem System 2^0, 2^1, 2^2, 2^3, usw. zusammengesetzt sind.

Beispiel:

Der Benutzer Müller gehört der Benutzergruppe 2^2 (=4) an.

Der Benutzer Meier gehört der Benutzergruppe 2^3 (= 8) an.

Der Benutzer Schmidt gehört der Benutzergruppe 2^0 (=1) an.

Der Datensatz XYZ darf von den Benutzergruppen gesehen werden, die der 2^2 und der 2^3 angehören. Sprich Herr Schmidt dürfte diesen nicht sehen.

Um das zu Bewerkstelligen, wurden die Datensätze mit der Summe der Benutzerzugehörigkeit versehen. Sprich: Der Datensatz XYZ hat als Mandantennummer die 12 (da 4+8).

Dadurch ist jeder Datensatz eindeutig gekennzeichnet.

Nur jetzt habe ich folgendes Problem:

Es muss auch wieder Eindeutig zurückgerechnet werden können. Durch das (nennt man das so) Bit-System bei den Benutzern gibt es nur eingeschränkte Zahlen, die zur Verfügung stehen.

Ich müsste jetzt also wissen, dass die Mandantenummer 12 aus genau den beiden Benutzergruppen 2^2 und 2^3 entstanden ist.

Gibt es für sowas einen Algorithmus?

Hat das einen bestimmten Namen (wie. z.B. Bubblesort) wonach man mal googlen könnte?

Die Datenbank ist ein Oracle-System. Gibts vielleicht dort auch schon eine eingebaute Rückrechnungsfunktion?

Wer klasse, wenn jemand ne Idee hätte :)

Geschrieben

ich würde spontan hochrechnen und mit der gesamtsumme vergleichen.

also

2^1 < mandantennummer

2^2 <

2^3 <

2^4 >

then mandantennummer - 2^3 und so weiter, bis mandantennummer == 0

man kann natürlich auch nur die Hochzahlen duchlaufen, die erlaubt sind. also wenn zum beispiel die 2 nicht erlaubt ist, dann nicht ^1 rechnen sondern mit ^2 beginnen

zu beachten ist aber, dass bei mehr als 2 zusammengesetzen zahlen, es mehrere möglichkeiten geben kann ...

also muß man die Menge aller Lösungen finden

Geschrieben

Kann es sein dass dieses Problem nach einer BINÄR Darstellung schreit?

dezimal = binär

0 = 0000 0000

1 = 0000 0001

2 = 0000 0010

3 = 0000 0011

4 = 0000 0100

5 = 0000 0101

...

dementsprechend wenn du die Berechtigung 12 = 0000 1100 hast sind die beiden Benutzergruppen an deren position in der binär Darstellung die 1 steht --> 8 und 4 berechtigt

DateiberechtigungsZahl : Berechtigte Gruppen

17 = 0001 0001 : 16 und 1

26 = 0001 1010 : 16 und 8 und 2

Kommt das deinem Problem nahe?

Diese umrechnung ist übrigens dann eindeutig.

Geschrieben
Kann es sein dass dieses Problem nach einer BINÄR Darstellung schreit?

dezimal = binär

0 = 0000 0000

1 = 0000 0001

2 = 0000 0010

3 = 0000 0011

4 = 0000 0100

5 = 0000 0101

...

dementsprechend wenn du die Berechtigung 12 = 0000 1100 hast sind die beiden Benutzergruppen an deren position in der binär Darstellung die 1 steht --> 8 und 4 berechtigt

DateiberechtigungsZahl : Berechtigte Gruppen

17 = 0001 0001 : 16 und 1

26 = 0001 1010 : 16 und 8 und 2

Kommt das deinem Problem nahe?

Diese umrechnung ist übrigens dann eindeutig.

Hmmm... das klingt gar nicht mal dumm...

Nur ich bekomme aus einer Dezimalzahl in Oracle kein Binär mehr...

Oder weiß das hier jemand? Gibts da vielleicht auch nen Algorithmus zu?

(eigentlich wollte ich von der Binärnummer runter - aber das klingt bisher am besten)

Oder noch andere Alternativen vielleicht? :)

Geschrieben

Üblicherweise macht man das mit Schiebe- und binären Verknüpfungsoperatoren. Wenn du die nicht zur Verfügung hast, kannst du auch mit wiederholter Division durch zwei und Prüfen des Divisionsrests arbeiten.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...