Kapitel 12
This commit is contained in:
		
							parent
							
								
									4356e4d6e0
								
							
						
					
					
						commit
						19f573c093
					
				
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_Beziehungen.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_Beziehungen.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 37 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_JDBC_Struktur.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_JDBC_Struktur.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 47 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_JDBC_Treiberkonzept.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_JDBC_Treiberkonzept.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 86 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_ORM_Prinzip.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_ORM_Prinzip.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 85 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_SQLJ_Prinzip.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_SQLJ_Prinzip.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 90 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_Tabellenbeispiel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Datenbanksysteme_Tabellenbeispiel.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 29 KiB | 
| @ -1880,4 +1880,441 @@ Zusammenfassung | ||||
| - begrenzte Anfragefunktionalität | ||||
| - Nicht-Standard bzw. proprietäre Schnittstellen | ||||
| 
 | ||||
| # Anwendungsprogrammierung | ||||
| # Anwendungsprogrammierung | ||||
| Lernziele: | ||||
| - Wissen zu Konzepten und Schnittstellen zum Zugriff auf SQL-Datenbanken aus Programmiersprachen heraus | ||||
| - Verständnis prozeduraler Schnittstellen am Beispiel von JDBC | ||||
| - Kenntnisse zu Embedded SQL und prozeduralen SQL-Erweiterungen | ||||
| - Grundverständnis objektrelationaler Abbildungen | ||||
| 
 | ||||
| ## Programmiersprachenanbindung | ||||
| Kopplungsarten: | ||||
| - prozedurale oder CALL-Schnittstellen (call level interface) | ||||
|   - Beispiele: SQL/CLI, ODBC, JDBC, ... | ||||
| - Einbettung einer DB-Sprache in Programmiersprachen | ||||
|   - statische Einbettung: Vorübersetzer-Prinzip ⇝ SQL-Anweisungen zur Übersetzungszeit festgelegt | ||||
|   - Beispiele: Embedded SQL, SQLJ | ||||
|   - dynamische Einbettung ⇝ Konstruktion von SQL-Anweisungen zur Laufzeit | ||||
| - Spracherweiterungen und neue Sprachentwicklungen | ||||
|   - Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL | ||||
| - Cursor-Konzept | ||||
|   - Cursor: Iterator über Liste von Tupeln (Anfrageergebnis) | ||||
| 
 | ||||
| ## JDBC | ||||
| - Datenbankzugriffsschnittstelle für Java | ||||
| - abstrakte, datenbankneutrale Schnittstelle | ||||
| - vergleichbar mit ODBC | ||||
| - Low-Level-API: direkte Nutzung von SQL | ||||
| - Java-Package java.sql | ||||
|   - DriverManager: Einstiegspunkt, Laden von Treibern | ||||
|   - Connection: Datenbankverbindung | ||||
|   - Statement: Ausführung von Anweisungen über eine Verbindung | ||||
|   - ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff auf einzelne Spalten | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ### Ablauf | ||||
| 1. Aufbau einer Verbindung zur Datenbank | ||||
|     - Angabe der Verbindungsinformationen | ||||
|     - Auswahl und Laden des Treibers | ||||
| 2. Senden einer SQL-Anweisung | ||||
|     - Definition der Anweisung | ||||
|     - Belegung von Parametern | ||||
| 3. Verarbeiten der Anfrageergebnisse | ||||
|     - Navigation über Ergebnisrelation | ||||
|     - Zugriff auf Spalten | ||||
| 
 | ||||
| ### Verbindungsaufbau | ||||
| 1. Treiber laden `Class.forName("com.company.DBDriver");` | ||||
| 2. Verbindung herstellen | ||||
|     ```java | ||||
|     String url = "jdbc:subprotocol:datasource"; | ||||
|     Connection con = DriverManager.getConnection | ||||
|       (url, "scott", "tiger"); | ||||
|     ``` | ||||
| 
 | ||||
