Zum Inhalt springen

Benutzer:Julius-m

Aus Wikibooks

Bücher, an denen ich mitarbeite oder vor habe, daran mitzuarbeiten

[Bearbeiten]

Oracle und die Diskussion dazu: Diskussion:Oracle

Einführung in SQL und die Diskussion dazu: Diskussion:Einführung in SQL

PL/SQL

Bei Wikipedia bin ich auch aktiv: w:Benutzer:Julius-m

An folgenden Wikipedia-Artikeln habe ich mitgewirkt:

w:DB2

w:MySQL

w:Berkeley DB

w:Eingebettetes Datenbanksystem

Tools

[Bearbeiten]

Hilfe:Seite verschieben

Wikibooks:Löschkandidaten

Wikibooks:Ich brauche Hilfe#Übersicht über Änderungen an einem Buch

Über den Reiter Versionen/Autoren kann man sich immer nur die Änderungen an einem einzelnen Kapitel anzeigen lassen. Ich arbeite an dem Buch Oracle. Hier hat sich ein neuer Autor eingetragen und ich möchte gerne hin und wieder mal sehen, was der neue Auor oder auch andere an den Kapiteln dieses Buches geändert haben. Geht das nur so, dass ich mir die Versionen/Autoren jedes einzelnen Artikels ansehe oder geht das auch einfacher? Ich könnte ja auch jedes einzelne Kapitel auf meine Beobachtungsliste setzen, aber das müsste doch auch einfacher gehen. --Julius-m 21:43, 21. Jun. 2007 (CEST)

Im Hilfe:Wikibooks-Lehrbuch findest du im Abschnitt "Fortgeschrittene Themen" eine reißerische Überschrift "Nie wieder eine Änderung an deinem Buch oder einen Diskussionsbeitrag übersehen", die auf Hilfe:Wikibooks-Lehrbuch/ Navigation Übersicht zeigt. Wenn du nicht klarkommst, melde dich oder verbessere die Anleitung. -- Klaus 22:22, 21. Jun. 2007 (CEST)
Danke für den Hinweis. Die Übersicht über alle Änderungen an einem Buch krankt nicht an einer schlechten Anleitung, sondern an einer unzureichenden Technik. Ich habe nun alle Kapitel des Buches in meine Beobachtungsliste aufgenommen. Das scheint mir die einzige Möglichkeit zu sein, wie man mit wenigen Klicks eine Übersicht über die letzten Änderungen in einem Buch bekommt.
Bei 'Kontrolle der Veränderungen' - wie Du schon bemerkt hast, eine reißerische Überschrift - kann man sich aber gar nicht die Änderungen eines bestimmten Buches anzeigen lassen. Man kann sich die Liste alle geänderten Seiten anzeigen lassen, man kann die neuen Seiten oder die Seiten mit einem bestimmten Präfix anzeigen lassen. Wenn man sehen will, welche Kapitel geändert wurden, dann muss man alle Kapitel einzeln anklicken. Das ist ja richtig viel Arbeit. Oder habe ich da etwas übersehen?
Wenn ich wirklich nichts übersehen habe: Ich denke, dass das technisch relativ leicht möglich wäre, eine ähnliche Übersicht wie in der Beobachtungsliste zu generieren für alle Bücher mit einem Präfix. Vermutlich wäre dafür nur eine zusätzliche Abfrage erforderlich. Es müsste möglich sein, die Liste der letzten Änderungen auf die Seiten mit einem bestimmten Präfix einzuschränken. Dann hätte man eine wunderbare Übersicht. Das wär's, was ich suche. Ich bin mir sicher, dass nicht nur ich mich darüber freuen würde. --Julius-m 20:58, 25. Jun. 2007 (CEST)
Entweder verstehe ich dein Problem nicht, oder du hast möglicherweise die Anleitung nicht verstanden oder nicht ausprobiert. Ich benutze diese Methode seit langem. Da ich ohnehin auf "Letzte Änderungen" alle Edits durchsehe, weiß ich: Diese Methode funktioniert 100% einwandfrei. Ich klicke auf meiner Benutzerseite auf Computerhardware für Anfänger (alle Änderungen an Seiten und an Diskussionsseiten) und habe die perfekte Übersicht. Natürlich wäre es wundervoll, wenn die Entwickler die Wikimedia-Software verbessern würden. Das kannst du auf Meta beantragen. -- Klaus 21:45, 25. Jun. 2007 (CEST)

Textbausteine

[Bearbeiten]

Regal:Programmierung

Regal:EDV

Hilfe:Wikibooks Lehrbuch

Link zu einem Artikel im Wikipedia:

Wikipedia hat einen Artikel zum Thema:


w:Römische Zahlen

Römische Zahlen mit Kommentar


Link zu einer UID

Link zur Diskussionsseite eines Users


Noch eine Erklärung wie man zwischen den Projekten Linkt:

de.wikibooks -> de.wikipedia [[w:Benutzer:Julius-M]]

de.wikipedia -> de.wikibooks [[b:Benutzer:Julius-M]]

Du kannst auch spezielle Vorlagen verwenden, als Beispiel  Benutzer:Julius-M von hier nach Wikipedia oder {{Wikibooks|Benutzer:Julius-M}} von Wikipedia nach Wikibooks.

Wikibooks:Rundschau

Suche mit Google - Suchstring z.B.: "fremdschlüssel site:http://de.wikibooks.org"

[Bearbeiten]

hoch und vor


zurück hoch vor


zurück und hoch


nur hoch

    Inhaltsverzeichnis    



Navigation_zurückhochvor_buch


Navigation_zurückhoch_buch

Navigation_hochvor_buch


