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 |
@ -1881,3 +1881,440 @@ Zusammenfassung
|
||||
- Nicht-Standard bzw. proprietäre Schnittstellen
|
||||
|
||||
# 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