Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lektorat Dirk Nielsen Brauchen Datenbanken eine Struktur? Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen.

Ähnliche Präsentationen


Präsentation zum Thema: "Lektorat Dirk Nielsen Brauchen Datenbanken eine Struktur? Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen."—  Präsentation transkript:

1

2 Lektorat Dirk Nielsen Brauchen Datenbanken eine Struktur? Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen gespeichert. Und weil sich da ganz schön viel ansammelte, wurden daraus einige Jahre später Datenbanken. Aber was macht eine Sammlung von Tabellen zu einer Datenbank? Die Verknüpfungen zwischen diesen Tabellen! Es ist heute nicht mehr schwer, an ein wirklich leistungsfähiges Datenbanksystem zu kommen. Aber bevor dies sinnvoll eingesetzt werden kann sollte man jedoch zunächst mal einiges an Zeit und Mühe in die Planung und das Datenbank-Design investieren. Sicher, man kann auch einfach mal so loslegen und sich dann irgendwie "durchwursteln". Dass man damit Zeit und Energie spart ist allerdings ein weit verbreiteter Irrtum. Warum Datenbanken ordentlich geplant sein wollen, möchte ich im Folgenden an einem Beispiel zeigen.

3 Lektorat Dirk Nielsen Betrachten wir zur Illustration also die Datenhaltung eines Online-Buchhändlers. Nehmen wir auch schon mal an, dass dieser Buchhändler nicht mehr so naiv ist, alles in eine einzige Tabelle schreiben zu wollen. Schließlich hat er sich einige Gedanken gemacht und präsentiert stolz drei Tabellen mit folgender Struktur.

4 Lektorat Dirk Nielsen

5 Ist dieser Ansatz überzeugend? Höchstens auf den ersten Blick, auf Dauer kann das nicht funktionieren. Um nur auf einige Probleme hinzuweisen: Bei jeder Bestellung eines bestimmten Kunden müssen alle seine Kundendaten (Name, Ort,...) erneut gespeichert werden! Bei jeder Bestellung muss man in der gesamten Tabelle Bestellung nachsehen, ob der Kunde bereits erfasst ist und welche "KdNr" er hat. Wer kontrolliert, ob die "ISBN" der Tabelle Bestellung auch in Buch enthalten ist? Kann es zu einer "BestNr" nur eine "ISBN" geben? Sicherlich möchten wir dem Kunden ermöglichen, gleichzeitig zwei verschiedene Bücher zu bestellen, dafür soll er jedoch nur eine Rechnung erhalten. Was ist dann aber das identifizierende Merkmal (der "Primärschlüssel") in der Tabelle Bestellung?

6 Lektorat Dirk Nielsen Angenommen, ein Verlag ändert seinen Namen und der Eintrag in Tabelle Bestellung wird aktualisiert. Wenn dies in der Büchertabelle nicht ebenso angepasst wird, können einzelne Bücher nicht mehr zugeordnet werden! Kundendaten können erst dann gespeichert werden wenn auch eine Bestellung vorliegt. Schickt ein Kunde nach seiner ersten Bestellung das Buch zurück und wird deshalb der Datensatz dieser Bestellung gelöscht, sind damit auch die Kundendaten verloren. Bei einem Tippfehler im Kundennamen erscheinen zwei scheinbar unterschiedliche Kunden mit derselben Kundennummer. Muss der Rechnungsbetrag wirklich gespeichert werden? Schließlich kann man ihn aus den übrigen Daten berechnen. Und was ist, wenn sich die Buchpreise ändern? Will ich wirklich zu einer konkreten PLZ jedesmal den Ortsnamen neu speichern? Dies betrifft sowohl die Daten der Verlage als auch der Kunden.

7 Lektorat Dirk Nielsen Diese Auflistung ließe sich leicht noch erweitern. Wenn man solche Mängel erst beheben will wenn die Datenbank bereits implementiert ist, hat man nicht nur viel Ärger. Man investiert in eine solche Reparatur wesentlich mehr Zeit als in eine solide Planungsphase!

