Datenbank-Einschränkungsdesign und -Implementierung

MySQLMySQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du verschiedene Einschränkungen in einem Datenbank-Schema hinzufügen kannst, einschließlich Primärschlüssel, Fremdschlüssel, eindeutige Einschränkungen, Standardwerte und Prüf-Einschränkungen. Am Ende dieses Projekts wirst du einen besseren Überblick haben, wie du in einer relationalen Datenbank Datenintegritätsregeln entwirfst und durchsetzt.

👀 Vorschau

Vorschau der Datenbank-Schema-Einschränkungen

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du einen zusammengesetzten Primärschlüssel auf der salgrade-Tabelle erstellst
  • Wie du einen Fremdschlüssel auf dem deptno-Feld in der emp-Tabelle angibst
  • Wie du eine eindeutige Einschränkung verwendest, um Duplikate im ename-Feld in der emp-Tabelle zu vermeiden
  • Wie du einen Standardwert für das comm-Feld in der emp-Tabelle setzt
  • Wie du eine Prüf-Einschränkung verwendest, um das Eintragen von Einstellungsdatum nach dem 28. Februar 2022 im hiredate-Feld in der emp-Tabelle zu verhindern

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Die Wichtigkeit von Datenintegritätseinschränkungen in der Datenbank-Entwicklung zu verstehen
  • Verschiedene Arten von Einschränkungen in einer MySQL-Datenbank umzusetzen
  • Best Practices für die Aufrechterhaltung von Datenqualität und -konsistenz anzuwenden
  • Probleme mit Datenbank-Einschränkungen zu beheben und zu debuggen

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql(("MySQL")) -.-> mysql/SystemManagementToolsGroup(["System Management Tools"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/alter_table("Table Modification") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/source("External Code Execution") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/database("DB Function - Info Retrieval") mysql/SystemManagementToolsGroup -.-> mysql/show_status("Status Overview") mysql/SystemManagementToolsGroup -.-> mysql/show_variables("Configuration Overview") subgraph Lab Skills mysql/use_database -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/alter_table -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/select -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/source -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/database -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/show_status -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} mysql/show_variables -.-> lab-316800{{"Datenbank-Einschränkungsdesign und -Implementierung"}} end

Starte den MySQL-Server und importiere die Datenbank

In diesem Schritt lernst du, wie du den MySQL-Dienst startest und die personnel.sql-Datenbank importierst. Folge den Schritten unten, um diesen Schritt abzuschließen:

  1. Starte MySQL:

    sudo /etc/init.d/mysql start
  2. Importiere die personnel.sql-Datenbank in MySQL. Du kannst dies tun, indem du den folgenden Befehl in deinem Terminal ausführst:

    mysql -u root < /home/labex/project/personnel.sql

Dieser Befehl wird die personnel.sql-Datenbank mit dem Root-Benutzer in MySQL importieren.

Füge einen zusammengesetzten Primärschlüssel zur 'salgrade'-Tabelle hinzu

In diesem Schritt lernst du, wie du einen zusammengesetzten Primärschlüssel zur salgrade-Tabelle hinzufügen kannst. Folge den Schritten unten, um diesen Schritt abzuschließen:

  1. Melde dich am MySQL-Terminal an:

    mysql -uroot
  2. Verwende die personnel-Datenbank:

    USE `personnel`;
  3. Füge einen zusammengesetzten Primärschlüssel zur salgrade-Tabelle hinzu, wobei die Felder grade, losal und hisal als zusammengesetzter Primärschlüssel verwendet werden:

    ALTER TABLE salgrade
    ADD PRIMARY KEY (grade, losal, hisal);

Dadurch wird ein zusammengesetzter Primärschlüssel auf der salgrade-Tabelle erstellt, der die Felder grade, losal und hisal verwendet.

Füge Einschränkungen zur 'emp'-Tabelle hinzu

In diesem Schritt wirst du lernen:

  • Wie du einen Fremdschlüssel auf dem 'deptno'-Feld in der 'emp'-Tabelle angibst, der auf das 'deptno'-Feld in der 'dept'-Tabelle verweist.
  • Wie du eindeutige Einschränkungen verwendest, um die Duplizierung des 'name'-Felds in der 'emp'-Tabelle zu verhindern.
  • Wie du die Standardwert-Einschränkung verwendest, um den Standardwert des 'comm'-Felds in der 'emp'-Tabelle auf 100 zu setzen.
  • Wie du die Eingabe eines Einstellungsdatums nach dem 28. Februar 2022 im 'hiredate'-Feld der 'emp'-Tabelle mithilfe der Prüf-Einschränkung verhindern.

Folge den Schritten unten, um diesen Schritt abzuschließen.

  1. Verwende die personnel-Datenbank:

    USE `personnel`;
  2. Gib einen Fremdschlüssel auf dem deptno-Feld in der emp-Tabelle an, der auf das deptno-Feld in der dept-Tabelle verweist:

    ALTER TABLE emp
    ADD FOREIGN KEY (deptno) REFERENCES dept(deptno);
  3. Verwende eine eindeutige Einschränkung, um Duplikate im ename-Feld in der emp-Tabelle zu verhindern:

    ALTER TABLE emp
    ADD UNIQUE (ename);
  4. Verwende eine Standardwert-Einschränkung, um den Standardwert des comm-Felds in der emp-Tabelle auf 100 zu setzen:

    ALTER TABLE emp
    ALTER COLUMN comm SET DEFAULT 100;
  5. Verwende eine Prüf-Einschränkung, um die Eingabe von Einstellungsdatum nach dem 28. Februar 2022 im hiredate-Feld in der emp-Tabelle zu verhindern:

    ALTER TABLE emp
    ADD CHECK (hiredate <= '2022-02-28');

Zeige die Tabellenstruktur an

In diesem Schritt wirst du Befehle verwenden, um die Struktur der Tabellen salgrade und emp anzuzeigen:

  1. Zeige die Struktur der Tabelle salgrade an:

    desc salgrade;
  2. Zeige die Struktur der Tabelle emp an:

    desc emp;

Du solltest die folgende Ausgabe sehen:

MariaDB [personnel]> desc salgrade;
+-------+-------------+------+-----+---------+-------+
| Feld  | Typ         | Null | Schlüssel | Standardwert | Zusatz |
+-------+-------------+------+-----+---------+-------+
| grade | int(4)      | Nein | PRI | NULL    |       |
| losal | double(7,2) | Nein | PRI | NULL    |       |
| hisal | double(7,2) | Nein | PRI | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 Zeilen in Satz (0,001 Sekunden)

MariaDB [personnel]> desc emp;
+----------+-------------+------+-----+---------+-------+
| Feld     | Typ         | Null | Schlüssel | Standardwert | Zusatz |
+----------+-------------+------+-----+---------+-------+
| empno    | int(4)      | Nein | PRI | NULL    |       |
| ename    | varchar(20) | Ja   | UNI | NULL    |       |
| job      | varchar(20) | Ja   |     | NULL    |       |
| mgr      | varchar(20) | Ja   |     | NULL    |       |
| hiredate | date        | Ja   |     | NULL    |       |
| sal      | double(7,2) | Ja   |     | NULL    |       |
| comm     | double(7,2) | Ja   |     | 100,00  |       |
| deptno   | int(4)      | Ja   | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+
8 Zeilen in Satz (0,001 Sekunden)

Herzlichen Glückwunsch! Du hast das Projekt erfolgreich abgeschlossen.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.