| JDBC-URL spezifiziert | ||||
| - Datenquelle/Datenbank | ||||
| - Verbindungsmechanismus (Protokoll, Server und Port) | ||||
| 
 | ||||
| ### Anfrageausführung | ||||
| 1. Anweisungsobjekt (Statement) erzeugen `Statement stmt = con.createStatement();` | ||||
| 2. Anweisung ausführen | ||||
|     ```java | ||||
|     String query = "select Name, Jahrgang from WEINE"; | ||||
|     ResultSet rSet = stmt.executeQuery(query); | ||||
|     ``` | ||||
| 
 | ||||
| Klasse java.sql.Statement | ||||
| - Ausführung von Anfragen (SELECT) mit executeQuery | ||||
| - Ausführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeUpdate | ||||
| 
 | ||||
| ### Ergebnisverarbeitung | ||||
| 1. Navigation über Ergebnismenge (Cursor-Prinzip) | ||||
|     ```java | ||||
|     while (rSet.next()) { | ||||
|       // Verarbeitung der einzelnen Tupel | ||||
|       ... | ||||
|     } | ||||
|     ``` | ||||
| 2. Zugriff auf Spaltenwerte über getType-Methoden | ||||
|     - über Spaltenindex `String wName = rSet.getString(1);` | ||||
|     - über Spaltenname `String wName = rSet.getString("Name");` | ||||
| 
 | ||||
| ### Fehlerbehandlung | ||||
| - Fehlerbehandlung mittels Exception-Mechanismus | ||||
| - SQLException für alle SQL- und DBMS-Fehler | ||||
| ```java | ||||
| try { | ||||
|   // Aufruf von JDBC-Methoden | ||||
|   ... | ||||
| } catch (SQLException exc) { | ||||
|   System.out.println("SQLException: " + | ||||
|     exc.getMessage()); | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ### Änderungsoperationen | ||||
| - DDL- und DML-Operationen mittels executeUpdate | ||||
| - liefert Anzahl der betroffenen Zeilen (für DML-Operationen) | ||||
| ```java | ||||
| Statement stmt = con.createStatement(); | ||||
| int rows = stmt.executeUpdate( | ||||
|   "update WEINE set Preis = Preis * 1.1 " + | ||||
|   "where Jahrgang < 2000"); | ||||
| ``` | ||||
| 
 | ||||
| ### Transaktionssteuerung | ||||
| - Methoden von Connection | ||||
|   - commit () | ||||
|   - rollback () | ||||
| - Auto-Commit-Modus | ||||
|   - implizites Commit nach jeder Anweisung | ||||
|   - Transaktion besteht nur aus einer Anweisung | ||||
|   - Umschalten mittels setAutoCommit (boolean) | ||||
| 
 | ||||
| ## SQLJ | ||||
| ### Embedded SQL für Java | ||||
| - Einbettung von SQL-Anweisungen in Java-Quelltext | ||||
| - Vorübersetzung des erweiterten Quelltextes in echten Java-Code durch Translator sqlj | ||||
| - Überprüfung der SQL-Anweisungen | ||||
|   - korrekte Syntax | ||||
|   - Übereinstimmung der Anweisungen mit DB-Schema | ||||
|   - Typkompatibilität der für Datenaustausch genutzten Variablen | ||||
| - Nutzung von JDBC-Treibern | ||||
|  | ||||
| 
 | ||||
| Anweisungen | ||||
| - Kennzeichnung durch #sql Deklarationen | ||||
| - Klassendefinitionen für Iteratoren | ||||
| - SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen `#sql { SQL-Operation };` | ||||
| - Beispiel: `#sql { insert into ERZEUGER (Weingut, Region) values ( 'Wairau Hills', 'Marlborough') };` | ||||
| 
 | ||||