8 Lektorat Dirk Nielsen Planungsphase:

9 Lektorat Dirk Nielsen Logisches Lösungsmodell:

10 Lektorat Dirk Nielsen FAZIT

11 Lektorat Dirk Nielsen Sütő Gergely

12 Lektorat Dirk Nielsen Hans Müller Wächter Managerin Sylvia Blume Direktor Volker Klein Sekretärin Anita Bach Dies sind jeweils Individuen

13 Lektorat Dirk Nielsen Objekte des Wirtschaftssystems, die mit Daten beschrieben werden. Alle Faktoren des Wirtschaftssystems (Sachen, Menschen, Ereignisse, Erscheinungen) Die Daten, mit denen die Individuen beschrieben werden Verbindungen zwischen den Daten

14 Lektorat Dirk Nielsen Hans Müller Wächter Managerin Sylvia Blume Direktor Volker Klein Sekretärin Anita Bach Vorkommen des Individuums Individuumtyp MITARBEITER

15 Lektorat Dirk Nielsen Hans Müller Wächter Managerin Sylvia Blume Direktor Volker Klein Sekretärin Anita Bach Vorkommen einer Eigenschaft (Wert) NAME DES MITARBEITERS Eigenschafts typ

16 Lektorat Dirk Nielsen Zentrale Betrieb X Vorkommen der Verbindung Hamburg Kiel Verbindungstyp

17 Lektorat Dirk Nielsen System der Daten, die im Computer gespeichert sind miteinander in Verbindung stehen enthält auch die Datenstrukturbeschreibung und die Datenverwaltungsprozeduren System der Daten, die im Computer gespeichert sind miteinander in Verbindung stehen enthält auch die Datenstrukturbeschreibung und die Datenverwaltungsprozeduren

18 Lektorat Dirk Nielsen MITARBEITER Sütő Gergely

19 Identifizierungsfeld: in seiner Spalte kommt jeder Wert nur einmal vor Beschreibungsfeld: in seiner Spalte kann ein Wert mehrmals vorkommen

20 Lektorat Dirk Nielsen Kriterien: stark charakteristisch stabil feste Länge möglichst kurz benutzt möglichst wenig Zeichen Sütő Gergely

21 Lektorat Dirk Nielsen Sütő Gergely Innerer Identifizierer: nur innerhalb des Systems bekannt Aussenidentifizierer: ausserhalb des Systems wird bestimmt

22 Lektorat Dirk Nielsen ? d a bestimmt eindeutig d f d.h. d f d a Paul Klein dada dfdf Sütő Gergely

23 Lektorat Dirk Nielsen d a bestimmt eindeutig d j und umgekehrt auch, d.h. d a d j dada djdj Sütő Gergely

24 Lektorat Dirk Nielsen EN d a bestimmt d n nicht und d n bestimmt d a nicht, d.h. d n d a dada dndn Sütő Gergely

25 Lektorat Dirk Nielsen d r bestimmt d a, umgekehrt aber nicht, d.h. d r d a Einzeln, darf nicht gleich sein! dada drdr Sütő Gergely

26 Lektorat Dirk Nielsen Was ist das Problem? Aus Werten einiger Felder müssen mehrere zu einer Zeile zugeordnet werden, deswegen lässt sich die Relation nicht auf eine zweidimensionale Tabelle abbilden. Sütő Gergely Normalisieren

27 Lektorat Dirk Nielsen Die Verbindung zwischen den Relationen bedeutet die Zuordnung der Zeilen zu den einzelnen Relationen. Der Verbindungsgrad zeigt an, wie viele Zeilen einer Relation zu einer beliebigen Zeile einer anderen Relation verbunden sein können oder sind. Mögliche Werte: ein zu eins (1:1) ein zu mehr(1:n) mehr zu mehr(m:n) Sütő Gergely

28 Lektorat Dirk Nielsen Sütő Gergely

29 Lektorat Dirk Nielsen Sütő Gergely

