Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 :)

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

ich glaube die bezeichnung für dieses Vorgehen ist "Rekursives rechnen"

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.

  • Autor
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? :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.