<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>itseguide &#187; Software</title>
	<atom:link href="http://www.itse-guide.de/kategorie/software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.itse-guide.de</link>
	<description>Ein weiteres tolles WordPress-Blog</description>
	<lastBuildDate>Tue, 20 Sep 2011 02:55:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom:link rel='hub' href='http://www.itse-guide.de/?pushpress=hub'/>
		<item>
		<title>SQL Anweisungen &#8211; SELECT Abfragen aus einer Tabelle</title>
		<link>http://www.itse-guide.de/artikel/sql-select-aus-einer-tabelle</link>
		<comments>http://www.itse-guide.de/artikel/sql-select-aus-einer-tabelle#comments</comments>
		<pubDate>Wed, 03 May 2006 12:45:04 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=68</guid>
		<description><![CDATA[Dieser Artikel befasst sich mit SQL Abfragen aus einer Tabelle. Der Befehl SELECT kann dabei vielfältig eingesetzt werden.]]></description>
			<content:encoded><![CDATA[<p>Mit den SELECT Anweisungen und den möglichen Bedingungen ist es möglich eine Vielzahl unterschiedlicher Abfragen zu gestalten. In diesem Artikel findest du einige grundlegende SQL SELECT Abfragen die immer wieder nützlich sind.<br />
<span id="more-68"></span></p>
<h2>Abfragen aus einer Tabelle</h2>
<ul>
<li>
Projektion (Auswahl von Feldern, Anzahl aller Datensätze)</p>
<pre>SELECT Feld1, Feld2, … (oder * für alle) FROM TabName;</pre>
</li>
<li>Sortierung der Datensätze
<p>Die Sortierung von Abfrageergebnissen findet immer am Ende statt.</p>
<pre>SELECT xxx FROM xxx ORDER BY Feld1 [ASC / DESC],…;</pre>
<p>Werden mehrere Sortierkriterien angegeben, so werden Sie von links nach rechts abgearbeitet. ASC (Aufsteigend) wird als Standartwert vorausgesetzt. Möglich ist auch DESC (Absteigend).
</li>
<li>Selektion (Auswahl von Datensätzen)
<pre>SELECT xxx FROM xxx WHERE Kriterien* ORDER BY xxx;</pre>
<pre>Kriterien: 	WHERE ORT IN („Rdbl“, „DD“)
WHERE BerNr BETWEEN 2 AND 6</pre>
</li>
<li>Erstellung berechneter Felder
<pre>SELECT Preis, Preis*1.16 AS Brutto FROM TabArtikel
WHERE xx ORDER BY xx;</pre>
<p>Bei AS handelt es sich um einen Aliasnamen, der in der Ergebnistabelle auftaucht.
</li>
<li>Berechnung in allen Datensätzen
<pre>
Aggregationsfunktionen:

COUNT ()	Ermittelt die Anzahl der Datensätze
AVG ()		Durchschnitt
MAX ()	Maximalwert
MIN ()		Minimalwert
SUM ()		Summe
</pre>
<p>Beispiel: SELECT SUM(Preis), COUNT(ArtNr.) AS Anzahl FROM TabArtikel;</p>
<p>ABER NICHT: SELECT SUM(Preis), ArtNr FROM TabArtikel;<br />
WHERE -> Datensätze werden vor der Berechnung ausgeblendet.</p>
<ul>
<li>Count (*) ? Anzahl Datensätze der Tabelle</li>
<li>Count (Feld) ? Anzahl der Datensätze, die nicht NULL sind (nicht leer)</li>
</ul>
</li>
<li>Berechnung in Gruppen von Datensätzen
<p>Gruppierung in einem Feld:</p>
<p>Datensätze mit identischem Inhalt in diesem Feld, werden zu einer Gruppe zusammengefasst.</p>
<p>Die Aggregationsfunktion rechnet pro Gruppe.</p>
<pre>SELECT SUM (Teilsumme) AS Gesamt FROM TabUmsatz
WHERE xxx GROUP BY KuNr;</pre>
<pre>HAVING -> Ergebnisse ausblenden nach der Berechnung</pre>
<pre>SELECT SUM (Teilsumme) AS Gesamt FROM TabUmsatz
WHERE xxx GROUP BY KuNr HAVING SUM(Teilsumme) > 23;</pre>
<p>Nicht mit Alias, das Ergebnis muss neu berechnet werden.</p>
</li>
<h2>Definition eines Views</h2>
<pre>CREATE VIEW ViewName AS (SELECT)</pre>
<p>Ein VIEW ist eine Art Synonym für eine komplette SELECT-Anfrage bzw. eine bereits gefilterte Tabelle. (SELECT) wird durch eine SELECT-Anfrage ersetzt. Von dieser virtuellen Tabelle lassen sich erneut Daten per SELECT abfragen:</p>
<pre>SELECT * FROM ViewName</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/sql-select-aus-einer-tabelle/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Anweisungen &#8211; DML</title>
		<link>http://www.itse-guide.de/artikel/sql-anweisungen-dml</link>
		<comments>http://www.itse-guide.de/artikel/sql-anweisungen-dml#comments</comments>
		<pubDate>Wed, 03 May 2006 12:27:58 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=67</guid>
		<description><![CDATA[DML Steht für Data Manipulation Language. Diese möglicht Daten zu manipulieren, einzufügen und zu ändern, sowie Abfragen zu erzeugen.]]></description>
			<content:encoded><![CDATA[<p>DML Steht für Data Manipulation Language. Mit den SQL Anweisungen dieser Gruppe können Daten manipuliert, eingefügt , geändert, sowie Abfragen zu erzeugt werden. Die wichtigsten Manipulations-Anweisungen findest du in diesem Beitrag.<br />
<span id="more-67"></span></p>
<h2>Einfügen von Daten in eine Tabelle</h2>
<pre>INSERT INTO TabName(Feld1, Feld2,…..) VALUES(Wert1, Wert2,…..);</pre>
<p>Sollten in der Tabelle Autowerte wie zum Beispiel eine fortlaufende ID oder ein Zeitstempel vorhanden sein, müssen diese Werte frei gelassen werden.</p>
<p>Texte sowie Uhrzeiten, bzw. ein Datum müssen mit Abostrofen umschlossen sein. Alle anderen Werte wie true oder false sowie Zahlen und der Füllwert NULL werden ohne Anführungszeichen in VALUES geschrieben.</p>
<pre>
„Text“
„Datum“
true / false
3.43
NULL
</pre>
<h2>Löschen von Datensätzen</h2>
<pre>DELETE FROM TabName WHERE Kriterien;</pre>
<blockquote><p>Kriterien können sein:
<pre>Logische oder arithmetische Ausdrücke
Feld > 20 ,  Feld = 34 ,  Feld LIKE „Schmidt“</pre>
</blockquote>
<p>Dabei ist zu beachten, das Textvergleiche immer mit LIKE und Zahlenvergleiche mit = anzuwenden sind.</p>
<pre>AND, OR, NOT
Feld IN („xx“, „xxx“,…)
Feld BETWEEN 3 AND 9
</pre>
<p>Diese Befehle können die WHERE Abfrage beeinflussen. Je nach Anforderung können verschiedenste Bedingungen  erzeugt werden.</p>
<h2>Ändern in Datensätzen</h2>
<pre>UPDATE TabName SET Feld = neuerWert WHERE Kriterien;</pre>
<p>Mit UPDATE wird ein Datenwert nachträglich geändert. Sollte sich Beispielsweise die Postleitzahl eines Kunden ändern müsste der Befehl wie folgt lauten:</p>
<pre>UPDATE kunden SET plz = 01445 WHERE kundennummer = 33;</pre>
<h2>Abfragen mit SELECT</h2>
<p>Der SELECT Befehl gehört ebenfalls in die Kategorie Datenmanipulation, wird aber in gesonderten Artikeln behandelt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/sql-anweisungen-dml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Anweisungen &#8211; DDL</title>
		<link>http://www.itse-guide.de/artikel/sql-anweisungen-ddl</link>
		<comments>http://www.itse-guide.de/artikel/sql-anweisungen-ddl#comments</comments>
		<pubDate>Tue, 02 May 2006 18:36:41 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=65</guid>
		<description><![CDATA[DDL Steht für Data Definition Language. Diese ermöglicht das erstellen, ändern und löschen von Datenbanken und Datenbankstrukturen.]]></description>
			<content:encoded><![CDATA[<p>DDL Steht für <em>Data Definition Language</em>. Mit den SQL Anweisungen dieser Gruppe können Datenbanken sowie Datenbankstrukturen erstellt, geändert und gelöscht werden. Wie du die SQL Befehle CREATE, DROP und ALTER richtig anwendest, erfährst du hier.<br />
<span id="more-65"></span></p>
<h2>Erstellung einer Datenbank</h2>
<pre>CREATE DATABASE DbName;</pre>
<p>Mit diesem Befehl wir eine neue, leere Datenbank angelegt. In dieser werden später Tabellen und schließlich Daten abgelegt.</p>
<h2>Erstellung von Tabellenstrukturen</h2>
<pre>CREATE TABLE TabName(Feld1 Typ,a, Feld2 Typ,……b)</pre>
<p>Bei der Definition des Primärschlüssels (Tabellenimplizit) gibt es einige Besonderheiten zu beachten.</p>
<blockquote><p>
a)
<pre>CONSTRAINT ConName PRIMARY KEY</pre>
<p>Bei dieser Variante wird direkt hinter dem Primärschlüssel-Feld dieses als solches deklariert.
</p></blockquote>
<blockquote><p>b)
<pre>,CONSTRAINT ConName PRIMARY KEY (Feld1, Feld2)</pre>
<p>Es ist aber auch möglich am Ende der SQL Anweisung ein oder mehrere Primärschlüsselfeld(er) festzulegen.</p></blockquote>
<h2>Definition von Indizes</h2>
<pre>CREATE [UNIQUE] INDEX IndName ON TabName(Feld,…) [WITH PRIMARY]</pre>
<p>Bei der Anweisung UNIQUE müssen alle Werte eindeutig sein. Daher sind keine identischen Datenfelder in der jeweiligen Spalte möglich.</p>
<h2>Löschen</h2>
<pre>DROP TABLE TabName;</pre>
<p>Mit dem Befehl DROP TABLE wird eine Tabelle unwiderruflich gelöscht. Alle enthaltenen Daten gehen verloren.</p>
<pre>DROP IndName ON TabName;</pre>
<p>Mit Hilfe dieser Anweisung löscht man einen vorher angelegten Index.</p>
<h2>Veränderung von Tabellenstrukturen</h2>
<pre>ALTER TABLE TabName …</pre>
<p>Es ist möglich eine bereits existierende Tabellenstruktur im Nachhinein zu verändern. Dazu wird der Befehl ALTER TABLE benötigt. Dazu muss angegeben werde, in welcher Art man die Tabelle ändern möchte. Folgende Befehle stehen zur Auswahl:</p>
<pre>
… ADD [COLUMN] Feld Typ;
… DROP [COLUMN] Feld;
… ALTER (MODIFY) [COLUMN] Feld TypNeu;
… ADD CONSTRAINT ConName;
… DROP CONSTRAINT ConName;
</pre>
<p>Je nachdem ob eine Spalte hinzugefügt (ADD), gelöscht (DROP) oder geändert (ALTER) werden soll muss die entsprechende Anweisung geschrieben werden. Ebenso können Constraints wie PRIMARY KEY oder UNIQUE nachträglich hinzugefügt (ADD CONSTRAINT) oder gelöscht (DROP CONSTRAINT) werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/sql-anweisungen-ddl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbank Normalisierung</title>
		<link>http://www.itse-guide.de/artikel/datenbank-normalisierung</link>
		<comments>http://www.itse-guide.de/artikel/datenbank-normalisierung#comments</comments>
		<pubDate>Fri, 30 Jul 2004 09:26:51 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=57</guid>
		<description><![CDATA[Die Normalisierung ist das ideale Werkzeug für die Erstellung einer sauberen Datenbankstruktur.]]></description>
			<content:encoded><![CDATA[<p>Mit den Methoden der Normalisierung ist es möglich, ein redundanzfreies relationales Modell aus einer Objektsammlung zu erstellen. Hält man diese Regeln ein, ist eine spätere Erweiterung der Datenbank ohne Schwierigkeiten möglich. Welche Normalformen es gib, erfährst du in diesem Beitrag.<br />
<span id="more-57"></span></p>
<p>Zielsetzung der Normalisierung ist, das jedes Datenfeld nur einmal vorhanden ist. Dadurch werden Redundanzen beseitigt und die Datenkonsistenz bleibt erhalten. Auch sollen alle Abhängigkeiten zwischen den Spalten einer Tabelle beseitigt werden um eine einfache Erweiterung der Datenbank jederzeit gewährleisten zu können.</p>
<h2>1. Normalform</h2>
<p>Die erste Normalform besagt, dass jede Tabelle eine feste Breite besitzt. Jeder Datensatz hat somit die gleiche Anzahl an Attributen. Zudem muss jedes Attribut atomar, also allein stehend, sein. Dieser Zustand wird erreicht, in dem man den Datensatz in mehrere Tabellen aufteilt bzw. dupliziert.</p>
<p>Jedes Datenfeld darf nur einen Wert enthalten. Anschrift: „Dresdner Str. 15 01574 Nirgendsdorf“ ist also laut Definition unzulässig und muss in Strasse, Hausnummer. PLZ und Ort aufgeteilt werden um die erste Normalform herzustellen.</p>
<h2>2. Normalform</h2>
<p>Bevor man sich der zweiten Normalform widmet muss die erste erfüllt sein, dies ist Bedingung!
<p />
<p>Jede Tabelle enthält nur Daten eines Themengebiets. Sollte dies nicht der Fall sein, müssen die Daten wie in der ersten Normalform weiter aufgeteilt werden.</p>
<p>Jeder Datensatz ist durch einen Primärschlüssel eindeutig identifizierbar. Es muss also für jede Tabelle ein Attribut gefunden werden, dass einmalig ist. Beispiel wäre eine Kundennummer oder eine ISBN-Nummer. Sollte es keine redundanzfreien Werte geben muss eine künstliche Spalte erstellt werden. Beliebt ist in diesem Zusammenhang eine ID-Spalte. </p>
<h2>3. Normalform</h2>
<p>Es muss erst die vorangegangene zweite Normalform erfüllt sein bevor die dritte in Kraft treten kann.</p>
<p>Alle Datenfelder dürfen nur vom Primärschlüssel abhängen. Es darf daher keine so genannten transitiven (kettenartige) Abhängigkeiten geben. Eine transitive Abhängigkeit besteht immer dann, wenn ein Attribut über ein anderes Attribut (also nicht direkt) vom Primärschlüssel abhängig ist. </p>
<h2>Falsche Normalisierung</h2>
<p>Sollten die Normalisierungsschritte nicht richtig oder in der richtigen Reihenfolge ausgeführt worden sein, kann es zu Mutationsanomalien kommen. An folgendem Beispiel sind die drei üblichsten Anomalien veranschaulicht:</p>
<table border=1>
<tr>
<td>ArtNr</td>
<td>Bezeichnung</td>
<td>Kategorie</td>
</tr>
<tr>
<td colspan="3" height="5">&nbsp;</td>
</tr>
<tr>
<td>1</td>
<td>Pizza Salami</td>
<td>Pizza</td>
</tr>
<tr>
<td>2</td>
<td>Pizza Bolognese</td>
<td>Pizza</td>
</tr>
<tr>
<td>3</td>
<td>Käsecracker</td>
<td>Snacks</td>
</tr>
</table>
<p><strong>Änderungs-Anomalie:</strong></p>
<p>Beim ändern der Kategorie „Pizza“ in „Steinofenpizza“ könnte vergessen werden die Bezeichnung bei allen betroffenen Artikeln umzuschreiben. Bzw. könnten Schreibfehler auftreten und so zu Verwirrung und Datendurcheinander führen.</p>
<p><em>Löschanomalie:</em><br />
Wenn angenommener Weise die &#8220;Käsecracker&#8221; der letzte Artikel in der Kategorie &#8220;Snacks&#8221; wären und man jenen Artikel löscht würde im gleichen Zug die Kategorie verschwinden. Es ist in unserem Beispiel also nicht möglich den Artikel zu Löschen ohne die Kategorie zu vernichten.</p>
<p><em>Einfügeanomalie:</em><br />
Im Beispiel oben ist es nicht Möglich eine Kategorie hinzuzufügen ohne einen Artikel einzufügen.</p>
<p><em>Lösung für Einfügeanomalie:</em><br />
In diesem Fall müsste es eine separate Tabelle &#8220;Kategorie&#8221; geben, deren Primärschlüssel als Fremdschlüssel in der Tabelle &#8220;Artikel“ auftaucht.</p>
<table border=0>
<tr>
<td>
<table border=1 style="float: right;">
<tr>
<td>ArtNr</td>
<td>Bezeichnung</td>
<td>Kategorie</td>
</tr>
<tr>
<td colspan="3" height="5">&nbsp;</td>
</tr>
<tr>
<td>1</td>
<td>Pizza Salami</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>Pizza Bolognese</td>
<td>1</td>
</tr>
<tr>
<td>3</td>
<td>Käsecracker</td>
<td>2</td>
</tr>
</table>
</td>
<td width="20"></td>
<td>
<table border=1>
<tr>
<td>KategorieNr.</td>
<td>Bezeichnung</td>
</tr>
<tr>
<td colspan="2" height="5">&nbsp;</td>
</tr>
<tr>
<td>1</td>
<td>Pizza</td>
</tr>
<tr>
<td>2</td>
<td>Snacks</td>
</tr>
</table>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/datenbank-normalisierung/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQL &#8211; Überblick und Grundlagen</title>
		<link>http://www.itse-guide.de/artikel/sql-grundlagen</link>
		<comments>http://www.itse-guide.de/artikel/sql-grundlagen#comments</comments>
		<pubDate>Thu, 29 Jul 2004 18:54:00 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=56</guid>
		<description><![CDATA[Dieser Artikel erklärt was SQL ist und welche Unterschiede es gibt.]]></description>
			<content:encoded><![CDATA[<p>Die Datenbanksprache <em>Structured Query Language</em> kurz SQL ist eine Datenorientierte Beschreibungssprache. Es werden also nicht wie bei herkömmlichen Programmiersprachen (C++, PHP) Prozeduren sondern Abfragen erstellt. Die Syntax von SQL ist ziemlich einfach gehalten und schnelle zu erlernen.<br />
<span id="more-56"></span></p>
<p>SQL wird in drei Sprachbereiche unterteilt: Die DML (Data Manipulation Language) stellt Sprachelemente zur Datenmanipulation und Abfrage zur Verfügung. Die DDL (Data Definition Language) wird zum Einfügen, Ändern und Löschen von Daten verwendet. Und die DCL (Data Control Language) wird zur Vergabe von Rechten benötigt.</p>
<h2>Historie</h2>
<p>SQL ist die älteste Abfragesprache für relationale Datenbanken. Sie wird noch immer weiterentwickelt.</p>
<ul>
<li>1968 erstes hierarchisches Modell / IMS von IBM</li>
<li>1971 erste Datenbanken mit Netzwerkmodell / Standardisierungsversuche</li>
<li>1974 erstes relationales DBS der Welt / Abfragesprache SEQUEL</li>
<li>1986 SQL1 Standart (ANSI-/ISO-Standardisiert)</li>
<li>1992 SQL2 (heute noch gültiger Standard)</li>
<li>1999	SQL:1999 / SQL3</li>
<li>2003	SQL:2003</li>
<li>2006	SQL:2006</li>
<li>2008	SQL:2008</li>
</ul>
<p>Die Abfragesprache SQL hat sich zum Quasi-Standard entwickelt und wird in allen gängigen Datenbank-Systemen eingesetzt. Die Hersteller von Datenbanksoftware fügen meist noch eigene Erweiterungen an die SQL-Spezifikationen an.</p>
<h2>Variationen</h2>
<p>Da vielen Datenbankentwicklern die gewohnten Prozedurahlen Funktionen fehlten gab es einige Versuche SQL mit Programmiersprachen zu kreuzen:</p>
<p><em>Erweiterung prozeduraler Sprachen</em></p>
<p>Es gab Versuche diverse Programmsprachen mit eigenen Datenbankfunktionen auszustatten. Beispielsweise gab es PASCAL/R oder auch MODULA/R. Jedoch hat sich diese Form nicht durchsetzen können und wurde nicht weiter entwickelt.</p>
<p><em>Embedded SQL</em></p>
<p>Nachdem sich Eigenentwickelte Datenbankfunktionen nicht durchsetzen konnten, wurde das so genannte Embedded SQL, also das Eingebettete, entwickelt. Dabei wird ein bestimmter Bereich im Quellcode definiert, in dem reines SQL geschrieben werden kann. Diese Methode findet heute noch Verwendung in Sprachen wie PHP oder PERL.</p>
<h2>SQL Dialekt</h2>
<p>Es gibt inzwischen unzählige Formen von SQL Implementationen. Etliche übernehmen die ursprüngliche Syntax nur teilweise und modifizieren den Funktionsumfang. Zum Teil kommen auch SQL Erweiterungen mit prodzeduralen Elementen vor (z.B. Transact SQL im Microsoft SQL Server, PSQL oder auch MySQL).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/sql-grundlagen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schlüsselsysteme und Indizierung</title>
		<link>http://www.itse-guide.de/artikel/schluesselsysteme-indizierung</link>
		<comments>http://www.itse-guide.de/artikel/schluesselsysteme-indizierung#comments</comments>
		<pubDate>Sun, 13 Jun 2004 17:07:15 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.itse-guide.de/wp/?p=47</guid>
		<description><![CDATA[Um Datensätze eindeutig identifizieren,  und Beziehungen herstellen zu können, werden Schlüssel festgelegt.]]></description>
			<content:encoded><![CDATA[<p>Ein Schlüssel ist ein Attribut oder ein Kombination aus Attributen um einen Tupel (also einen Datensatz) eindeutig identifizieren zu können. Gibt es mehrere Attributkombinationen, die als potentieller Schlüssel in Frage kommen, werden Diese als Schlüsselkandidaten bezeichnet. Mehr Infos zu Datenbank Schlüsselsystemen erfährst du hier.<br />
<span id="more-47"></span></p>
<p>Um einzelne Datensätze exakt ansprechen zu können, müssen Sie durch einen einmaligen Wert identifizierbar sein. Dies wird mit dem Primärschlüssel realisiert.</p>
<h2>Primärschlüssel (eng. primary key)</h2>
<p>Zu beachten sind folgende Grundsätze:</p>
<p>- Der Primärschlüssel ist eindeutig. Ein Datensatz muss daher nach Angabe des Schlüsselmerkmals eindeutig bestimmbar sein.<br />
- Der Schlüssel sollte sich aus so wenigen Attributen wie möglich zusammensetzen. Er sollte daher minimal sein.</p>
<p>Ein Primärschlüssel kann ein realer Wert sein, zum Beispiel die ISBN-Nummer eines Buches, oder ein fiktiver Wert. In letzterem Fall nimmt man meistens eine fortlaufende Nummer: ID, Artikelnummer usw. Reale Werte werden auch als Embedded Key bezeichnet, wobei Schlüssel mit fiktiven Werten Not Embedded Key genannt werden.</p>
<p>Ein weiterer Faktor ist die Atributsanzahl des Primärschlüssels. Besteht er nur aus einer Nummer handelt es sich um einen Simple Key, sind jedoch mehrere Spalten zu einem Schlüssel zusammengefasst wird dies als Composed Key (Verbundsschlüssel) bezeichnet.</p>
<h2>Zusammenfassung</h2>
<table cellspacing=0>
<tr bgcolor="#E8E5DE">
<td>Embedded (eingebetteter) Key</td>
<td width=15></td>
<td>z.B. ISBN-Nummer</td>
</tr>
<tr bgcolor="#E1DBCF">
<td>Not Embedded Key</td>
<td width=15></td>
<td>z.B. Artikelnummer, ID</td>
</tr>
<tr>
<td height=10></td>
<td></td>
<td></td>
</tr>
<tr bgcolor="#E8E5DE">
<td>Simple Key</td>
<td width=15></td>
<td>einfach, besteht aus einer Spalte</td>
</tr>
<tr bgcolor="#E1DBCF">
<td>Composed Key</td>
<td width=15></td>
<td>Verbundschlüssel, besteht aus mehreren Spalten</td>
</tr>
</table>
<h2>Fremdschlüssel (eng. foreign key)</h2>
<p>Der Fremdschlüssel ist im Gegensatz zum Primärschlüssel nicht einmalig. Er wird benötigt um den Bezug von einem Datensatz zu einem weiteren Datensatz in einer anderen Tabelle herzustellen. Die wichtigste Regel lautet: Jeder Fremdschlüssel ist Primärschlüssel in anderer Tabelle. Wird dies eingehalten, so ist die referentielle Integrität erreicht.</p>
<p>Ein Fremdschlüssel kann eindeutig oder aber auch mehrdeutig sein.</p>
<h2>Index (Sekundarschlüssel)</h2>
<p>Ein weiterer Vorteil von Schlüsselfeldern ist die schnellere Auffindbarkeit des Datensatzes bei Suchläufen. Eine Suche nach der Personalnummer &#8220;112&#8243; ist daher wesentlich schneller als eine Suche nach &#8220;Herr Lukoschek&#8221;. Um die Suchanfrage bei Nichtschlüsselfeldern zu beschleunigen gibt es die Möglichkeit einen Index anzulegen. Die indizierten Felder werden Datenbankintern in einer Indextabelle sortiert und ermöglichen das schnellere Auffinden. Ein Nachteil dieser Methode ist die verlangsamte Dateneingabe, da für jeden neuen Datensatz die entsprechenden Werte in die Indextabelle geschrieben werden müssen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itse-guide.de/artikel/schluesselsysteme-indizierung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.itse-guide.de/kategorie/software/feed ) in 0.86810 seconds, on Feb 5th, 2012 at 1:31 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 5th, 2012 at 2:31 am UTC -->