30 Lektorat Dirk Nielsen Sütő Gergely

31 Lektorat Dirk Nielsen IdNr PANr Name Betr.code IdNr PANr Name Betr.code Betr.name Betr.code Betr.name Sc Sprache Sc Sprache Sprachcode IdNr Sprachprüfung Sprachcode IdNr Sprachprüfung Kind_SVNr IdNr Kindname Kind_SVNr IdNr Kindname Kinder Sprache Sprachkenntnis Organisation Mitarbeiter FNr IdNr FNr IdNr Führers. Sütő Gergely

32 Lektorat Dirk Nielsen Sütő Gergely Individuum- Typ Relation Tabelle Individuum- Vorkommen Tupel Paul Klein Eigenschaft- Typ Feld Rekord (Zeile) Feld Name Eigenschaft- Vorkommen Element(Feld)Wert Verbindungs- Typ Verbindungs- Vorkommen Verbindung Menge der Zeilen Verbindungs- Beschreibung Verbundene Rekords

33 Lektorat Dirk Nielsen Sütő Gergely

34 Lektorat Dirk Nielsen Identifizierer Teilidentifizierer Funktionale Abhängigkeit Gegenseitige Abhängigkeit Standardwert Kriterium Schwach charakteristische Eigenschaft Untermatrix Berufung Mnemonic Sütő Gergely

35 Lektorat Dirk Nielsen Reihe: Individuum Spalte: Eigenschaft Zelle: Zusammenhang In eine Spalte kommt immer nur ein Identifizierer. Identifizierer kann sein: einfach: ein Stern zusammengesetzt: zwei oder mehr Kreise In einer Spalte darf gleichzeitig kein Identifizierer (Stern) und Teilidentifizierer (Kreis) stehen! Sütő Gergely

36 Lektorat Dirk Nielsen Bezeichnungen: Identifizierer Teilidentifizierer Funktionale Abhängigk. Gegenseitige Abhängigk. Kriterium Schwach charakteristisch Sütő Gergely STARKE LOGISCHE REDUNDANZ BEDINGTE ABHÄNGIGKEIT

37 Lektorat Dirk Nielsen Elementare Daten Kleinste Daten mit selbständiger Bedeutung und selbständigen Namen, die nicht weiter zerlegt werden können, sind der Datensatz oder Datenfeld Elementare Daten sind nach ihrem Typ: –(ganze und reelle) Zahlen –Charakter –Logische Werte –Zeiger –Aufgezählte Werte

38 Lektorat Dirk Nielsen Elementare Datentypen Ganze Zahlen: die Menge der ganzen Zahlen Reelle Zahlen: rationelle Zahlen in Binärzahlensystem Logische Werte: Wahr oder Falsch Charakter: Werte aus der ASCII -Zeichencodetabelle

39 Lektorat Dirk Nielsen Elementare Datentypen Zeiger: (pointer) Datentyp, der nicht Daten beinhaltet, sondern ihre Adresse im (Haupt-) Speicher Aufgezählter Typ: Datentyp, der durch Aufzählung seiner mögliche Werte angegeben wird. Die möglichen Werte (Konstanten) sind beliebige Datentypen.

40 Lektorat Dirk Nielsen Elementare Datenstrukturen Sequenz / Feld / Block: (array) Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Tupel: (record) Sammlung von verschiedenen Daten(typen), die irgendwie zusammenhängen Datei: (file) Datenbestand, geordnete Menge irgendwie zusammenhängender Informationen

41 Lektorat Dirk Nielsen Abstrakte Datenstrukturen Ihr Ziel ist die Abbildung reeller Datenstrukturen auf eine logische Struktur, die unter gegebenen Umständen und gegebenen Mitteln physisch zu verwirklichen ist In der Praxis unterschieden sich die logischen und die physischen Datenstrukturen voneinander Der physische Datenbestand ist die Menge der gespeicherten Daten, die eigene Namen hat

