diff --git a/Writerside/images/image_669.png b/Writerside/images/image_669.png new file mode 100644 index 0000000..6fed3c0 Binary files /dev/null and b/Writerside/images/image_669.png differ diff --git a/Writerside/images/image_670.png b/Writerside/images/image_670.png new file mode 100644 index 0000000..fc81b58 Binary files /dev/null and b/Writerside/images/image_670.png differ diff --git a/Writerside/images/image_671.png b/Writerside/images/image_671.png new file mode 100644 index 0000000..b7fd927 Binary files /dev/null and b/Writerside/images/image_671.png differ diff --git a/Writerside/images/image_672.png b/Writerside/images/image_672.png new file mode 100644 index 0000000..5ea6281 Binary files /dev/null and b/Writerside/images/image_672.png differ diff --git a/Writerside/images/image_673.png b/Writerside/images/image_673.png new file mode 100644 index 0000000..99850c6 Binary files /dev/null and b/Writerside/images/image_673.png differ diff --git a/Writerside/images/image_674.png b/Writerside/images/image_674.png new file mode 100644 index 0000000..064f7ce Binary files /dev/null and b/Writerside/images/image_674.png differ diff --git a/Writerside/images/image_675.png b/Writerside/images/image_675.png new file mode 100644 index 0000000..796b14f Binary files /dev/null and b/Writerside/images/image_675.png differ diff --git a/Writerside/images/image_676.png b/Writerside/images/image_676.png new file mode 100644 index 0000000..d632ada Binary files /dev/null and b/Writerside/images/image_676.png differ diff --git a/Writerside/images/image_677.png b/Writerside/images/image_677.png new file mode 100644 index 0000000..bcad04a Binary files /dev/null and b/Writerside/images/image_677.png differ diff --git a/Writerside/topics/04/Datenbanken/01_semantischeDatenmodellierungUndRelationenmodell.md b/Writerside/topics/04/Datenbanken/01_semantischeDatenmodellierungUndRelationenmodell.md index 7d9a554..e258e4b 100644 --- a/Writerside/topics/04/Datenbanken/01_semantischeDatenmodellierungUndRelationenmodell.md +++ b/Writerside/topics/04/Datenbanken/01_semantischeDatenmodellierungUndRelationenmodell.md @@ -153,4 +153,66 @@ ![image_656.png](image_656.png) -#### Minimalkardinalität 1 → "Richtung 1" \ No newline at end of file +#### Minimalkardinalität 1 → "Richtung 1" +![image_669.png](image_669.png) +![image_670.png](image_670.png) + +```sql + ABTEILUNGSNR INT4 not null, + constraint FK_MA_ZUGEH_ABT foreign key (ABTEILUNGSNR) + references ABTEILUNG (ABTEILUNGSNR) + ON delete restrict on update restrict +``` + +#### Minimalkardinalität 0 → "Richtung 1" +- nahezu identisch zu [1...1](#minimalkardinalit-t-1-richtung-1) +- hier möglichkeit für `Abteilungsnr = null` + +```sql + ABTEILUNGSNR INT4 null, + constraint FK_MA_ZUGEH_ABT foreign key (ABTEILUNGSNR) + references ABTEILUNG (ABTEILUNGSNR) + ON delete restrict on update restrict +``` + +#### Minimalkardinalität 0 bzw. 1 → Vielfalt +- 1. NF erlaubt es nicht, da Collection-Datentypen nicht erlaubt sind + - vor allem für Fremdschlüsselspalten +- wenn 0/1..* → allein über constraints nicht implementierbar + - kann man dann über Trigger machen (Kapitel 6) + +→ Umwandeln in [n:m Assoziation](#umwandlungsregel-n-m-assoziation) + +#### Umwandlungsregel n:m Assoziation +##### 1..*:1..* Assoziation {id="1-1-assoziation_1"} +![image_672.png](image_672.png) +- Einfügen einer neuen Tabelle, welche aus den anderen beiden Tabellen jeweils einen Fremdschlüssel hat + - Primärschlüssel jeweils als `concatenated key` einfügen + - dann muss er immer mit drin sein + - dadurch kann jede Zeile aus beiden Tabellen auf mehrere aus der anderen verlinken +- _geht dann auch mit >2 Tabellen_ + + +##### 0..*:0..* Assoziation +- Vier Alternativen + 1. FK bei R1 + 2. FK bei R2 + 3. FK bei R1 und R2 + 4. m:n Relation einfügen wie [hier](#umwandlungsregel-n-m-assoziation) +- Hauptnavigationsrichtung der Anwendung entscheidet + +##### Assoziation mit sich selbst (Stückliste) +> Selbstreferenzierende n:m Assoziation + +###### Beispiel Stückliste Fahrrad +![image_673.png](image_673.png) +![image_674.png](image_674.png) +- man verfährt wie bei der n:m Beziehung durch Einfügen einer Assoziationsklasse + - ![image_675.png](image_675.png) +- um Fahrradstückliste zu implementieren sind also 2 Tabellen notwendig: + - | Teileliste | Stückliste | + |---------------------------------|---------------------------------| + | ![image_676.png](image_676.png) | ![image_677.png](image_677.png) | + + +### Abbildung Vererbungshierarchien