Einfüge- und Lösch-Reihenfolge bestimmen

[Bearbeiten]

Wenn die Tabellen in einer Datenbank mit Fremdschlüssel-Beziehungen verbunden sind, dann muss zum Befüllen der Tabellen eine bestimmte Reihenfolge eingehalten werden. Man muss mit den Tabellen beginnen, die keine Fremdschlüssel haben. Danach können die zu diesen Tabellen untergeordneten Tabellen befüllt werden und so weiter. Zum Löschen von Datensätzen muss - sofern nicht mit einer automatischen Lösch-Weitergabe gearbeitet wird - genau die umgekehrte Reihenfolge eingehalten werden.

Wenn Ring-Verkettungen vorkommen, dann müssen Tools zum initialen Befüllen verwendet werden oder es muss mit Sätzen begonnen werden, die null als Fremdschlüssel enthalten.

Bei großen Datenmodellen lohnt es sich, sich alle vorhandenen Tabellen in der Reihenfolge zu notieren, in der sie befüllt werden können.

Theoretisch handelt es sich hier um ein Problem der  topologischen Sortierung.


SQL-Statement zur Bestimmung der Einfüge-Reihenfolge bei Tabellen, die mit Fremdschlüssel verbunden sind. Voraussetzung ist, dass die Tabellen bereits erstellt sind, denn dann kann man aus dem Datenbank-Katalog die Beziehungen entnehmen.


Beispiel für DB2

[Bearbeiten]

(DB2 für zOS und DB2 für Linux, Unix, Windows)

SQL-Quelltext:

WITH rel(child, parent) AS
   (
      SELECT
         tbname    child
       , reftbname parent
        FROM sysibm.sysrels
       WHERE creator = 'P123'
         AND reftbcreator = 'P123'
   ) ,
ebenen ( level, tabelle) AS
   (
      SELECT 1, parent
        FROM rel
       WHERE parent NOT IN (SELECT child FROM rel)
       UNION ALL
      SELECT level+1, child
        FROM rel, ebenen
       WHERE ebenen.tabelle = rel.parent
         AND level < 100
   )
-- Ermitteln der Ebenen 1 bis 100
SELECT MAX(level) ebene, tabelle
FROM ebenen
GROUP BY tabelle
-- Hinzufügen der Tabellen aus Cycles mit mehr als einem Element
UNION ALL
SELECT DISTINCT 200 ebene, name tabelle
FROM sysibm.systables
WHERE creator = 'P123'
AND type = 'T'
AND name NOT IN (SELECT tabelle FROM ebenen)
AND name IN (SELECT parent FROM rel)
-- Hinzufügen aller anderen Tabellen ohne RI
UNION ALL
SELECT 300 ebene, name tabelle
FROM sysibm.systables
WHERE creator = 'P123'
AND type = 'T'
AND name NOT IN (SELECT parent FROM rel
           UNION SELECT child  FROM rel)
ORDER BY 1, 2
;

Beispiel für ORACLE

[Bearbeiten]

getestet mit Oracle Version 10g

with rel AS 
( 
-- rel start 
SELECT 
  child_c.table_name child 
, parent_c.table_name parent 
FROM  user_constraints child_c, user_constraints parent_c 
WHERE child_c.constraint_type = 'R' 
AND   child_c.r_constraint_name = parent_c.constraint_name 
-- rel ende 
) 
, ebenen as 
( 
-- ebenen start 
SELECT level+1 ebene, child tabelle 
FROM rel 
CONNECT BY PRIOR child = parent 
START WITH parent IN 
( 
SELECT parent 
FROM rel 
WHERE parent NOT IN (SELECT child FROM rel) 
) 
UNION 
-- Ebene 1 hinzufügen 
SELECT 1, parent 
FROM rel 
WHERE parent NOT IN (SELECT child FROM rel) 
UNION 
-- Ebene 100 für Cycle mit nur einem Element hinzufügen 
SELECT 100, parent 
FROM rel 
WHERE parent = child 
-- ebenen ende 
) 


-- Ermitteln der Ebenen 1 bis 100 
SELECT MAX(ebene) ebene, tabelle 
FROM ebenen 
GROUP BY tabelle 
-- Hinzufügen der Tabellen aus Cycles mit mehr als einem Element 
UNION ALL 
SELECT DISTINCT 200 ebene, table_name tabelle 
FROM user_tables 
WHERE table_name NOT IN (SELECT tabelle FROM ebenen) 
AND   table_name IN (SELECT parent FROM rel) 
-- Hinzufügen aller anderen Tabellen ohne RI 
UNION ALL 
SELECT 300 ebene, table_name tabelle 
FROM user_tables 
WHERE table_name NOT IN (SELECT parent FROM rel 
                   UNION SELECT  child FROM rel) 
ORDER BY 1, 2 
;

Erläuterung

[Bearbeiten]
  • Wenn man alle Tabellen befüllen will, dann muss man mit der Ebene 1 beginnen. Danach kommt die Ebene 2 dran und so weiter.
  • Auf Ebene 100 werden Cycle mit nur einem Element ausgegeben.
  • Auf Ebene 200 werden Cycle mit mehr als einem Element ausgegeben.
  • Auf Ebene 300 werden alle Tabellen ausgegeben, die überhaupt keine Beziehungen zu anderen Tabellen haben.

Diese Lösung für Oracle ist ziemlich inperformant. Sie funktioniert nur gut, wenn es sich um eine geringe Anzahl von Tabellen handelt. Wenn man es mit vielen von einander abhängigen Tabellen zu tun hat, dann wird die Performens besser, wenn man anstelle der Inline-Views richtige Tabellen definiert und durch geeignete Indices ergänzt.