42 Lektorat Dirk Nielsen Abstrakte Datenstrukturen Verlauf der Abbildung: –logischer Datensatz physische Datenfeld –logischer Tupel physischer Tupel –in der logischen Datenstruktur gespeicherte Daten physische Datenbestand Strukturierung physischer Bestände: seriell direkt zufällig indiziert sequenziell

43 Lektorat Dirk Nielsen Abstrakte Datenstrukturen Block: Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Charakterkette: unbestimmte (veränderbare) Anzahl von Charakteren Stapel: (stack) Datenstruktur, wo eine Operation nur mit dem letzten Element durchgeführt werden kann und ein neues Element nur nach dem letzten Element eingefügt werden kann (LIFO)

44 Lektorat Dirk Nielsen Elemente können reingetan und rausgenommen werden Nur das letzte Element ist erreichbar Leerheit ist abfragbar Stapel Oberteil Unterteil

45 Lektorat Dirk Nielsen Abstrakte Datenstrukturen Schlange: (queue) Reihenfolge von Daten, bei der an einem Ende Daten angefügt und am anderen Ende weggenommen werden können (FIFO) Liste: Datenstruktur, die sagt, welches Element - logisch gesehen - dem anderen folgt. Tupel: zusammengesetzte Datenstruktur, die aus Feldern besteht, die eigenen Namen haben und durch diesen Namen erreichbar sind

46 Lektorat Dirk Nielsen Schlange Elemente können reingetan und rausgenommen werden Nur das erste Element ist erreichbar Leerheit ist abfragbar Ende Anfang

47 Lektorat Dirk Nielsen Liste Elemente können reingetan und rausgenommen werden Über die Zeigerkette ist jedes beliebiges Element erreichbar Leerheit ist abfragbar

48 Lektorat Dirk Nielsen Tupel (record) Innerhalb eines Tupels ist jedes Feld erreichbar – sonst kann nur der Tupel erreicht werden Die elementaren Datentypen der Felder und ihre Eingangsformate sind veränderbar Abfrage der Leerheit ist sinnlos Grösse ist nur indirekt veränderbar, falls die Grösse der Felder geändert wird

49 Lektorat Dirk Nielsen Tupel

50 Lektorat Dirk Nielsen Datei Nach dem Öffnen ist in ihr jedes beliebige Element erreichbar – physisch ist sie aber nur als cluster lesbar In der Datei gespeicherte Menge kann aus Kombination von beliebigen elementaren Datentypen bestehen Die Abfrage der Leerheit ist sinnlos Die Grösse ist von den gespeicherten Daten abhängig

51 Lektorat Dirk Nielsen Besteht aus gleichen Datentypen Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind nur nach der Aufschreib- Reihenfolge erreichbar Sequentielle Datei

52 Lektorat Dirk Nielsen Indizierte Datei Besteht aus gleichen Datentypen Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind beliebig erreichbar

53 Lektorat Dirk Nielsen Besteht aus verschiedenen Datentypen Name und Typ der Elemente (Felder) müssen angegeben werden Die Tupel-Elemente sind auch einzeln erreichbar Ein Tupel ist eine Einheit, aus der Block, Stapel, Schlange oder Liste gebaut werden können Tupel-Datei

54 Lektorat Dirk Nielsen Datei Wie kann eine Datei erstellt werden? –Mit dem entsprechenden Programm –Durch den entsprechenden Algorithmus

55 Lektorat Dirk Nielsen Zusammengesetzte Datenstrukturen Aus abstrakten Datenstrukturen vom gleichen Typ können zusammengesetzte Datenbestände aufgebaut werden: –hierarchische Strukturen (Bäume) –relationelle Strukturen (Tabellen) –Netzstrukturen (Graphen, Netzwerke)

56 Lektorat Dirk Nielsen Operationen für zusammen-gesetzten Datenstrukturen Benutzen eines Elements: erstes, letztes, nächstes, beliebiges Einfügen eines neuen Elements: am Anfang, am Ende, an einer beliebigen Stelle Entfernen eines Elements: erstes, letztes, beliebiges Prüfung der Existenz (leer oder doppelt?)

