Skip to content

Commit d0fa68c

Browse files
author
GitLab CI
committed
references schon gemacht
1 parent e541ea9 commit d0fa68c

2 files changed

Lines changed: 126 additions & 112 deletions

File tree

php-db-optimierung/constraints/index.html

Lines changed: 64 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ <h2 class="title" id="slide-0">
6363

6464

6565

66-
<p>Ein Constraint kennen Sie schon:</p>
66+
<p>Zwei Constraint kennen Sie schon:</p>
6767

6868
<div class="example">
6969
<pre><code class="language-sql linenums">sql&gt; CREATE TABLE departments ( dep_name VARCHAR(20) PRIMARY KEY, … );
@@ -97,11 +97,71 @@ <h2 class="title" id="slide-0">
9797
Detail: Key (name)=(Marketing) already exists.
9898
</code></pre></div>
9999

100-
<p>Der Primärschlüssel muss eindeutig sein. Das ist ein <strong>unique constraint</strong>.</p>
100+
<p>Der Primärschlüssel muss eindeutig sein.</p>
101101

102102

103103
<a class="slide_break do-not-print" id="slide-4" href="slide.html#slide-4" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 4"></a>
104104

105+
<h2 id="references">References</h2>
106+
107+
<p>Was bedeutet die Fehlermeldung am Ende?</p>
108+
109+
<div class="example">
110+
<pre><code class="language-sql linenums">CREATE TABLE departments (
111+
dep_id SERIAL PRIMARY KEY,
112+
dep_name VARCHAR(20)
113+
);
114+
CREATE TABLE employees (
115+
name VARCHAR(20),
116+
dep_id integer NULL REFERENCES departments(dep_id)
117+
);
118+
INSERT INTO employees VALUES(&#39;Brigitte Jellinek&#39;, 99)
119+
[23503] ERROR: insert or update on table &quot;employees&quot;
120+
violates foreign key constraint &quot;employees_dep_id_fkey&quot;
121+
Detail: Key (dep_id)=(99) is not present in table &quot;departments&quot;.
122+
</code></pre></div>
123+
124+
125+
<a class="slide_break do-not-print" id="slide-5" href="slide.html#slide-5" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 5"></a>
126+
127+
<h2 id="referenzielle-integritt">Referenzielle Integrität</h2>
128+
129+
<p>Mit einem <strong>foreign key constraint</strong> kann man die Existenz des Fremdschlüssels
130+
in der anderen Tabelle sicher stellen.</p>
131+
132+
<p>Hier verweist die Spalte <code>dep_id</code> in der Tabelle <code>employees</code> auf
133+
die Spalte <code>dep_id</code> in der Tabelle <code>departments</code>.</p>
134+
135+
<p><code>dep_id</code> ist also der Primary Key von <code>departments</code> und ein Foreign Key in <code>employees</code>.</p>
136+
137+
<p>Mit dem Keyword <code>REFERENCES</code> wird diese Beziehung als Constrait festgelegt, es ist
138+
nicht möglich in <code>employees</code> eine <code>dep_id</code> zu benutzen, die in <code>departments</code> nicht existiert.</p>
139+
140+
<div class="example">
141+
<pre><code class="language-sql linenums">CREATE TABLE departments (
142+
dep_id SERIAL PRIMARY KEY,
143+
dep_name VARCHAR(20)
144+
);
145+
CREATE TABLE employees (
146+
name VARCHAR(20),
147+
dep_id integer NULL REFERENCES departments(dep_id)
148+
);
149+
</code></pre></div>
150+
151+
<p>Fremdschlüssel sind auch gute Kanditeten für einen Index: Wenn man
152+
die Abfrage machen will “Welche Leute arbeiten im Department 7” ist
153+
es gut einen Index auf <code>dep_id</code> in <code>employees</code> zu haben.</p>
154+
155+
156+
<a class="slide_break do-not-print" id="slide-6" href="slide.html#slide-6" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 6"></a>
157+
158+
<h2 id="unique-constraint">Unique Constraint</h2>
159+
160+
<p>Dass der Primärschlüssel eindeutig sein muss ist ein Beispiel für ein <strong>unique constraint</strong>.</p>
161+
162+
163+
<a class="slide_break do-not-print" id="slide-7" href="slide.html#slide-7" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 7"></a>
164+
105165

106166

107167
<p>Ein <strong>unique constraint</strong> kann man auf eine beliebige Spalte anwenden:</p>
@@ -115,7 +175,7 @@ <h2 class="title" id="slide-0">
115175
</code></pre></div>
116176

117177

118-
<a class="slide_break do-not-print" id="slide-5" href="slide.html#slide-5" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 5"></a>
178+
<a class="slide_break do-not-print" id="slide-8" href="slide.html#slide-8" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 8"></a>
119179

120180

121181

@@ -137,7 +197,7 @@ <h2 class="title" id="slide-0">
137197
</code></pre></div>
138198

139199

140-
<a class="slide_break do-not-print" id="slide-6" href="slide.html#slide-6" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 6"></a>
200+
<a class="slide_break do-not-print" id="slide-9" href="slide.html#slide-9" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 9"></a>
141201

142202
<h2 id="namen-fr-constraints">Namen für Constraints</h2>
143203

@@ -158,59 +218,6 @@ <h2 id="namen-fr-constraints">Namen für Constraints</h2>
158218
&quot;review_article_id_user_id_key&quot; UNIQUE CONSTRAINT, btree (article_id, user_id)
159219
</code></pre></div>
160220

161-
162-
<a class="slide_break do-not-print" id="slide-7" href="slide.html#slide-7" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 7"></a>
163-
164-
<h2 id="references">References</h2>
165-
166-
<p>Was bedeutet die Fehlermeldung am Ende?</p>
167-
168-
<div class="example">
169-
<pre><code class="language-sql linenums">CREATE TABLE departments (
170-
dep_id SERIAL PRIMARY KEY,
171-
dep_name VARCHAR(20)
172-
);
173-
CREATE TABLE employees (
174-
name VARCHAR(20),
175-
dep_id integer NULL REFERENCES departments(dep_id)
176-
);
177-
INSERT INTO employees VALUES(&#39;Brigitte Jellinek&#39;, 99)
178-
[23503] ERROR: insert or update on table &quot;employees&quot;
179-
violates foreign key constraint &quot;employees_dep_id_fkey&quot;
180-
Detail: Key (dep_id)=(99) is not present in table &quot;departments&quot;.
181-
</code></pre></div>
182-
183-
184-
<a class="slide_break do-not-print" id="slide-8" href="slide.html#slide-8" title="Wechsle zur Präsentations-Ansicht, Folie Nr. 8"></a>
185-
186-
<h2 id="referenzielle-integritt">Referenzielle Integrität</h2>
187-
188-
<p>Mit einem <strong>foreign key constraint</strong> kann man die Existenz des Fremdschlüssels
189-
in der anderen Tabelle sicher stellen.</p>
190-
191-
<p>Hier verweist die Spalte <code>dep_id</code> in der Tabelle <code>employees</code> auf
192-
die Spalte <code>dep_id</code> in der Tabelle <code>departments</code>.</p>
193-
194-
<p><code>dep_id</code> ist also der Primary Key von <code>departments</code> und ein Foreign Key in <code>employees</code>.</p>
195-
196-
<p>Mit dem Keyword <code>REFERENCES</code> wird diese Beziehung als Constrait festgelegt, es ist
197-
nicht möglich in <code>employees</code> eine <code>dep_id</code> zu benutzen, die in <code>departments</code> nicht existiert.</p>
198-
199-
<div class="example">
200-
<pre><code class="language-sql linenums">CREATE TABLE departments (
201-
dep_id SERIAL PRIMARY KEY,
202-
dep_name VARCHAR(20)
203-
);
204-
CREATE TABLE employees (
205-
name VARCHAR(20),
206-
dep_id integer NULL REFERENCES departments(dep_id)
207-
);
208-
</code></pre></div>
209-
210-
<p>Fremdschlüssel sind auch gute Kanditeten für einen Index: Wenn man
211-
die Abfrage machen will “Welche Leute arbeiten im Department 7” ist
212-
es gut einen Index auf <code>dep_id</code> in <code>employees</code> zu haben.</p>
213-
214221
<div class="pagination do-not-print">
215222
<ul>
216223

php-db-optimierung/constraints/slide.html

Lines changed: 62 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ <h1>Constraints</h1>
9595

9696

9797

98-
<p>Ein Constraint kennen Sie schon:</p>
98+
<p>Zwei Constraint kennen Sie schon:</p>
9999

100100
<div class="example">
101101
<pre><code class="language-sql linenums">sql&gt; CREATE TABLE departments ( dep_name VARCHAR(20) PRIMARY KEY, … );
@@ -129,7 +129,67 @@ <h1>Constraints</h1>
129129
Detail: Key (name)=(Marketing) already exists.
130130
</code></pre></div>
131131

132-
<p>Der Primärschlüssel muss eindeutig sein. Das ist ein <strong>unique constraint</strong>.</p>
132+
<p>Der Primärschlüssel muss eindeutig sein.</p>
133+
134+
</div>
135+
<div class="slide">
136+
137+
<h2 id="references">References</h2>
138+
139+
<p>Was bedeutet die Fehlermeldung am Ende?</p>
140+
141+
<div class="example">
142+
<pre><code class="language-sql linenums">CREATE TABLE departments (
143+
dep_id SERIAL PRIMARY KEY,
144+
dep_name VARCHAR(20)
145+
);
146+
CREATE TABLE employees (
147+
name VARCHAR(20),
148+
dep_id integer NULL REFERENCES departments(dep_id)
149+
);
150+
INSERT INTO employees VALUES(&#39;Brigitte Jellinek&#39;, 99)
151+
[23503] ERROR: insert or update on table &quot;employees&quot;
152+
violates foreign key constraint &quot;employees_dep_id_fkey&quot;
153+
Detail: Key (dep_id)=(99) is not present in table &quot;departments&quot;.
154+
</code></pre></div>
155+
156+
</div>
157+
<div class="slide">
158+
159+
<h2 id="referenzielle-integritt">Referenzielle Integrität</h2>
160+
161+
<p>Mit einem <strong>foreign key constraint</strong> kann man die Existenz des Fremdschlüssels
162+
in der anderen Tabelle sicher stellen.</p>
163+
164+
<p>Hier verweist die Spalte <code>dep_id</code> in der Tabelle <code>employees</code> auf
165+
die Spalte <code>dep_id</code> in der Tabelle <code>departments</code>.</p>
166+
167+
<p><code>dep_id</code> ist also der Primary Key von <code>departments</code> und ein Foreign Key in <code>employees</code>.</p>
168+
169+
<p>Mit dem Keyword <code>REFERENCES</code> wird diese Beziehung als Constrait festgelegt, es ist
170+
nicht möglich in <code>employees</code> eine <code>dep_id</code> zu benutzen, die in <code>departments</code> nicht existiert.</p>
171+
172+
<div class="example">
173+
<pre><code class="language-sql linenums">CREATE TABLE departments (
174+
dep_id SERIAL PRIMARY KEY,
175+
dep_name VARCHAR(20)
176+
);
177+
CREATE TABLE employees (
178+
name VARCHAR(20),
179+
dep_id integer NULL REFERENCES departments(dep_id)
180+
);
181+
</code></pre></div>
182+
183+
<p>Fremdschlüssel sind auch gute Kanditeten für einen Index: Wenn man
184+
die Abfrage machen will “Welche Leute arbeiten im Department 7” ist
185+
es gut einen Index auf <code>dep_id</code> in <code>employees</code> zu haben.</p>
186+
187+
</div>
188+
<div class="slide">
189+
190+
<h2 id="unique-constraint">Unique Constraint</h2>
191+
192+
<p>Dass der Primärschlüssel eindeutig sein muss ist ein Beispiel für ein <strong>unique constraint</strong>.</p>
133193

134194
</div>
135195
<div class="slide">
@@ -190,59 +250,6 @@ <h2 id="namen-fr-constraints">Namen für Constraints</h2>
190250
&quot;review_article_id_user_id_key&quot; UNIQUE CONSTRAINT, btree (article_id, user_id)
191251
</code></pre></div>
192252

193-
</div>
194-
<div class="slide">
195-
196-
<h2 id="references">References</h2>
197-
198-
<p>Was bedeutet die Fehlermeldung am Ende?</p>
199-
200-
<div class="example">
201-
<pre><code class="language-sql linenums">CREATE TABLE departments (
202-
dep_id SERIAL PRIMARY KEY,
203-
dep_name VARCHAR(20)
204-
);
205-
CREATE TABLE employees (
206-
name VARCHAR(20),
207-
dep_id integer NULL REFERENCES departments(dep_id)
208-
);
209-
INSERT INTO employees VALUES(&#39;Brigitte Jellinek&#39;, 99)
210-
[23503] ERROR: insert or update on table &quot;employees&quot;
211-
violates foreign key constraint &quot;employees_dep_id_fkey&quot;
212-
Detail: Key (dep_id)=(99) is not present in table &quot;departments&quot;.
213-
</code></pre></div>
214-
215-
</div>
216-
<div class="slide">
217-
218-
<h2 id="referenzielle-integritt">Referenzielle Integrität</h2>
219-
220-
<p>Mit einem <strong>foreign key constraint</strong> kann man die Existenz des Fremdschlüssels
221-
in der anderen Tabelle sicher stellen.</p>
222-
223-
<p>Hier verweist die Spalte <code>dep_id</code> in der Tabelle <code>employees</code> auf
224-
die Spalte <code>dep_id</code> in der Tabelle <code>departments</code>.</p>
225-
226-
<p><code>dep_id</code> ist also der Primary Key von <code>departments</code> und ein Foreign Key in <code>employees</code>.</p>
227-
228-
<p>Mit dem Keyword <code>REFERENCES</code> wird diese Beziehung als Constrait festgelegt, es ist
229-
nicht möglich in <code>employees</code> eine <code>dep_id</code> zu benutzen, die in <code>departments</code> nicht existiert.</p>
230-
231-
<div class="example">
232-
<pre><code class="language-sql linenums">CREATE TABLE departments (
233-
dep_id SERIAL PRIMARY KEY,
234-
dep_name VARCHAR(20)
235-
);
236-
CREATE TABLE employees (
237-
name VARCHAR(20),
238-
dep_id integer NULL REFERENCES departments(dep_id)
239-
);
240-
</code></pre></div>
241-
242-
<p>Fremdschlüssel sind auch gute Kanditeten für einen Index: Wenn man
243-
die Abfrage machen will “Welche Leute arbeiten im Department 7” ist
244-
es gut einen Index auf <code>dep_id</code> in <code>employees</code> zu haben.</p>
245-
246253
</div>
247254
<div class="slide">
248255
<h1>Constraints</h1>

0 commit comments

Comments
 (0)