Heute dreht sich alles um das Erstellen von Datenbanken
...verwende die Ursprungs Datei der Datenbank, die du zu Beginn des Kurses von deiner Lehrkraft bekommen hast.
Lokale Kopien, mit gelöschten oder veränderten Datenbank-Einträgen kannst du nicht verwenden, um die kommenden Übungen zu machen.
www.appcamps.de
Aufgabe
Super! Nun kannst du Tabellen erstellen und löschen. Auf den nächsten Seiten schauen wir uns an, wie man Tabellen noch weitere Informationen mitgeben kann. Hier findest du den Spickzettel zu dieser Sitzung.
CREATE TABLE Temp_Agency
(AgencyID integer, AgencyName varchar(255),
ContactName varchar(255), Mail varchar(255))
Erstellt eine Tabelle in der Datenbank mit vier Spalten (ID, Name, Kontakt und E-Mail-Adresse).
DROP TABLE Temp_Agency
www.appcamps.de
Aufgabe
Auf den nächsten Seiten findest du mögliche Lösungen. Überlege aber zuerst selbst, bevor du weiter klickst.
CREATE TABLE Temp_Agency
(AgencyID integer
PRIMARY KEY AUTOINCREMENT,
AgencyName varchar(255),
ContactName varchar(255),
Mail varchar(255))
Erstellt eine Tabelle in der Datenbank mit vier Spalten (ID, Name, Kontakt und E-Mail-Adresse). Die ID wird nun auto-incremented und als Primärschlüssel gesetzt.
Um die Spalten genauer zu definieren werden, Constraints genutzt. So kannst du z.B. bestimmen, dass eine Spalte der Primärschlüssel ist oder dass sie auto-incremented wird. Weitere Infos dazu findest du auf w3schools und auf den nächsten Folien.
www.appcamps.de
Aufgabe
Auf den nächsten Seiten schauen wir uns noch weitere Constraints an.
Schauen wir uns das Beispiel aus dem Startvideo an
CREATE TABLE Temp_Agency
(AgencyID integer
PRIMARY KEY AUTOINCREMENT,
AgencyName varchar(255)
NOT NULL,
ContactName varchar(255),
Mail varchar(255),
CONSTRAINT UC_Mail UNIQUE (Mail))
Bevor wir die Tabelle mit Inhalt füllen, betrachten wir noch weitere Arten von Constraints. Zuerst müssen wir unsere Tabelle aber wieder löschen. Das kennst du schon:
Was könnte noch sinnvoll sein? Vielleicht wollen wir die Eingabe eines Wertes in einer bestimmten Spalte erzwingen (NOT NULL). Oder darf ein bestimmter Wert nur ein Mal vorkommen (UNIQUE)?
DROP TABLE Temp_Agency
Erstellt eine Tabelle in der Datenbank mit vier Spalten (ID, Name, Kontakt und E-Mail-Adresse). Es muss immer ein Agenturname angegeben werden (da NOT NULL) und die E-Mail-Adresse kann bei den unterschiedlichen Agenturen niemals identisch sein (da UNIQUE).
www.appcamps.de
Aufgabe
...dann kommt noch eine letzte Folie zu Contraints.
CREATE TABLE Temp_Agency
(AgencyID integer
PRIMARY KEY AUTOINCREMENT,
AgencyName varchar(255)
NOT NULL,
ContactName varchar(255)
DEFAULT "Arnold Hausmann",
Mail varchar(255))
Bevor wir uns mit weiteren Constraints beschäftigen, löschen wir die Tabelle erst noch mal:
Uns fällt auf, dass wir nicht bei jeder Firma einen Kontakt haben. Deswegen möchten wir, dass standardmäßig der Kontakt der Firma eingetragen wird, über die unser Online-Shop die Zeitarbeitsfirmen bucht. Dafür soll außerdem die E-Mail-Adresse nicht mehr auf UNIQUE gesetzt sein, damit diese für den Standardkontakt auch mehrfach eingetragen werden kann.
DROP TABLE Temp_Agency
Erstellt eine Tabelle in der Datenbank mit vier Spalten (ID, Name, Kontakt und E-Mail-Adresse). Es muss immer ein Agenturname angegeben werden und der Kontakt von Herrn Hausmann wird automatisch eingefügt, wenn keine andere Mail angegeben wird.
Beachte! Normalerweise kann man Constraints nachträglich ändern. Das klappt bei einigen Editoren allerdings nicht zuverlässig. Daher löschen wir die Tabelle immer und legen sie neu an.
www.appcamps.de
Aufgabe
Auf der nächsten Seite fügen wir Inhalte in die Tabelle ein.
ALTER TABLE Temp_Agency
ADD Price integer CHECK (Price<=50)
... und so Spalten ergänzen:
Ergänzt die Tabelle Temp_Agency um die Spalte Preis (Price). Beim Eintragen der Werte wird überprüft, ob der Preis höchstens bei 50 liegt.
Normalerweiser könntest du Constraints so löschen und ändern:
ALTER TABLE Temp_Agency
DROP CONSTRAINT UC_Mail
ALTER TABLE Temp_Agency
MODIFY ContactName DEFAULT "Arnold Hausmann"
Achtung! Doch leider gibt es bei sqliteonline.com ein Problem, sodass dies nicht möglich ist.
www.appcamps.de
Wir wollen nun aber trotzdem, dass auch in unserem Beispiel keine Firmen aufgenommen werden, die einen höheren Stundenlohn als 50 veranschlagen. Demnach fügen wir den CHECK Constraint einfach gleich beim Erstellen der Tabelle hinzu:
CREATE TABLE Temp_Agency (AgencyID integer PRIMARY KEY AUTOINCREMENT,
AgencyName varchar(255) NOT NULL,
ContactName varchar(255) DEFAULT "Arnold Hausmann",
Mail varchar(255), Price integer CHECK (Price<=50))
Aufgabe
Auf der nächsten Seite findest du mögliche Lösungen. Überlege aber zuerst selbst, bevor du weiter klickst.
INSERT INTO Temp_Agency
(AgencyName, ContactName, Mail, Price)
VALUES
("Cardinal", "Philipp",
"philipp@cardinal.de", 40)
Fügt die Agentur "Cardinal" mit der ID 1 und dem Kontakt Philipp (philipp@cardinal.de) in die Datenbank ein. Die Firma nimmt 40 pro Stunde.
oder:
INSERT INTO Temp_Agency
VALUES
(1, "Cardinal", "Philipp",
"philipp@cardinal.de", 40)
Fügt die Agentur "Cardinal" mit dem Kontakt Philipp (philipp@cardinal.de) in die Datenbank ein. Die Firma nimmt 40 pro Stunde.
www.appcamps.de
Aufgabe
Brauchst du etwas "Starthilfe"? Auf der nächsten Seite findest du den ERM-Ausschnitt zu den MitarbeiterInnen als Beispiel. Überlege aber zuerst selbst, bevor du weiter klickst.
INSERT INTO Temp_Agency
(AgencyName, ContactName, Price)
VALUES
("Malibu", "Maria", 36)
Fügt die Agentur "Despacito" mit dem Kontakt Dario (dario@despacito.de) in die Datenbank ein. Die Firma nimmt 54 pro Stunde.
oder:
INSERT INTO Temp_Agency
(AgencyName, ContactName, Mail, Price)
VALUES
("Despacito", "Dario",
"dario@despacito.de", 54)
Fügt die Agentur "Malibu" mit dem Kontakt Maria in die Datenbank ein. Die Firma nimmt 36 pro Stunde.
www.appcamps.de
Aufgabe
Auf der nächsten Seite findest du eine Lösung. Überlege aber zuerst selbst, bevor du weiter klickst.
www.appcamps.de
Aufgabe
Auf der nächsten Seite findest du eine mögliche Antwort. Überlege aber zuerst selbst, bevor du weiter klickst.
ERMs (Enitity-Relationship-Models) werden genutzt, um die Struktur einer Datenbank zu planen. Auf diese Weise können Redundanzen (unnötige Wiederholungen) vermieden werden, das Aktualisieren der Datenbank ist einfacher und es können Fehler vermieden werden. Hier findest du weitere Informationen zum Thema Datenbankmodellierung.
www.appcamps.de
Erweitert die Tabelle Orders mit dem Fremdschlüssel AgencyID.
ALTER TABLE Orders
ADD CONSTRAINT FK_AgencyOrders
FOREIGN KEY (AgencyID)
REFERENCES Temp_Agency(AgencyID)
Der Fremdschlüssel AgencyID muss noch in die Tabelle eingetragen werden.
Theoretisch geht das über diese Query:
Achtung: Leider gibt es bei dieser Art der Abfrage bei SQL-Editoren häufig Probleme.
www.appcamps.de