Webbasierte Adressdatenbank

Was ist eine Datenbank

<Zitat: Duden Informatik>
System zur Beschreibung, Speicherung und Wiedergewinnung von umfangreichen Datenmengen, die von mehreren Anendungsprogrammen benutzt werden.
<Zitat Ende>

Üblicherweise hat man eine Datenbasis (da stehen die eigentlichen Daten) und Verwaltungsprogramme (DBMS Datenbank Magement System), mit denen man die Daten auslesen und veränderen kann. Dabei dient das DBMS als Schnittstelle zwischen Daten und Anwendung. Das DBMS übernimmt dabei auch die Aufsicht, welche Datensätze gerade von einer Anwendung bearbeitet werden und deshalb für andere Anwendungen gesperrt sein müssen (entspricht dem File Locking). Dies läßt sich sogar auf eine ganze Gruppe von Datensätzen und, oder eine Gruppe von Aktionen ausdehnen, man spricht dann von Transaktionen. Die Datenbasis kann aus mehreren Tabellen bestehen, die über sogenante Relationen miteinader verknüpft sind. Dann spricht man von relationalen Datenbanken. Nehmen wir mal an wir hätten die Daten einer Firma zu verwalten. Diese Firma hat Kunden, welche hoffentlich von Zeit zu Zeit das eine oder andere Produkt bestellen. Dafür müssen Rechnungen erstellt werden. Sehr sinvoll ist es nun, nicht alle Daten in einer Tabelle abzuspeichern, sondern z.B. die Kundenanschriften mit ihrer Kundennummer in einer Tabelle, die Rechnungen in einer anderen Tabelle. Um jetzt die Zuoordnung (Realation) Kunde -> Rechnung zu erhalten speichert man in der Rechnungsdatei einfach noch die zugehörige Kundennummer ab. Damit sind keine Redundanzen (sich wiederholende Tabellenspalten) in der Datenbank vorhanden, man spricht dann von der ersten Normalform.

SQL
Unter SQL (structured query language) versteht man eine weit verbreitete Sprache zur Definition und Manipulation relationaler Datenbanken. Diese Sprache lehnt sich stärker an die menschliche Sprache an, als an eine abstrakte Programmiersprache. Hier wollen wir nur die für unsere Adressdatenbank notwendigen Befehle anschauen. Um eine Tabelle für unsere Adressdatenbank zu erzeugen können wir den  CREATE  Befehl verwenden. Dazu müssen wir dem DBMS noch mitteilen, was wir erzeugen wollen, nähmlich eine Tabelle, und die dazugehörigen Spalten:

    CREATE TABLE adressbook (id INT NOT NULL, 
                             name CHAR(40), 
                             email CHAR(40))
    

Erzeugt eine Tabelle mit dem Namen  adressbook  und den Spalten  id , welche eine Ganze Zahl ( INT ) sein muß, aber nicht leer sein darf ( NOT NULL ) sowie die Spalten  name  und  email , welche beide einen String der Länge 40 aufnehmen können.

    +------------------------+
    |  adressbook            |
    +--------+---------------+
    | id     | INT  NOT NULL |
    | name   | char(40)      |
    | email  | char(40)      |
    +--------+---------------+
    

Nun möchten wir auch Daten in dieser Tabelle ablegen. Das wird mit dem Befehl  insert  erledigt:

    INSERT INTO adressbook (id, name, email), 
                VALUES (1, 'Teddybär', 'bär@teddy.net')
    INSERT INTO adressbook (id, name, email), 
                VALUES (2, 'Petzbär', 'petz@teddy.net')
    INSERT INTO adressbook (id, name, email), 
                VALUES (3, 'Teddy', 'teddy@bär.com')
    

erzeugt dann in etwa folgendes:

    +----+----------+----------------+
    | id | name     | email          |
    +----+----------+----------------+
    | 1  | Teddybär | bär@teddy.net  |
    | 2  | Petzbär  | petz@teddy.net |
    | 3  | Teddy    | teddy@bär.com  |  
    +----+----------+----------------+
    

Wollen wir nun einen Eintrag ändern erledigt dies  UPDATE 

    UPDATE addressbook SET id = 2, name='Petzybär', 
                           email='petzy@teddy.net' WHERE id = 2
    

Damit ändern wir den Eintrag, bei dem die id gleich der Nummer 2 ist mit den obengenannten Daten und erhalten:

    +----+-----------+-----------------+
    | id | name      | email           |
    +----+-----------+-----------------+
    | 1  | Teddybär  | bär@teddy.net   |
    | 2  | Petzybär  | petzy@teddy.net |
    | 3  | Teddy     | teddy@bär.com   |   
    +----+-----------+-----------------+
    

Um jetzt z.B. alle Einträge der Tabelle auszulesen, bei denen der Name "Teddy" enthält, wobei uns die id nicht interessiert kann man folgen SQL Befehl verwenden:

    SELECT name, email FROM adressbook WEHRE name LIKE 'Teddy%' 
                 ORDER by name
    

Damit wählen wir die Spalten  name  und  email  aus der Tabelle  adressbook  aus, wobei der Name mit  Teddy  beginnen soll. Gleichzeitig sortieren wir aufsteigend nach dem Namen. Wir erhalten also:

    +-----------+-----------------+
    | name      | email           |
    +-----------+-----------------+
    | Teddy     | teddy@bär.com   | 
    | Teddybär  | bär@teddy.net   |
    +-----------+-----------------+
    

Natürlich kann man auch Datensätze löschen:

    DELETE FROM addressbook WHERE id = 2
    

Löscht den Datensatz mit der id 2 aus der Tabelle:

    +----+-----------+-----------------+
    | id | name      | email           |
    +----+-----------+-----------------+
    | 1  | Teddybär  | bär@teddy.net   |
    | 3  | Teddy     | teddy@bär.com   |   
    +----+-----------+-----------------+
    

Leider sprechen nicht alle Datenbanken die gleiche Sprache. Es gibt unterschiedliche SQL Dialekte, näheres kann man aus der Dokumentation der benutzten Datenbank erfahren.

Literaturhinweise:

Zurück zum Anfang dieses Projekts.