Einführung
In dieser Challenge entwerfen und erstellen Sie eine Tabelle namens employee_contacts in PostgreSQL, um Kontaktdaten von Mitarbeitern zu speichern. Dabei stellen Sie die Datenintegrität durch die Verwendung geeigneter Datentypen und Constraints sicher. Sie arbeiten in einer bereits vorbereiteten Umgebung, in der die Tabelle employees bereits vorhanden ist.
Ihre Aufgabe besteht darin, sich als Benutzer postgres über psql mit der PostgreSQL-Datenbank zu verbinden und anschließend SQL-Befehle direkt auszuführen, um die Tabelle employee_contacts anzulegen. Die Tabelle soll Spalten für contact_id (Primärschlüssel, automatisch inkrementierend), employee_id (Fremdschlüssel mit Bezug auf die Tabelle employees), phone_number (eindeutig) und email (darf nicht leer sein) enthalten.
Mitarbeitertabelle erstellen
Entwerfen Sie eine Tabelle zur Speicherung von Mitarbeiterkontaktdaten und gewährleisten Sie die Datenintegrität durch passende Datentypen und Einschränkungen (Constraints).
Die Tabelle employees wurde bereits für Sie erstellt. Falls Sie diese nicht sehen, können Sie sie mit folgendem Befehl anlegen:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
Aufgaben
- Erstellen Sie eine Tabelle namens
employee_contactsin PostgreSQL. Die Tabelle muss Spalten fürcontact_id(Primärschlüssel),employee_id(Fremdschlüssel auf die Tabelleemployees),phone_number(eindeutig) undemail(darf nicht NULL sein) enthalten. - Stellen Sie sicher, dass die Spalte
employee_idkorrekt auf die Spalteemployee_idin der Tabelleemployeesverweist.
Anforderungen
- Die Spalte
contact_idmuss ein automatisch inkrementierender Primärschlüssel sein. - Die Spalte
phone_numbermuss eindeutige Werte enthalten (Unique). - Die Spalte
emaildarf keineNULL-Werte zulassen. - Die Spalte
employee_idmuss als Fremdschlüssel auf die Tabelleemployeesdefiniert sein. - Führen Sie die SQL-Befehle über
psqlaus.
Beispiele
Die Tabellen employees und employee_contacts sollten die folgende Struktur aufweisen:

Table "public.employees"
Column | Type | Collation | Nullable | Default
-------------+-----------------------+-----------+----------+------------------------------------------------
employee_id | integer | | not null | nextval('employees_employee_id_seq'::regclass)
first_name | character varying(50) | | |
last_name | character varying(50) | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
Referenced by:
TABLE "employee_contacts" CONSTRAINT "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
Table "public.employee_contacts"
Column | Type | Collation | Nullable | Default
----------------+------------------------+-----------+----------+--------------------------------------------------
contact_id | integer | | not null | nextval('employee_contacts_contact_id_seq'::regclass)
employee_id | integer | | |
phone_number | character varying(20) | | |
email | character varying(100) | | not null |
Indexes:
"employee_contacts_pkey" PRIMARY KEY, btree (contact_id)
"employee_contacts_phone_number_key" UNIQUE CONSTRAINT, btree (phone_number)
Foreign-key constraints:
"employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
Hinweise
- Verwenden Sie die Anweisung
CREATE TABLE, um die Tabelle zu erstellen. - Nutzen Sie den Datentyp
SERIALfür die Spaltecontact_id, um automatisch eindeutige Ganzzahlen zu generieren. - Verwenden Sie den Constraint
PRIMARY KEY, um den Primärschlüssel festzulegen. - Nutzen Sie den Constraint
UNIQUE, um sicherzustellen, dass die Spaltephone_numberkeine Duplikate enthält. - Verwenden Sie den Constraint
NOT NULL, damit die Spalteemailzwingend ausgefüllt werden muss. - Setzen Sie den Constraint
FOREIGN KEYein, um die Beziehung zwischen der Spalteemployee_idin der Tabelleemployee_contactsund der Spalteemployee_idin der Tabelleemployeesherzustellen. - Denken Sie daran, sich mit
sudo -u postgres psqlan der PostgreSQL-Datenbank anzumelden, bevor Sie die SQL-Befehle eingeben.
Zusammenfassung
In dieser Challenge bestand die Aufgabe darin, eine PostgreSQL-Tabelle namens employee_contacts in einer vorgegebenen Umgebung zu erstellen. Dies umfasste den Entwurf der Tabellenstruktur mit Spalten für contact_id (Primärschlüssel, automatisch inkrementierend), employee_id (Fremdschlüssel mit Bezug auf die Tabelle employees), phone_number (eindeutig) und email (darf nicht NULL sein).
Zur Lösung war es notwendig, sich als Benutzer postgres via psql mit der Datenbank zu verbinden und die entsprechenden SQL-Befehle auszuführen, um die Tabelle und ihre Constraints zu definieren. Dadurch wurde die Datenintegrität und die korrekte Verknüpfung zwischen den Tabellen sichergestellt.