57 Lektorat Dirk Nielsen Für im Block gespeicherten Daten müssen festgelegte Speicherplätze reserviert werden, die entweder zu klein oder zu groß sein können In der verketteten Datenstruktur werden die Daten einzeln gespeichert und dadurch wird nur genau soviel Speicherplatz benutzt, wie nötig ist Verkettete Stapel, Schlange, Liste

58 Lektorat Dirk Nielsen Sütő Gergely SQL S tructured Q uery L anguage Die relationelle Datenbankverwaltungssprache

59 Lektorat Dirk Nielsen Die Charakteristik der SQL Die Charakteristik der SQL Normalisiert, transportierbar (zwischen Systemen und Computern) Selbstständige Sprache, aber sie kann in andere Programmiersprachen eingefügt werden

60 Lektorat Dirk Nielsen Allgemeine Datentypen SMALLINTkurze ganze Zahl (2 byte) < x < INTEGERganze Zahl (4 byte) < x < DECIMAL(e,t)festpünktliche Zahl FLOATschwebepünktliche Zahl CHAR(n)Charakterkette (Text) n 255 byte DATEDatum LOGICALLogik (ja/nein) MONEYWährung SERIALAutoWert VARCHAR(n)langer Text n>255

61 Lektorat Dirk Nielsen Datenbankstrukturbehandlung I. Datenbank erstellen: CREATE DATABASE Datenbankname ; Datenbank öffnen: {START} DATABASE Datenbankname ; Datenbank schliessen: CLOSE DATABASE ; Datenbank löschen: DROP DATABASE Datenbankname ;

62 Lektorat Dirk Nielsen Datenbankstrukturbehandlung II. (Tabellen) Neue Tabelle erstellen: CREATE TABLE Tabellenname ( Spalte 1 {, Spalte 2, …} ); Neue Spalte einfügen: ALTER TABLE Tabellenname ADD ( Spalte 1 {, Spalte 2, …} ); Tabelle löschen: DROP TABLE Tabellenname ; Spalte i Spaltenname i Datentyp i { NOT NULL }

63 Lektorat Dirk Nielsen Dateninstandhaltung (Diese Operationen beziehen sich auf die Reihen!) Einfügen: INSERT INTO Tabellenname { (Spaltenliste) } VALUES( Konstant | NULL); Ändern: UPDATE Tabellenname SET Spaltenname = Ausdruck | NULL { WHERE Bedingung } ; Löschen: DELETE FROM Tabellenname { WHERE Bedingung } ;

64 Lektorat Dirk Nielsen Abfrage (die SELECT Anweisung) Auswählen von in der Anweisung definierten Kriterien aus einer oder mehreren Tabellen

65 Lektorat Dirk Nielsen Abfrage Syntax SELECT {ALL|DISTINCTROW} * | Ausdruckliste FROM Tabellenliste { WHERE Bedingung } { GROUP BY Spaltenliste } { HAVING Gruppen_Bedingung } {ORDER BY Schlüssel_Ausdruck } ;

66 Lektorat Dirk Nielsen Abfrage weitere Komponente Tabellen Verknüpfen (JOIN) –Starke Verbindung: INNER JOIN…ON –Lockere Verbindung LEFT|RIGHT JOIN Vereinigen (UNION)

67 Lektorat Dirk Nielsen Datenschutz Zugriffsrechte übergeben: GRANT Liste der Rechte { ON Tabellenname } TO PUBLIC| Benutzerliste {WITH GRANT OPTION}; –Datenbankrechte: » CONNECT » RESOURCE » DBA Zugriffsrechte aufheben: REVOKE Liste der Rechte { ON Tabellenname } TO PUBLIC| Benutzerliste ;

68 Lektorat Dirk Nielsen Anfangen einer Transaktion: BEGIN WORK ; Gültigmachen einer Transaktion: COMMIT WORK; Ungültigmachen einer Transaktion: ROLLBACK WORK; Wiederherstellen einer Datenbank: ROLLFORWARD DATABASE;

