Händler-Datenbank (SQL-Beispiel)/Identität: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Qualität
=Neue Seite anlegen=
|correctness        = 4
|extent              = 4
|numberOfReferences  = 4
|qualityOfReferences = 5
|conformance        = 5
}}
Die nachfolgenden Beispiele können beispielsweise mit [[SQLite]] oder [[PostgreSQL]] getestet werden.
Installieren Sie dazu die zugehörige [[Händler-Datenbank (SQL-Beispiel)|Händler-Datenbank]].


== Die Identität ==
Bevor man einen '''neuen Artikel''' anlegt, sollte man sich zunächst überlegen, ob der Inhalt wirklich ein eigenes Stichwort verdient oder ob er nicht sinnvoller in einem anderen Artikel untergebracht wird. Beispielsweise ist ein eigenständiger Artikel über den ''Unterschied zwischen Klassen und Typen'' wenig sinnvoll, im Artikel ''[[Klasse]]'' oder im Artikel ''[[Typ]]'' wäre der Inhalt aber vermutlich eine sinnvolle Ergänzung.
[[File:Relational_Algebra_Single_Table_Identity.svg|mini|200px|Die Identitätsfunktion verändert eine Tabelle nicht]]


Die Identitätsfunktion der [[Relationale Algebra#Identit.C3.A4t|Relationalen Algebra]] ist eine triviale Funktion:
Sollte nach diesem ersten gründlichen Nachdenken feststehen, dass ein eigener Artikel gerechtfertigt ist, so sucht man zunächst einen Artikel, zu dem die neu anzulegende Seite einen Bezug hat. In diesem Artikel trägt man in doppelten eckigen Klammern den Titel des neuen Artikels ein (hier bitte die [[Glossarwiki:Namenskonventionen|Namenskonventionen]] beachten) und speichert den Artikel. Den roten Link auf dieser Seite kann man jetzt anklicken und mit dem Schreiben des neuen Artikels beginnen.
Sie bildet eine Relation (Tabelle) auf sich selbst ab:


<div class="formula">
Wenn man beispielsweise einen Artikel über ''[[JAVA]]'' schreiben will, geht man zum Artikel ''[[Programmiersprache|Programmiersprachen]]'' (wenn dieser schon existiert), bearbeitet die Seite und fügt dort einen Satz ein wie: "''<nowiki>Eine weitere [[objektorientiert||objektorientierte]] Sprache ist [[JAVA]].</nowiki>''", speichert den Vorgänger-Artikel, klickt auf den neuen roten Link und - voilà! - spendet dem GlossarWiki eine excellente Beschreibung von JAVA.
<math>id: R \rightarrow R</math><br />
<math>id(r) = r</math>
</div>


Diese Funtion ist ''idempotent'':
==Nicht empfohlene Methoden==


<div class="formula">
Ein Artikel kann auch angelegt werden, indem man nach dem Begriff, zu dem die Seite noch fehlt, ins Suchfeld eintippt und auf ''Los'' klickt. Man erhält dann den Hinweis, dass diese Seite noch nicht existiert. Es wird dabei mit einem direkten Link angeboten, den Artikel neu anzulegen.
<math>id(id(r)) = id(r) = r</math>
</div>


== Beispiele bezüglich der [[Händler-Datenbank (SQL-Beispiel)|Händler-Datenbank]]==
Alternativ kann man die URL der neuen Seite in die Adresszeile des Browsers eingeben und "Return" drücken. Leerzeichen müssen aber durch Unterstriche ersetzt werden und der '''erste Buchstabe muss groß sein'''. Zum Beispiel kann man die URL
(Diese Beispiele wurden mit [[PostgreSQL]] und [[SQLite]] getestet.)
:<code>http://glossarwiki.fh-augsburg.de/wiki/index.php?title=Hauptseite</code>
durch:
:<code>http://glossarwiki.fh-augsburg.de/wiki/index.php?title=Name_der_neuen_Seite</code>
ersetzen und dann "Return" drücken.
Diese Methode eignet sich am besten für Seitennamen aus nur einem Wort.


In SQL ist es nicht möglich, auf den Inhalt einer benannten Tabelle zuzugreifen,
Beide Methoden sollten nur in Ausnahmefällen verwendet werden, da dadurch leicht [[Spezial:Lonelypages|verwaiste Artikel]] entstehen, die mit keiner anderen Seite verlinkt sind und nur über die interne Suche gefunden werden können (die aber unter Umständen abgeschaltet sein kann). Die Suche über Google muss versagen, da ja kein Link hinführt, über den der neue Artikel indiziert werden könnte. Wenn man einen Artikel auf diese Art angelegt hat, sollte man im Nachhinein den Artikel auf jeden Fall in anderen, thematisch passenden Artikeln verlinken.
indem man einfach den Namen der Tabelle angibt. Folgendes ist also keine korrekte
SQL-Anfrage:
<source lang="sql">
haendler
</source>


Um den Inhalt einer Tabelle auszugeben, benötigt man also eine Identitätsfunktion.
== Synonym ==
Diese gab es noch in SQL-92:<ref>{{Quelle|Date, Darwen (1993)}}, S. 126</ref>
Es kommt häufig vor, dass es zu einem Begriff zwei oder mehr gebräuchliche Namen gibt, die synonym verwendet werden. Diesen Fall kann man mit '''[[GlossarWiki:Redirect|Weiterleitungen]]''' lösen. Man muss nicht identischen Artikeltext unter verschiedenen Titeln mehrfach speichern.


<source lang="sql">
{| style="border:1px solid #8888aa; background-color:#f7f8ff;padding:5px;font-size:95%;"
TABLE haendler
|
</source>
Dieser Artikel basiert auf dem Artikel
[http://de.wikipedia.org/wiki/Wikipedia:Neue_Seite_anlegen Neue Seite anlegen] aus der freien Enzyklopädie [http://de.wikipedia.org Wikipedia].
|}


Dieser Befehl wird beispielsweise von [[PostgreSQL]] unterstützt (nicht aber von [[SQLite]]).
[[Kategorie:GlossarWiki]]
In SQL-99 (und in den meisten SQL-[[Datenbank-Management-System]]en) gibt es diese Funktion allerdings nicht mehr.<ref>{{Quelle|Gulutzan, P.; Pelzer, T. (1999): SQL-99 complete}}</ref> Als Identitätsfunktion kommt hier
<code>SELECT * FROM</code> zum Einsatz:
 
<source lang="sql">
SELECT * FROM haendler
</source>
 
Das zuvor formulierte Idempozenz-Gesetz gilt auch in SQL, wenn auch mit der zuvor genannten Einschränkung, dass
es sich bei der direkten Angabe eines Tabellennamens um keinen korrekten SQL-Befehl handelt:
 
<source lang="sql">
SELECT * FROM (SELECT * FROM haendler)
=   
SELECT * FROM haendler
=
TABLE haendler /* SQL-92, aber nicht SQL-99 */
=
haendler /* kein SQL*/
</source>
 
'''Anmerkung 1'''<br/>
In PostgreSQL läuft – im Gegensatz zu SQLite – die erste der drei obigen Anfrage auf einen Fehler, da hier
[[Unterabfrage]]n stets benannt werden müssen.
In PostgreSQL muss man die erste Select-Anweisung daher folgendermaßen schreiben:
 
<source lang="sql">
SELECT * FROM (SELECT * FROM haendler) AS dummy
</source>
 
'''Anmerkung 2'''<br/>
Die Selektion <code>SELECT * FROM</code> sollte man i. Allg. nur für Ad-hoc-Anfragen
in Tools wie [[phpPgAdmin]] oder [[pgAdmin III]] verwenden. In Programmcode sollte
man darauf verzichten und besser alle Attribute explizit aufführen. Das heißt,
an Stelle von
 
<source lang="sql">
SELECT * FROM haendler
</source>
 
sollte man
 
<source lang="sql">
SELECT h_id, h_name, h_adresse FROM haendler
</source>
 
schreiben. Der Grund ist, dass die <code>SELECT-*-</code>Anfrage ihre Bedeutung ändert,
wenn sich das Schema der Datenbank ändert, wenn also z.B. ein weiteres Attribut zur Tabelle
<code>haendler</code> hinzugefügt wird (vgl. die Tabelle <code>haendler</code> in
[[Händler-Datenbank (SQL-Beispiel)|Händler-Datenbank]]). Das heißt, aufgrund einer Schema-Änderung
könnte sich ungewollt das Verhalten eines Programms ändern. Zum Beispiel könnte eine Tabelle,
die das Ergbnis einer Select-Anfrage ausgibt, plötzlich mehr Spalten als geplant enthalten.
Darüber hinaus ist die Attribut-Reihenfolge bei <code>SELECT-*-</code>Anfragen nicht
festgelegt. Auch diese kann sich plötzlich unerwartet ändern – zum Beispiel nach einer Modifikation der [[Domäne]] eines der [[Attribut]]e,
wie {{zB}} der Änderung der Anzahl der erlaubten Zeichen der Domäne des
Attributs <code>h_adresse</code> (beispielsweise <code>VARCHAR(50)</code> →  <code>VARCHAR(100)</code>).
 
==Quellen==
<references/>
<ol start="3">
<li>{{Quelle|Kowarschick, W. (MMDB-Skript): Skriptum zur Vorlesung Multimedia-Datenbanksysteme}}</li>
<li>{{Quelle|Kowarschick, W.: Multimedia-Datenbanksysteme}}, http://mmdb.hs-augsburg.de/beispiel/haendler/</li>
</ol>
[[Kategorie:PostgreSQL-Beispiel]]
[[Kategorie:Praktikum:MMDB]]
 
==Siehe auch==
* [[Händler-Datenbank (SQL-Beispiel)]]
* [[Händler-Datenbank (SQL-Beispiel)/Projektion]]
* [[Händler2-Datenbank (SQL-Beispiel)]]

Version vom 14. April 2019, 17:22 Uhr

Neue Seite anlegen

Bevor man einen neuen Artikel anlegt, sollte man sich zunächst überlegen, ob der Inhalt wirklich ein eigenes Stichwort verdient oder ob er nicht sinnvoller in einem anderen Artikel untergebracht wird. Beispielsweise ist ein eigenständiger Artikel über den Unterschied zwischen Klassen und Typen wenig sinnvoll, im Artikel Klasse oder im Artikel Typ wäre der Inhalt aber vermutlich eine sinnvolle Ergänzung.

Sollte nach diesem ersten gründlichen Nachdenken feststehen, dass ein eigener Artikel gerechtfertigt ist, so sucht man zunächst einen Artikel, zu dem die neu anzulegende Seite einen Bezug hat. In diesem Artikel trägt man in doppelten eckigen Klammern den Titel des neuen Artikels ein (hier bitte die Namenskonventionen beachten) und speichert den Artikel. Den roten Link auf dieser Seite kann man jetzt anklicken und mit dem Schreiben des neuen Artikels beginnen.

Wenn man beispielsweise einen Artikel über JAVA schreiben will, geht man zum Artikel Programmiersprachen (wenn dieser schon existiert), bearbeitet die Seite und fügt dort einen Satz ein wie: "Eine weitere [[objektorientiert||objektorientierte]] Sprache ist [[JAVA]].", speichert den Vorgänger-Artikel, klickt auf den neuen roten Link und - voilà! - spendet dem GlossarWiki eine excellente Beschreibung von JAVA.

Nicht empfohlene Methoden

Ein Artikel kann auch angelegt werden, indem man nach dem Begriff, zu dem die Seite noch fehlt, ins Suchfeld eintippt und auf Los klickt. Man erhält dann den Hinweis, dass diese Seite noch nicht existiert. Es wird dabei mit einem direkten Link angeboten, den Artikel neu anzulegen.

Alternativ kann man die URL der neuen Seite in die Adresszeile des Browsers eingeben und "Return" drücken. Leerzeichen müssen aber durch Unterstriche ersetzt werden und der erste Buchstabe muss groß sein. Zum Beispiel kann man die URL

http://glossarwiki.fh-augsburg.de/wiki/index.php?title=Hauptseite

durch:

http://glossarwiki.fh-augsburg.de/wiki/index.php?title=Name_der_neuen_Seite

ersetzen und dann "Return" drücken. Diese Methode eignet sich am besten für Seitennamen aus nur einem Wort.

Beide Methoden sollten nur in Ausnahmefällen verwendet werden, da dadurch leicht verwaiste Artikel entstehen, die mit keiner anderen Seite verlinkt sind und nur über die interne Suche gefunden werden können (die aber unter Umständen abgeschaltet sein kann). Die Suche über Google muss versagen, da ja kein Link hinführt, über den der neue Artikel indiziert werden könnte. Wenn man einen Artikel auf diese Art angelegt hat, sollte man im Nachhinein den Artikel auf jeden Fall in anderen, thematisch passenden Artikeln verlinken.

Synonym

Es kommt häufig vor, dass es zu einem Begriff zwei oder mehr gebräuchliche Namen gibt, die synonym verwendet werden. Diesen Fall kann man mit Weiterleitungen lösen. Man muss nicht identischen Artikeltext unter verschiedenen Titeln mehrfach speichern.

Dieser Artikel basiert auf dem Artikel Neue Seite anlegen aus der freien Enzyklopädie Wikipedia.