Ergebnis 1 bis 9 von 9

Thema: DDL von Objekten anderer Schemata in gleicher Datenbank verstecken?

  1. #1
    Akita ist offline Neuer Benutzer
    Registriert seit
    19.10.2010
    Beiträge
    3

    Standard DDL von Objekten anderer Schemata in gleicher Datenbank verstecken?

    Hallo liebe Helfer,

    eine Schulungsumgebung wollte ich wie folgt aufbauen:

    Code:
    CREATE DATABASE veranstaltungsname
    
    CREATE USER student1...
    CREATE SCHEMA student1 AUTHORIZATION student1
    
    CREATE USER student2...
    CREATE SCHEMA student2 AUTHORIZATION student2
    So kann student1 zwar nicht die Daten von student2 einsehen, aber immer noch die DDL der Datenbankobjekte von student2. Genau die DDL ist aber Teil der Übungen, die die Studenten unabhängig voneinander lösen sollen.

    Kann ich die DDL der Objekte in anderen Schemata der gleichen Datenbank verstecken?

    Oder muss ich je eine Datenbank pro Student anlegen, um hier eine harte Trennung durch zu setzen? Das würde mein Ziel zwar erreichen, wäre aber in der Bedienung und Administration deutlich unkomfortabler.

    Vielen Dank im Voraus für eure Mühen!

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von Akita Beitrag anzeigen
    Hallo liebe Helfer,

    eine Schulungsumgebung wollte ich wie folgt aufbauen:

    Code:
    CREATE DATABASE veranstaltungsname
    
    CREATE USER student1...
    CREATE SCHEMA student1 AUTHORIZATION student1
    
    CREATE USER student2...
    CREATE SCHEMA student2 AUTHORIZATION student2
    So kann student1 zwar nicht die Daten von student2 einsehen, aber immer noch die DDL der Datenbankobjekte von student2. Genau die DDL ist aber Teil der Übungen, die die Studenten unabhängig voneinander lösen sollen.

    Kann ich die DDL der Objekte in anderen Schemata der gleichen Datenbank verstecken?

    Oder muss ich je eine Datenbank pro Student anlegen, um hier eine harte Trennung durch zu setzen? Das würde mein Ziel zwar erreichen, wäre aber in der Bedienung und Administration deutlich unkomfortabler.

    Vielen Dank im Voraus für eure Mühen!
    Ungetestet: mittel REVOKE dem PUBLIC das USAGE entziehen.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Selbst wenn du die Rechte an Schema und Tabelle den anderen Benutzern entziehst, können diese immer noch die Struktur der Tabelle einsehen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #4
    Akita ist offline Neuer Benutzer
    Registriert seit
    19.10.2010
    Beiträge
    3

    Standard

    Mit einem
    Code:
    REVOKE USAGE ON SCHEMA student1 FROM public
    funktioniert es leider nicht, und da all meine Recherchen keine Möglichkeit ergaben, bin ich geneigt, ads Recht zu geben. Verbleibt mir die (unkomfortable) Option separater Datenbanken.

    Danke für eure Antworten.

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Ich weiß jetzt nicht, was da an der Administration komplizierter sein soll.

    Bei der Bedienung stimme ich dir zu: der Admin muss erst mal die Datenbank wechseln, bevor er Objekte eines Nutzers einsehen kann.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    Akita ist offline Neuer Benutzer
    Registriert seit
    19.10.2010
    Beiträge
    3

    Standard

    "Komplizierter" würde ich es auch nicht nennen, nur eben unkomfortabler, aufwändiger.

    Die Studenten sollen unter anderem Views bzgl. gemeinsam genutzer Daten speichern. Mit einem Schema pro Student und thematisch sortierten Schemata für die gemeinsamen Daten wären Abfragen wie
    Code:
    CREATE VIEW student1.v1 AS
       SELECT * FROM gemeinsames_schema1.tabelle1
    ja auch kein Problem. Wenn die Studenten allerdings eigene Datenbanken bekommen sollen, kann ich die gemeinsam genutzten Daten nicht analog in eine eigene Datenbank mit ihren thematischen Schemata auslagern. Denn PostgreSQL unterstützt in der eingesetzten Version 8.x keine Cross-Datenbank-Abfragen (und für die 9.0.1 habe ich noch nichts Gegenteiliges gefunden):
    Code:
    CREATE VIEW student1.public.v1 AS
       SELECT * FROM gemeinsame_datenbank.gemeinsames_schema1.tabelle1
    Deshalb habe ich (unkomfortabler- und aufwändigerweise) vor, die gemeinsam genutzten Daten in die jeweiligen Studenten-Datenbanken in entsprechende Schemata zu kopieren. Immerhin scheinen die gemeinsam genutzten Daten über den Verlauf der Lehrveranstaltung hinweg unverändert zu bleiben.

  7. #7
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Stimmt. Cross-Datenbank Anfragen sind nicht vorgesehen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #8
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Selbst wenn du die Rechte an Schema und Tabelle den anderen Benutzern entziehst, können diese immer noch die Struktur der Tabelle einsehen.
    Ich habe es nicht ausprobiert, aber was passiert denn, wenn man das SELECT Recht auf die entsprechende System Kataloge wegnimmt?
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  9. #9
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Ich habe es nicht ausprobiert, aber was passiert denn, wenn man das SELECT Recht auf die entsprechende System Kataloge wegnimmt?
    Das mag funktionieren (ungetestet), aber dann gehen natürlich auch solche Abfragen, die die eigenen Tabellen betreffen, nicht mehr.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 28.03.2012, 10:35
  2. SQL Abfrage PHP Schemata
    Von Wolfram im Forum SQL
    Antworten: 6
    Letzter Beitrag: 30.01.2012, 15:16
  3. Antworten: 2
    Letzter Beitrag: 20.01.2011, 08:22
  4. Spiegeln von Objekten
    Von Nils18 im Forum PostGIS
    Antworten: 1
    Letzter Beitrag: 10.12.2009, 08:47
  5. Antworten: 4
    Letzter Beitrag: 12.10.2007, 01:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum