1 / 77

Relationale Datenbank MySQL

MYSQL. PERL. PHP. HTML. ActiveX. JavaScript. ASP. XML. Relationale Datenbank MySQL. Gliederung. 0. Einblick Datenbanken Einführung MySQL 2. Relationale Datenbank. Einblick Datenbanken. Momentan gängige Datenbanken: Oracle (32% Marktanteil) DB2 (33% Marktanteil)

posy
Télécharger la présentation

Relationale Datenbank MySQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MYSQL PERL PHP HTML ActiveX JavaScript ASP XML Relationale Datenbank MySQL

  2. Gliederung 0. Einblick Datenbanken • Einführung MySQL 2. Relationale Datenbank

  3. Einblick Datenbanken Momentan gängige Datenbanken: • Oracle (32% Marktanteil) • DB2 (33% Marktanteil) • MySQL (21 % Marktanteil) • SQL-Server (11% Marktanteil, von Microsoft)

  4. Dateiorgansation Datenbanken Einkauf Produktion Artikel Lieferanten Bestellungen Bestand Artikel Aufträge Stücklisten Arbeitspläne Hoher Bedarf an Kommunikation und Datenaustausch ReWe Vertrieb Kunden Forderungen Verbindlichkeiten Lieferanten Artikel Kunden Angebote Aufträge

  5. Was ist MySQL ? MySQL ist ein echter Multi-User, Multi-Treaded SQL Datenbank und wird von allen großen Providernoder auch Suchmaschinenbetreibern eingesetzt. MySQL ist eine CLient/Server Implentierung, bestehend auseinem Server-Dämon mysqldund vielen Client Programmen, sowie Bibliotheken für PERL, PHP/3,PHP/4, ASP. Die bedeutsamsten Vorteile von MySQLsind:  Geschwindigkeit,  Stabilität  einfache Bedienbarkeit. MySQL wurde ursprünglich entwickelt, weil auf TCX (dem Server der Entwickler) ein SQL Serverbenötigt wurde, der sehr große Datenbanken handeln konnte, und zwar um eine Größenordnungschneller, als die Datenbankhersteller damals liefern konnten. MySQList nun seit 1996 auf vielen Seiten im Einsatz.

  6. Begriffe • Eine Datenbank ist eine strukturierte Sammlung von Daten - Datenbasis • Aufbau, Verwaltung und Strukturierung werden von einem Datenbank-Management- System (DBMS) übernommen. • Die Abfrage erfolgt über spezielle Abfragesprachen, wie z.B. SQL (Structured Query Language) oder ODBC (Open DataBase Connectivity)

  7. ODBC • Open DataBase Connectivity, (ODBC), Ein Standard für den Zugriff auf verschiedene Datenbanksysteme. • ODBC hat Schnittstellen für Java, Visual Basic, C++, SQL • ODBC Treiberpaket beinhaltet Treiber für Access, Paradox, dBase, Excel and Btrieve • ODBC übersetzt Abfragen jeweils in die datenbankspezifische Sprache.

  8. ODBC Vorteile: • Datenbankunabhängige Entwicklung möglich • Zugriff auf entfernte Datenbanken Nachteile: • Langsam gegenüber nativen Zugriffen • Microsoft Fixiertheit • Notwendigkeit, eigene Treiber für die Datenbanken zu installieren und Datenbanken u.U. selbst eintragen zu müssen

  9. Datenbanktypen • hierarchischDaten werden in einer Baumstruktur gespeichert • objektorientiertbesitzt sämtliche Merkmale objektorientierter Programmierung, wie Klassen, Objekte, Vererbung usw

  10. Datenbanktypen • relational Daten werden in Tabellen gespeichert. Die Tabellen sind durch Beziehungen (relations) miteinander verknüpft. Dadurch ist es möglich, Daten aus mehreren Tabellen zu kombinieren bei Abfragen. Merkmale • Eine Relation zwischen zwei Tabellen entsteht dadurch, dass eine Tabelle ein Feld mit Primärschlüsselwerten einer anderen Tabelle enthält. • Relationen machen eine DB der Tabellenkalkulation(Tabelle) überlegen

  11. MySQL - Merkmale • MySQL ist ein Datenbank Management System für relationale Datenbanken. • Es ist in kompilierter Form und auch als Source-Code frei verfügbar. • Es läuft auf Windows und UNIX Servern • Installation und Administration ist relativ einfach • Es hat Programmierschnittstellen zu den wichtigsten Programmiersprachen: Java, C++, Perl, PHP …

  12. MySQL - Sicherheit • MySQL besitzt ein zuverlässige Sicherheitskonzept. Es basiert auf: • Benutzer • Passworte • Zugriffsrechte: Administrator kann Zugriffsrechte auf Datenbanken, Tabellen und einzelne Felder innerhalb der Tabelle für jeden einzelnen Benutzer festlegen

  13. MySQL - Datentypen MySQL kennt 27 Datentypen, u.a.: • INTEGERS (ganzzahlige Zahlen), • FLOAT, DOUBLE (Gleitkommazahlen) • DECIMAL (Festkommazahlen) • CHAR, VARCHAR (Zeichenketten) • TEXT, BLOB (Texte, Binärobjekte) • DATE, TIME, DATETIME (Datum) • TIMESTAMP, YEAR (Datum) • SET, and ENUM (Auswahl aus vorgegebenen Werten)

  14. Attribute für Tabellenspalten Attribute • beeinflussen die Eigenschaften von Tabellenspalten (=Datenfeldern) • Angabe von Attributen erfolgt bei der Spaltendeklaration in der CREATE-Anweisung (Tabellenerstellung) • Die Angabe ist optional Attribute für Datentypen Syntax der Spaltendeklaration: Spaltenname, Spaltentyp [NOT NULL|NULL] [DEFAULT Standardwert] ...

  15. Attribute für Datentypen

  16. Attribute für Datentypen

  17. Attribute für Datentypen

  18. Tabellenindizes • Indizes können für eine oder mehrere Tabellenspalten angelegt werden. • Indizes sind sinnvoll bei Spalten, die oft als Suchkriterium benutzt werden. • Sie beschleunigen Suchabfragen. • Indizes benötigen Speicherplatz und verlangsamen das Einfügen von neuen Datensätzen.

  19. Beziehung zwischen SQL und MySQL • SQL ist eine Programmiersprache. • MySQL ist ein RDBMS (relationales Datenbank-Management-System), das SQL benutzt, um Daten zu bearbeiten, zu erstellen und anzuzeigen.

  20. Relationale Datenbank • Tabelle • Feld • Eintrag • Schlüssel • Beziehung • Normalisierung

  21. Relationale Datenbank Ein Primärschlüssel ist ein eindeutiges Feld innerhalb der Tabelle. Kein anderer Datensatz in diesem Feld hat den gleichen Wert. Dies dient dazu, einen Datensatz von allen anderen Datensätzen in dieser Tabelle zu unterscheiden. Ein Fremdschlüssel repräsentiert den Wert des Primärschlüssel für eine verknüpfte Tabelle. Es dient als strukturelle Link, der die Beziehung zwischen verschiedenen Tabellen definiert.

  22. Relationale Datenbank Type der Beziehung • Eins-zu-eins (1:1) • Eine-zu-vielen (1:n) • Viel-zu-vielen (m:n)

  23. Relationale Datenbank Eins-zu-eins Beziehung Tabelle1 ... Datensatz Datensatz Datensatz ... Tabelle2 ... Datensatz Datensatz ... Kunde Kundennummer

  24. Relationale Datenbank Eine-zu-vielen Beziehung Tabelle1 ... Datensatz Datensatz Datensatz ... Tabelle2 ... Datensatz Datensatz Datensatz Datensatz ... Kunde Bestellung

  25. Relationale Datenbank Viele-zu-vielen Beziehung Tabelle1 ... Datensatz Datensatz Datensatz Datensatz ... Tabelle2 ... Datensatz Datensatz Datensatz Datensatz ... Bestellung Artikel

  26. Anlegen von Indexen und Tabellen Die MySQL-Anweisung zum Erzeugen von Tabellen lautet:CREATE TABLE tabelle ( spaltenname Datentyp [NOT NULL],...) Für jede Spalte sind Bezeichnung und Typ anzugeben, zusätzlich kann mit NOT NULL festgelegtwerden, daß die Spalte keine unbestimmten NULL-Werte beinhalten darf, was z.B. beiSchlüsselspalten erforderlich istCREATE INDEX (Index für Tabelle anlegen) Löschen von Indexen und TabellenLogische Objekte können vollständig (d.h. sowohl die Beschreibung als auch die beinhaltetenDaten!) aus einer Datenbank gelöscht werden. Für Tabellen und Indexen lauten die SQLAnweisungen:DROP TABLE DROP INDEX

  27. MySQL MySQL –Syntax • CREATE CREATE DATABASE Datenbankname CREATE TABLE Tabellenname • DROP DROP DATABASE Datenbankname DROP TABLE Tabellenname • INSERT INSERT INTO Tabellenname VALUES (Wert, Wert, Wert, ...) • UPDATE UPDATE Tabellenname SET Spaltenname = Wert WHERE x = y

  28. Abfragen von Tabellen • SELECT ist der wichtigste SQL Befehl. Jede Anfrage an eine Datenbank beginnt mit SELECT. Die Techniken zur Abfrage von Datenbanken werden auch zu deren Veränderung mit DELETE, INSERT und UPDATE verwendet. • Der SELCT Befehl kann auf eine oder mehrere Tabellen angewendet werden. Das Ergebnis der Suche ist wieder eine Tabelle. Die Auswahl der Spalten für die Ergebnistabelle nennt man Projektion, die der Zeilen Selektion. Werden für eine Anfrage Daten aus mehreren Tabellen zusammengetragen, spricht man von einem Join.

  29. SQL-Queries dazu • SELECT name FROM studentin WHERE matrnr IN (SELECT matrnr FROM hoeren WHERE vorlnr = 'Inf 001'); • SELECT raum FROM vorlesung; • SELECT zeit FROM vorlesung WHERE titel LIKE ‘Math%';

  30. MySQL • DELETE DELETE FROM Tabellenname WHERE a = b • JOIN CROSS JOIN INNER JOIN (Beinhaltet nur die Datensätze, bei denen die Inhalte der verknüpften Felder beider Tabellen gleich sind.) LEFT JOIN • Sortieren ORDER BY Spaltennamen

  31. MySQL • Aggregat-Funktionen: Funktionen, die in Spalten zusammenfassende, mathematische Berechnung durchführen. COUNT() COUNT(DISTINCT) MAX() MIN() AVG() SUM() STD()

  32. Interaktion • Clientseitige Möglichkeiten • Sicherstellen der Anzeigefähigkeit von gelieferten Informationen (bspw. PlugIns) • Sicherstellen von „richtigen“ Anfragen an den Server (Eingabeüberprüfungen) • Transformation von gelieferten Informationen in der gewünschten Art und Weise (Formatierung von Siteinhalten, StyleSheets) • Serverseitige Möglichkeiten • Entgegennahme von HTML- Requests  Lieferung von HTML-Seiten • Transformation der Requests in der gewünschten Art und Weise  z.B. Übersetzung der Anfrage in ein MySQL-Statement oder auch zurück, d.h. Umwandlung eines Abfrageergebnisses in ein HTML-Dokument • Weiterleitung von Client-Requests an andere Server, insbes. Datenbankserver

  33. Interaktion • Mit einem solchen Modell besteht die Möglichkeit, in Kombination der serverseitigen und clientseitigen Programmierung Webapplikationen zu erstellen, die die gewohnte Interaktivität von Computerprogrammen bieten • gestatten es, den Added Value für eine Site zu erzeugen • Man wird hiermit in die Lage versetzt, dem User Webseiten präsentieren zu können, welche sich frei nach seinen Wünschen konfigurieren lassen! • d.h. entsprechend seines Verhaltens kann auf die Eingaben des Nutzers reagiert werden.

  34. Dynamische Webseiten • Verarbeitung des HTML-Dokuments/Query-Resultats mittels Computer-Programm • CGI-Scripts (i.d.R. PERL) • ASP (Active Server Pages) • JSP (Java Server Pages) • PHP ... • HTML-Formulare • URL-Extensions (Datenübertragung zum Web-Server) • JavaScript (Darstellung & Transformation der Informationen) • Java (Darstellung & Transformation der Informationen) • CSS/DHTML (Darstellung der Informationen) • PlugIns (Darstellung von Informationen, teilweise auch Transformationen) • MySQL-Queries werden dazu benutzt den Datenbestand abzufragen und zu analysieren

  35. Konzept der Datenanbindung ist flexibel • Zugriff auf eine einfache Textdatei (TDC) • Zugriff über Datenbankabfragesprache SQL auf eine Datenbank, die SQL-Befehle verarbeiten kann. • Anbindung einer HTML-Datei an Daten aus einer Datenbank, die über die Datenbank-Schnittstellen OLE-DB oder ODBC verfügen • beispielsweise MS Access, Oracle oder SQL-Server wie MySql • Speichern von Daten möglich • Ebenfalls ActiveX-Control notwendig

  36. Db_connection MySQL PHP KundenNummer Name Rechnung Login SELECT * FROM PHP_DB Db_result Datenbankabfrage mit PHP <?php $db_connection = @mysql_connect("localhost","root“,“pw"); mysql_select_db(„ PHP_DB"); $db_result = mysql_query( "SELECT * FROM Kunden“, $db_connection); mysql_close($db_connection); ?> Datenbankabfrage mit PHP

  37. Resultat nach Select KundenNummer Name Rechnung 122 Münz 450,45€ 123 Müller 15,00 € Datenbankabfrage mit PHP <?php $db_result =mysql_query( "SELECT KundenNummer,Name,Rechnung FROM Kunden“, $db_connection); while( $row =mysql_fetch_array( $db_result )) { echo $row[“KundenNummer"]; echo $row[“Name“]; echo $row[“Rechnung“]; } ?>

  38. Kunden Nummer Login Einlogen login.php function phpBank_login($v_ KundenNummer, $v_ Login){ $db_connection = @mysql_connect("localhost","root“,“pw"); mysql_select_db("PHP_DB"); $db_result = mysql_query( "SELECT * FROM Kunden WHERE KundenNummer =“.$v_ KundenNummer.“ AND PIN = “.$v_ Login“, $db_connection); If( $row = mysql_fetch_array( $db_result ) ){ echo ‘Hallo ‘.$row[‘Name‘].‘ Ihr Rechnung: ‘.$row[‘Rechnung‘]; }else{ die(‘Login ist falsch‘); } } Login Hallo user2 Ihr Rechnung:15€ Login ist falsch PHP Bank mit Datenbank-Anbindung <?php echo ‘<h2>Login</h2>‘; $KundenNummer = $_POST[‘KundenNummer ']; $Login = $_POST[‘Login']; phpBank_login( $ KundenNummer, $ Login); ... ?>

  39. SESSION • Ausgangsproblem: • Über HTTP werden keine ständigen Verbindungen zu den Servern hergestellt, sondern die Kommunikation läuft immer nach dem Schema „Anfrage“ => „Antwort“ (request/response). Deshalb können sich Webseiten per se nicht „erinnern“ (= stateless protocol). • Lösung durch Sessions: • Entweder server- oder clientseitig (=> cookies) werden pro User-Agent (= Browser etc.) individuelle Parameter gespeichert, auf die dann alle PHP Skripte Zugriff haben. Diese Parameter müssen dann nicht mehr mit POST oder GET übermittelt werden. Lediglich eine Session ID muss von Seite zu Seite übermittelt werden.

  40. Gutes Design Darstellung z.B. <<HTML>> Controller <<PHP>> Wiederverwendbare Komponenten <<PHP-Library>> Datenbank- Abstraktionsschicht Datenbank (leicht auswechselbar)

  41. Datenbank Abstraktionsschicht • In einer Datenbankabstraktionsschicht werden alle Zugriffe auf die DB durch eine zentrale Datei mediatisiert. • Sinn einer Datenbankabstraktionsschicht ist es, das Umstellen auf andere Datenbanken oder –quellen zu erleichtern. Auch können die Datenbankabfragen unabhängig vom restlichen Programmiercode entwickelt und getestet werden.

  42. Quellen: • MySQL - Einfьhrung, Anwendung, Referenz, 1. Auflage Autor: Michael Kofler • http://www.torsten-horn.de/techdocs/postgresql.htm • Marsch J., Fritze J.: SQL: Eine praxisorientierte Einführung • http://www.physik.uni-stuttgart.de • http://www.mysteries-megasite.com/linux/SQL-tutorial.html • SQL Tutorial Links • http://www.mysql.com/ • MySQL Dokumentation, Download, Tools • http://www2.little-idiot.de/mysql/ • MySQL Datenbankhandbuch • MySQL Datenbankhandbuch • Guido Stepken ( stepken@little-idiot.de)

  43. Datenbankadministration mit MySQL • Datensicherheit • Wartung von Tabellen • Replikationsdatenbanken • Datenmigration, Import und Export • Beispiel (PHP und MySQL) Konstantin Altenhof

  44. Dateiebene Speicherung der Daten auf Dateiebene mysql MS-SQL-Server

  45. Datensicherheit • Prävention mit Metadaten • Zeitangabe Es ist eine gute Angewohnheit, in jeder Tabelle ein Feld mit dem Datentyp TIMESTAMP einzurichten. • TIMESTAMP wird von MySQL automatisch erzeugt • Die Feldbreite durch die Deklaration bestimmt • TIMESTAMP[14]: YYYYMMDDHHMMSS • TIMESTAMP[12]: YYYYMMDDHHMM • TIMESTAMP[10]: YYYYMMDDHH • TIMESTAMP[8]: YYYYMMDD • TIMESTAMP[6]: YYMMDD • Beispiel aus Praxis.

  46. Datensicherheit • Benutzerdaten • Für Stammdaten häufig überlegenswert. • Benutzer zu ermitteln unter MySQL • USER() Beispiel: INSERT INTO Mitglieder (Name, Vorname, Erfasst_von) VALUES (`Schmidt`, `Beate`, USER() ); oder UPDATE Mitglieder SET NAME=`Bayer`, Erfasst_von= USER(); Bemerkung: Im Web – IP-Adresse (PHP Funktion REMOTE_ADDR)

  47. Datensicherheit • Prüfziffern • Aufbau der Tabelle: CREATE TABLE kd_konten ( Kunde CHAR(8) – Fremdschlüssel Kto_nr CHAR(8) Blz CHAR(10) Metha_when TIMESTAMP Pruefziffer BIGINT ); Beispiel: SET @Kunde =`wischmil`, @Kto_nr =`22222222222`, @Blz =`4420442044`, @Pruef =MD5(CONCAT(@Kunde,@Kto_nr,@Blz); INSERT INTO kd_konten VALUES ( @Kunde, @Kto_nr, @Blz, NULL, CONV(@Pruef,16,10); Identität abgleichen, ohne die eigentlichen Daten zu kennen. Daten aus anderen Datenbeständen übernehmen.

  48. Datensicherheit • Vollständige Datensicherung • Mysqldump • Mysqlhotcopy Wer, wann, wie? • Automatisieren • Einmal die Woche ist eine gute Faustregel • Speichern Sie gesicherte Daten immer auf einem anderem Datenträger (Tipp: Keine Disketten verwenden).

  49. Datensicherheit • Sichern mit mysqldump • Erzeugt eine Datei, die SQL-Befehle enthält um die Datenbank mit allen Tabellen und Indizes wieder zu erzeugen und mit Daten zu fühlen. mysqldump Datenbankname >Backupdatei.sql mysqldump Db_1 Db_2 Db_3 >Backupdatei.sql Schalter: • - password=xxx (Sicherheitslücke: Benutzerpasswort) • - - all-databases (aber …..) • - - add-drop-table (DROP TABLE, CREATE TABLE) • - - add-locks (LOCK TABLE, INSERT, UNLOCK) • - - extended-insert (nicht empfehlenswert, Syntax MySQL-spezifisch) • - - complete-insert (ANSI-konform, Gegenstück zu –extended-insert)

  50. Datensicherheit • Sicherung unter UNIX automatisieren • Cron-jobs. Aufgabe: Jeden Sonntag um 3 Uhr morgens ein Backup der Datenbank Kundenservice automatisch erstellen. Lösung: • Textdatei mit folgendem Inhalt anlegen: 0 3 * * 0 mysqldump Kundenservice \\ >/home/db_admin/Backups/ kundenservice.sql Die Datei speichern unter meine_cron_jobs.txt. 2. In einem Terminalfenster eingeben: cronjob meine_cron_jobs.txt

More Related