69 Lektorat Dirk Nielsen 1. Listen wir die Tabelle WAREN auf SELECT * FROM WAREN; 2. Listen wir Name, Code und Preis aus der Tabelle WAREN SELECT NAME, CODE, PREIS FROM WAREN; Ergänzen wir die letzte Aufgabe so, daß wir nur die Waren auslisten, die mehr als 100 kosten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100; 0-3

70 Lektorat Dirk Nielsen 3. Setzen wir die letzte Aufgabe so fort, daß wir die Waren nach Namen geordnet auslisten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100 ORDER BY NAME; 4. In der nächsten Aufgabe listen wir die Waren so auf, daß neben dem Code auch Bezeichnung, Geschäftscode, Steuerschlüssel und Preis der Ware erscheint. Dazu müssen wir die Tabellen WAREN und BESTAND verknüpfen! 0-3

71 Lektorat Dirk Nielsen 9 WAREN BESTAND WAREN ON WAREN.CODE = BESTAND.CODE INNER JOIN BESTAND 1. WAREN Tabelle 2. verknüpft mit der Tabelle BESTAND 3. in den Zeilen, wo die Codes in den beiden Tabellen über- einstimmen

72 Lektorat Dirk Nielsen Die vollständige SQL Anweisung der 4. Aufgabe: SELECT WAREN.CODE,NAME,GCODE,MWST,PREIS FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; 4-5

73 Lektorat Dirk Nielsen 5. Ergänzen wir die letzte Aufgabe so, daß wir auch den Bestandswert berechnen und die Liste mit der Kopfzeile Wert des Bestandes versehen SELECT WAREN.CODE,NAME,GCODE,MWST, PREIS,BSTD, PREIS*BSTD AS [Wert des Bestandes] FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; Den Text Wert des Bestandes müssen wir in [ ] schreiben, da er Leerzeichen enthält! 4-5

74 Lektorat Dirk Nielsen 6. Ergänzen wir die letzte Aufgabe damit, daß wir anstelle des Geschäftscodes die Adresse des Geschäfts anzeigen! Zur Lösung der Aufgabe müssen wir zur letzten Stuktur die Tabelle GESCHÄFT verknüpfen so, daß die Tabelle BESTAND mehrmals vorkommt, d.h. wir bilden eine Netzstruktur in SQL. 9

75 Lektorat Dirk Nielsen ON GESCHÄFT.GCODE = BESTAND.GCODE 9 GESCHÄFTWAREN BESTAND (WAREN GESCHÄFT INNER JOIN ON WAREN.CODE = BESTAND.CODE) INNER JOIN BESTAND

76 Lektorat Dirk Nielsen Die vollständige Lösung der Aufgabe 6. in SQL: SELECT WAREN.CODE, NAME AS [Name der Ware], GADR AS [Adresse des Geschäfts], PREIS*BSTD AS [Wert des Bestandes] FROM GESCHÄFT INNER JOIN (WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE) ON GESCHÄFT.GCODE = BESTAND.GCODE; 9

77 Lektorat Dirk Nielsen 7. Summieren wir die Bestandswerte der Waren SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE; 6

78 Lektorat Dirk Nielsen 8. Ergänzen wir die letzte Aufgabe so, daß wir nur die Daten anzeigen, wo der Bestandswert über liegt! SELECT WAREN.CODE, First(WAREN.NAME) AS [First:NAME], Sum([PREIS]*[BSTD]) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY BESTAND.CODE HAVING (((Sum([PREIS]*[BSTD]))>2000)); 7

79 Lektorat Dirk Nielsen Aus der letzten Lösung können wir einiges entfernen: SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE HAVING Sum(PREIS*BSTD)>2000; 7

80 Lektorat Dirk Nielsen ENDE


Herunterladen ppt "Lektorat Dirk Nielsen Brauchen Datenbanken eine Struktur? Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen."

Ähnliche Präsentationen


Google-Anzeigen