| Host-Variablen | ||||
| - Variablen einer Host-Sprache (hier Java), die in SQL-Anweisungen auftreten können | ||||
| - Verwendung: Austausch von Daten zwischen Host-Sprache und SQL | ||||
| - Kennzeichnung durch ":variable" | ||||
| - Beispiel: | ||||
|   ```java | ||||
|   String name; | ||||
|   int weinID = 4711; | ||||
|   #sql { select Name into :name | ||||
|     from WEINE where WeinID = :weinID }; | ||||
|   System.out.println("Wein = " + name); | ||||
|   ``` | ||||
| - Nullwerte: Indikatorvariable `":variable:indvar"` | ||||
| 
 | ||||
| ### Iteratoren | ||||
| 1. Deklaration des Iterators `#sql public iterator WeinIter(String Name, String Weingut, int Jahrgang);` | ||||
| 2. Definition des Iteratorobjektes `WeinIter iter;` | ||||
| 3. Ausführung der Anweisung `#sql iter = { select Name, Weingut, Jahrgang from WEINE };` | ||||
| 4. Navigation | ||||
|     ```java | ||||
|     while (iter.next()) { | ||||
|       System.out.println(iter.Name() + " " iter.Weingut()); | ||||
|     } | ||||
|     ``` | ||||
| 
 | ||||
| Dynamic SQL: SQL-Statements als zur Laufzeit konstruierte Strings | ||||
| ```java | ||||
| exec sql begin declare section; | ||||
|     AnfrageString char(256) varying; | ||||
| exec sql end declare section; | ||||
| exec sql declare AnfrageObjekt statement; | ||||
| AnfrageString = 'delete from WEINE where WeinID = 4711'; | ||||
| ... | ||||
| exec sql prepare AnfrageObjekt from :AnfrageString; | ||||
| exec sql execute AnfrageObjekt; | ||||
| ``` | ||||
| 
 | ||||
