mehrere Schemas in einer Datenbank

Kampfgummibaerlie

Datenbank-Guru
Beiträge
730
Ich denke, es ist eine gute Alternative für meine angehensweise, dass ich nicht "ununterbrochen" prüfen muss, ob die authentifizierung zutrifft, und mache einfach ein weiteres Schema:

Bisher noch nicht im absoluten in der Praxis getestet, denke aber, es funktioniert, wenn ich im php einfach in die entsprechenden Querys den

Aber um zur Datenbank zu kommen, weil ich ja doch relativ weit bin, und nicht alles erneut schreiben möchte:

1.: Datenbank erstellen
Code:
create database db_1;

2.: weiteres Schema erstellen
Code:
create schema schema_1;

3.: weiteres Schema erstellen (ist nicht notwendig, weil das Public Schema ja immer vorhanden sein sollte)
Code:
create schema schema_2;

4.: eine Tabelle erstellen in Schema schema_1
Code:
create table schema_1.table_1(id int, val text);

5.: etwas in die Tabelle des Schemas schema_1 einfügen
Code:
insert into schema_1.table_1 values ('1', 'Test');

6.: eine 2. Tabelle erstellen in Schema schema_2, mit allen Werten aus der Tabelle aus Schema_1
Code:
create table schema_2.table_1 as select * from schema_1.table_1;

7.: Am Ende, um das ganze zu prüfen, alles aus der Tabelle (und dem Schema), wo wir noch nichts eingefügt hatten, selecten
Code:
select * from schema_2.table_1;

Jetzt sollte auch in der Tabelle table_1 von schema_2 der Wert, bzw. die ID aus der table_1 aus schema_1

Ich werde mich jedenfalls mit dieser Thematik auseinandersetzen, mich würde jedoch durchaus interessieren, ob mir davon vollständig abzuraten ist.
 
Werbung:
Ich werde mich jedenfalls mit dieser Thematik auseinandersetzen, mich würde jedoch durchaus interessieren, ob mir davon vollständig abzuraten ist.

Ich will Dir davon nicht abraten, nur ist bis jetzt noch nicht erkennbar, was Du zu erreichen gedenkst. Punkt 6 z.B. sorgt so erst einmal nur für doppelte Daten. Das *kann* sinnvoll sein, wenn man bestimmte Ziele erreichen will. Zwingend sinnvoll ist es aber nicht.

Unterschiedliche Schemas können z.B. sinnvoll sein, wenn Du N Niederlassungen Deines Nähmaschinenverleihs hast und in jeder erst einmal identische Tabellen und Stammdaten haben willst (Dein Punkt 6.), dann aber diese Niederlassungen für sich eigenständig sein sollen. Du als Oberboss kannst aber immer noch eine Aggregation Deiner verdienten Milliardenumsätze über alle 128.000 Niederlassungen weltweit fahren...

(in der Hoffnung auf ein paar Millionen Provision für meine Beratung hier...)


Andreas, grad in Fulda.
 
Also, ich würde gerne erreichen, dass, wenn sich ein Benutzer erfolgreich einloggt, welcher auch "Admin-Rechte" hat, auf der Homepage in einem Menü links die Links sieht, welche auf Firmendaten zugreifen können.

Beispiel:
Links im Link-Menü ist (für alle):
Produkte
Öffnungszeiten
Maschinen
Stoffe
......

wenn der User, wenn er sich eingeloggt hat, "admin-rechte" hat (habe in der Tabelle Benutzer ein Boolean-Feld, welches eben diesen Punkt definiert (false klarerweise keine, true klarerweise schon welche)

Links im Link-Menü ist (für admins):
Vermietungen (Damit nicht jeder sieht, dass der hr. Franz am x.x. im Jahr x um hh:mi kommt)
Materialien (Nähgarn, ....)
und, was weiß ich was alles.

Außerdem:
wenn derjenige, der eingeloggt ist, admin-rechte hat, hat er auch auf den Seiten, die "für alle" ist, in einem gewissem Maße mehr Möglichkeiten (neues Produkt eintragen, neuen Stoff eintragen, Maschine auf Karenzzeit schicken, oder sonst etwas)

Ich denke, dazu reicht eine weitere role, wo ich auf der Homepage einfach die entsprechende Spalte überprüfe, ob sie 1 oder 0 ist.

Hier meine Frage:
Du hast schonmal erähnt, dass man den verschiedenen Roles rechte auf Functions geben kann, also würde ich fragen, wie das an sich funktionieren würde ;)

Meine Vorstellungen:
3 Roles, im Sinne von "Gast", einer Role im Sinne von "Mitarbeiter", oder so, und eine für "Admin". Wobei nur der Admin zB die Öffnungszeiten ändern können soll, bzw. wirklich "alles" kann.

EDIT: Meine Tabelle mit Benutzer hat 2 boolean-felder die beide per default 'false' sind, wobei eines Admin-Rechte ist, und das andere SU-Rechte (Superuser/Mitarbeiter)

EDIT2: Wenn ich mich näher mit Roles beschäftigen soll, um das zu errreichen, warte ich nur auf den Befehl ^^
 
Werbung:
Aufklärung der Momentanen Situation:

Habe einfach eine Fragestellung vor dem anzeigen des Menüs links erstellt.
(Glaube, passt nicht hier ins Forum, aber ja, ich schreibe es trotzdem hier)

Ich prüfe, ob die Daten stimmen, und zeige links das menü an, oder eben nicht.
sprich, ich muss jetzt die ganzen Links, die für "jedermann" sind händisch reinschreiben nach dem else (kann man sich wie eine case when vorstellen, nur halt mit anderen Codes) ;)

Habe ja ausreichend Zeit für sowas :D

Würde mich aber freuen, falls jemand eine sinnvollere Lösungsmöglichkeit "bei Hand" hat, was ich glaube aber nicht notwendig ist, weil das sowieso sicher genug sein sollte. ;)

Danke :)
 
Zurück
Oben