| ## LINQ | ||||
| Language Integrated Query (LINQ) | ||||
| - Einbettung einer DB-Sprache (SQL) in eine Programmiersprache (C#) | ||||
| - spezielle Klassenmethoden | ||||
|     ```java | ||||
|     IEnumerable<string> res = weine | ||||
|     .Where(w => w.Farbe == "Rot") | ||||
|     .Select(w => new { w.Name }); | ||||
|     ``` | ||||
| - eigene Sprachkonstrukte (ab C# 3.0) | ||||
|     ```java | ||||
|     IEnumerable<op> res = from w in weine | ||||
|     where w.Farbe == "Rot" | ||||
|     select new { w.Name }; | ||||
|     ``` | ||||
| 
 | ||||
| ## Objekt-relationales Mapping | ||||
| - Einsatz von | ||||
|   - relationalen Backends (SQL-DBMS) | ||||
|   - objektrelationalen Anwendungen, Applikationsservern, Middleware, ... | ||||
| - Implementierung von „Geschäftslogik“ in Form von Objekten (Kunde, Bestellung, Vorgang, ...) | ||||
|   - z.B. als Java Bean, CORBA-Objekt | ||||
| - erfordert: Abbildung Klasse ↔ Relation | ||||
| - Aspekte: | ||||
|   - konzeptionelle Abbildung | ||||
|   - Laufzeitunterstützung | ||||
| - Technologien/Produkte: JDO, Hibernate, ADO.NET Entity Framework... | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| Klassen und Tabellen | ||||
| - OO: Klasse definiert Eigenschaften von Objekten (Intension) + umfasst Menge aller Objekte (Extension) | ||||
| - RM: Relation umfasst alle Tupel, Relationenschema beschreibt Struktur | ||||
| - naheliegend: Klasse = Tabelle | ||||
| - aber: Normalisierung zerlegt Relationen! | ||||
|   - 1 Klasse = 1 Tabelle | ||||
|   - 1 Klasse = n Tabellen | ||||
|   - n Klassen = 1 Tabelle | ||||
| - Beispiel  | ||||
| 
 | ||||
| Beziehungen | ||||
| - eingebetteter Fremdschlüssel in der Relation der Klasse, d.h. der Identifikator des assoziierten Objektes wird als Fremdschlüssel in zusätzlichen Spalten gespeichert | ||||
| - Fremdschlüsseltabellen: die Beziehungsinstanz wird als Tupel mit den Schlüsseln der beteiligten Objekte repräsentiert | ||||
| - Abbildung der in Beziehung stehenden Klassen auf eine einzelne Tabelle: Verletzung der Normalformen | ||||
| - konkrete Abbildung | ||||
|   - 1:1-Beziehungen: eingebettete Fremdschlüssel | ||||
|   - 1:n-Beziehungen: eingebettete Fremdschlüssel oder Fremdschlüsseltabellen | ||||
|   - Beziehungen mit Attributen: Fremdschlüsseltabellen | ||||
|   - m:n-Beziehungen: Fremdschlüsseltabellen | ||||
|   - Drei- und mehrstellige Beziehungen: Fremdschlüsseltabellen | ||||
| -  | ||||
| 
 | ||||
| Hibernate | ||||
| - Java-Framework für objekt-relationales Mapping | ||||
| - Idee: Abbildung von Java-Objekten auf Tupel einer relationalen Datenbank | ||||
| - Prinzip: Java-Klasse + Abbildungsvorschrift ⇝ SQL-Tabelle | ||||
| - keine expliziten SQL-Anweisungen nötig! | ||||
| - Unterstützung der Navigation über Beziehungen (automatisches Nachladen der referenzierten Objekte) | ||||
| - Anfragen über eigene Sprache (HQL bzw. QBC/QBE) | ||||
| - Beispiel | ||||
|   ```java | ||||
|   public class Wein { | ||||
|     private int id; | ||||
|     private String name; | ||||
|     private String farbe; | ||||
|     private int jahr; | ||||
|     private String weingut; | ||||
| 
 | ||||
|     public void setName(String n) { name = n; } | ||||
|     public String getName() { return name; } | ||||
|     public void setFarbe(String f) { farbe = f; } | ||||
|     public String getFarbe() { return farbe; } | ||||
|     public void setJahr(int j) { jahr = j; } | ||||
|     public int getJahr() { return jahr; } | ||||
|     ... | ||||
|   } | ||||
|   ``` | ||||
| - Deklaration der Abbildung in einer XML-Mapping-Datei | ||||
| - Abbildungsvorschrift wird zur Systemlaufzeit interpretiert | ||||
|   ```xml | ||||
|     <hibernate-mapping> | ||||
|     <class name="Wein" table="WEINE"> | ||||
|     <id name="id"> | ||||
|     <generator class="native" /> | ||||
|     </id> | ||||
|     <property name="name" /> | ||||
|     <property name="farbe" /> | ||||
|     <property name="jahr" column="jahrgang"/> | ||||
|     <property name="weingut" /> | ||||
|     </class> | ||||
|     </hibernate-mapping> | ||||
|   ``` | ||||
| 
 | ||||
| Objekterzeugung | ||||
| ```java | ||||
| Transaction tx = null; | ||||
| 
 | ||||
| Wein wein = new Wein(); | ||||
| wein.setName("Pinot Noir"); | ||||
| wein.setFarbe("Rot"); | ||||
| wein.setJahr(1999); | ||||
| wein.setWeingut("Helena"); | ||||
| 
 | ||||
| try { | ||||
|   tx = session.beginTransaction(); | ||||
|   session.save(wein); | ||||
|   tx.commit(); | ||||
| } catch (HibernateException exc) { | ||||
|   if (tx != null) tx.rollback(); | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| Anfragen | ||||
| - Anfragen über Hibernate-eigene Anfragesprache HQL | ||||
| - Formulierung auf dem konzeptuellen Schema (Java-Klassen) | ||||
| - Select-Klausel nicht benötigt (Ergebnisse sind immer Objekte) | ||||
| - Beispiel | ||||
|   ```java | ||||
|   Query query = session.createQuery("from Wein where Farbe = 'Rot'"); | ||||
|   Iterator iter = query.iterate(); | ||||
|   while (iter.hasNext()) { | ||||
|     Wein wein = (Wein) iter.next(); | ||||
|     ... | ||||
|   } | ||||
|   ``` | ||||
| 
 | ||||
| ## Prozedurale SQL-Erweiterungen: SQL/PSM | ||||
| - SQL-Standard für prozedurale Erweiterungen | ||||
| - PSM: Persistent Stored Modules | ||||
|   - gespeicherte Module aus Prozeduren und Funktionen  | ||||
|   - Einzelroutinen | ||||
|   - Einbindung externer Routinen (implementiert in C, Java, ...) | ||||
|   - syntaktische Konstrukte für Schleifen, Bedingungen etc. | ||||
|   - Basis für Methodenimplementierung für objektrelationale Konzepte | ||||
| 
 | ||||
| Vorteile gespeicherter Prozeduren | ||||
| - bewährtes Strukturierungsmittel | ||||
| - Angabe der Funktionen und Prozeduren erfolgt in der Datenbanksprache selbst; daher nur vom DBMS abhängig | ||||
| - Optimierung durch DBMS möglich | ||||
| - Ausführung der Prozeduren erfolgt vollständig unter Kontrolle des DBMS | ||||
| - zentrale Kontrolle der Prozeduren ermöglicht eine redundanzfreie Darstellung relevanter Aspekte der Anwendungsfunktionalität | ||||
| - Konzepte und Mechanismen der Rechtevergabe des DBMS können auf Prozeduren erweitert werden | ||||
| - Prozeduren können in der Integritätssicherung verwendet werden (etwa als Aktionsteil von Triggern) | ||||
| 
 | ||||
| Variablendeklaration | ||||
| - Variablen vor Gebrauch deklarieren | ||||
| - Angabe von Bezeichner und Datentyp | ||||
| - optional mit Initialwert | ||||
| ```java | ||||
| declare Preis float; | ||||
| declare Name varchar(50); | ||||
| declare Menge int default 0; | ||||
| ``` | ||||
| 
 | ||||
| ### Ablaufkontrolle | ||||
| - Zuweisung `set var = 42;` | ||||
| - Bedingte Verzweigungen | ||||
|   ```java | ||||
|   if Bedingung then Anweisungen | ||||
|     [ else Anweisungen ] end if; | ||||
|   ``` | ||||
| - Schleifen | ||||
|   ```java | ||||
|   loop Anweisungen end loop; | ||||
|   while Bedingung do | ||||
|     Anweisungen end while; | ||||
|   repeat Anweisungen | ||||
|     until Bedingung end repeat; | ||||
|   ``` | ||||
| - Schleifen mit Cursor | ||||
|   ```java | ||||
|   for SchleifenVariable as CursorName cursor for | ||||
|     CursorDeklaration | ||||
|   do | ||||
|     Anweisungen | ||||
|   end for; | ||||
|   ``` | ||||
| 
 | ||||
| Ablaufkontrolle Beispiel: | ||||
| ```java | ||||
| declare wliste varchar(500) default ' '; | ||||
| declare pos integer default 0; | ||||
| 
 | ||||
| for w as WeinCurs cursor for | ||||
|   select Name from WEINE where Weingut = 'Helena' | ||||
| do | ||||
|   if pos > 0 then | ||||
|     set wliste = wliste || ',' || w.Name; | ||||
|   else | ||||
|     set wliste = w.Name; | ||||
|   end if; | ||||
|   set pos = pos + 1; | ||||
| end for; | ||||
| ``` | ||||
| 
 | ||||
| ### Ausnahmebehandlung | ||||
| - Auslösen einer Ausnahme (Condition) `signal ConditionName;` | ||||
| - Deklarieren von Ausnahmen | ||||
|   ```java | ||||
|   declare fehlendes_weingut condition; | ||||
|   declare ungueltige_region | ||||
|     condition for sqlstate value '40123'; | ||||
|   ``` | ||||
| - Ausnahmebehandlung | ||||
|   ```java | ||||
|   begin | ||||
|     declare exit handler for ConditionName | ||||
|     begin | ||||
|       -- Anweisungen zur Ausnahmebehandlung | ||||
|     end | ||||
|       -- Anweisungen, die Ausnahmen auslösen können | ||||
|   end | ||||
|   ``` | ||||
| 
 | ||||
| ### Funktionen | ||||
| - Funktionsdefinition | ||||
|   ```java | ||||
|   create function geschmack (rz int) | ||||
|     returns varchar(20) | ||||
|   begin | ||||
|     return case | ||||
|       when rz <= 9 then 'Trocken' | ||||
|       when rz > 9 and rz <= 18 then 'Halbtrocken' | ||||
|       when rz > 18 and rz <= 45 then 'Lieblich' | ||||
|       else 'Süß' | ||||
|     end | ||||
|   end | ||||
|   ``` | ||||
| - Aufruf innerhalb einer Anfrage | ||||
|   ```java | ||||
|   select Name, Weingut, geschmack(Restzucker) from WEINE | ||||
|   where Farbe = 'Rot' and geschmack(Restzucker) = 'Trocken' | ||||
|   ``` | ||||
| - Nutzung außerhalb von Anfragen `set wein_geschmack = geschmack (12);` | ||||
| 
 | ||||
| ### Prozeduren | ||||
| - Prozedurdefinition | ||||
| ```java | ||||
| create procedure weinliste (in erz varchar(30), | ||||
|   out wliste varchar(500)) | ||||
| begin | ||||
|   declare pos integer default 0; | ||||
|   for w as WeinCurs cursor for | ||||
|     select Name from WEINE where Weingut = erz | ||||
|   do | ||||
|     -- siehe Beispiel von Folie 12-40 | ||||
|   end for; | ||||
| end; end; | ||||
| ``` | ||||
| 
 | ||||
| Nutzung über call-Anweisung | ||||
| ```java | ||||
| declare wliste varchar(500); | ||||
| call weinliste ('Helena', wliste); | ||||
| ``` | ||||
| 
 | ||||
| Zugriffscharakteristik | ||||
| - Eigenschaften von Prozeduren, die Anfrageausführung und -optimierung beeinflussen | ||||
|   - **deterministic**: Routine liefert für gleiche Parameter gleiche Ergebnisse | ||||
|   - **no sql**: Routine enthält keine SQL-Anweisungen | ||||
|   - **contains sql**:Routine enthält SQL-Anweisungen (Standard für SQL-Routinen) | ||||
|   - **reads sql data**: Routine führt SQL-Anfragen (select-Anweisungen) aus | ||||
|   - **modifies sql data**: Routine, die DML-Anweisungen (insert, update, delete) enthält | ||||
| 
 | ||||
| ## Zusammenfassung | ||||
| - Verbindung zwischen SQL und imperativen Sprachen | ||||
| - Call-Level-Schnittstelle vs. Embedded SQL | ||||
| - objektrelationales Mapping | ||||
| - SQL/PSM: imperative Erweiterungen von SQL → Implementierung von Funktionen und Prozeduren | ||||
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							| @ -4,16 +4,16 @@ Unterlagen zu Informatik Vorlesungen der TU Ilmenau | ||||
| 
 | ||||
| - [Algorithmen und Datenstrukturen](Algorithmen%20und%20Datenstrukturen.md) | ||||
| - [Automaten, Sprachen und Komplexität](Automaten,%20Sprachen%20und%20Komplexität.md) | ||||
|   - [Flashcards - Karteikarten für Definitionen](Automaten,%20Sprachen%20und%20Komplexität%20-%20Flashcards.pdf) (ongoing) | ||||
|   - [Mind Map](Automaten,%20Sprachen%20und%20Komplexität%20-%20MindMap.pdf) (ongoing) | ||||
|   - [Flashcards - Karteikarten für Definitionen](Automaten,%20Sprachen%20und%20Komplexität%20-%20Flashcards.pdf) (work in progress) | ||||
|   - [Mind Map](Automaten,%20Sprachen%20und%20Komplexität%20-%20MindMap.pdf) (work in progress) | ||||
| - [Betriebssysteme](Betriebssysteme.md) | ||||
|   - [Flashcards/Karteikarten](Betriebssysteme%20-%20Flashcards.pdf)(ongoing) | ||||
|   - [Mind Map](Betriebssysteme%20-%20MindMap.pdf) (ongoing) | ||||
|   - [Fragenkatalog](Betriebssysteme%20-%20Fragen.md) | ||||
|   - [Flashcards/Karteikarten](Betriebssysteme%20-%20Flashcards.pdf) | ||||
|   - [Mind Map](Betriebssysteme%20-%20MindMap.pdf) (work in progress) | ||||
|   - [Fragenkatalog](Betriebssysteme%20-%20Fragen.md) (work in progress) | ||||
| - [Computergrafik](Computergrafik.md) | ||||
|   - [Computergrafik Cheatsheet](Computergrafik%20-%20Cheatsheet.pdf) (work in progress) | ||||
| - [Datenbanksysteme](Datenbanksysteme.md) (ongoing) | ||||
|   - [Fragenkatalog](Datenbanksysteme%20-%20Fragen.md) | ||||
| - [Datenbanksysteme](Datenbanksysteme.md) | ||||
|   - [Fragenkatalog](Datenbanksysteme%20-%20Fragen.md) (work in progress) | ||||
| - [Einführung in die Medizinische Informatik](Einführung%20in%20die%20Medizinische%20Informatik.md) | ||||
| - [Grundlagen und diskrete Strukturen](Grundlagen%20und%20Diskrete%20Strukturen.md) | ||||
|   - [GudS - Cheatsheet](Grundlagen%20und%20Diskrete%20Strukturen%20-%20Cheatsheet.pdf) | ||||
| @ -24,12 +24,12 @@ Unterlagen zu Informatik Vorlesungen der TU Ilmenau | ||||
| - [Rechnerarchitekturen 1](Rechnerarchitekturen%201.md) | ||||
|   - [Praktikum A1](Rechnerarchitekturen%201%20-%20Praktikum%20A1.pdf) | ||||
|   - [Praktikum A2](Rechnerarchitekturen%201%20-%20Praktikum%20A2.pdf) | ||||
| - [Rechnerarchitekturen 2](Rechnerarchitekturen%202.md) (ongoing) | ||||
| - [Softwaretechnik](Softwaretechnik.md) (ongoing) | ||||
|   - [MindMap](Softwaretechnik%20-%20MindMap.pdf) (ongoing) | ||||
|   - [Seminar](Softwaretechnik%20-%20Seminar.pdf) (ongoing) | ||||
| - [Rechnerarchitekturen 2](Rechnerarchitekturen%202.md) | ||||
| - [Softwaretechnik](Softwaretechnik.md) (work in progress) | ||||
|   - [MindMap](Softwaretechnik%20-%20MindMap.pdf) (work in progress) | ||||
|   - [Seminar](Softwaretechnik%20-%20Seminar.pdf) (work in progress) | ||||
|   - [Beispiel Flowchart](Softwaretechnik%20Flowchart.tex) | ||||
| - [Stochastik](Stochastik.md) (ongoing) | ||||
| - [Stochastik](Stochastik.md) (work in progress) | ||||
| - [Telematik 1](Telematik%201.md) | ||||
|   - [Telematik Cheatsheet](Telematik1-cheatsheet.pdf) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user