SQL Datenbank – Primärschlüssel und Fremdschlüssel

Wenn man nicht oft mit Datenbanken in Berührung kommt, kann man schnell man wieder was vergessen oder verwechseln. Speziell beim Datenbank Schema Design, sind das wichtige Einstellungen. Man kann zum Beispiel die Datenbankabfrageperformance mit Fremdschlüssel enorm verbessern. Kleiner Hinweis vorweg, auch mit der richtigen Datenbanktyp (IMAP, InnoDB) lässt sich einiges rausholen.

Der wichtigste Satz, den ihr Euch merken müsst. Ein Primärschlüssel ist ein Attribute, womit man eine Datenbankzeile (Tupel) identifizieren kann. Ein Fremdschlüssel ist ein Attribute was auf den Primärschlüssel einer anderen Tabelle verweist und verknüpft diese auch.

Primärschlüssel erkennt man in Tabellen daran das das Attribute Unterstrichen ist.

Fremdschlüssel erkennt man in Tabellen daran das das Attribute Überstrichen ist.

Ein Primärschlüssel muss eindeutig und minimal sein. Also vermeidet gleich, zusammengesetzte Schlüssel als Primärschlüssel und setzt gleich eine ID die sich autoinkrementiert. Klar es gibt immer wieder Fälle, wo man bereits im Vorfeld weiß, dass der Primärschlüssel eindeutig sein wird. Gutes Beispiel Automarken, Wochentage, Schulfächer. Weil es halt nur ein Porsche, ein Freitag und ein Mathe gibt. Dann muss man nicht zwingend mit einer Integer ID die sich autoinkrementiert arbeiten. Ich tue es aber trotzdem. Man weiß ja nie, oder? So kann es ja sein und so war es bereits schon mal, dass ein Autokonzern seinen Namen änderte. Dann müsste man alle Einträge ändern. Mit der Integer ID muss man nur einen Wert aktualisieren.


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Laravel Mailhog Docker

October 20, 2021

Letztens wurde ich gefragt, wie ich Mail bei Laravel teste. Ich meinte ich habe einen SMTP Server den ich nutzen kann. Da meinte er, dass wäre zwar okay aber man könnte sich damit auch eine valide Mailadresse verbrennen. Mit verbrennen meint der Kollege, dass sie global als SPAM Mailadresse angerechnet werden kann. Falls die Tests […]

MySQL über die Console

October 16, 2021

Vielleicht geht es euch ja wie mir. Ständig vergesse ich die MySQL Commands. Schnell kommt es vor, dass man in einer MySQL Docker Instanz etwas an der Datenbank machen muss. In meinem Fall, der mich dazu brachte es ein für alle mal die wichtigsten MySQL Commands niederzuschreiben, war es, dass meine Docker App ständig meinte […]

Docker: Laravel 8 mit PHP 8

October 15, 2021

Moinsen Leute! Laravel 8 mit PHP 8 auf einem nginx mit node 14 laufen lassen. Wer das benötigt, der sollte folgende docker config nutzen. Wer eine andere Node Version braucht, der schaut hier nach welche er braucht und kopiert den Link hier zur geeigneten Nodejs Distribution rein. Und hier die Docker-compose.yml Datei. Lege einen nginx […]

Git Remote Eintrag löschen

October 15, 2021

Ihr habt ein lokales Repository und ein Remote Repository. Das Remote Repository liegt zum Beispiel bei GitHub und ihr wollt es nun aber bei GitLab unterbringen. Wie löscht man jetzt die Remote Config im lokalen Git Projekt Verzeichnis. Falls ihr noch nicht in dem gewünschten Verzeichnis seid, dann aber schnell hin da. Mit git status […]

Docker GUI – Portainer easy und übersichtlich

October 6, 2021

Klar, ich mag die Kommandozeile. Für alle möglichen Aufgaben ist sie mein zuverlässiger Begleiter. So auch im Docker Umfeld. Die Commands sind eigentlich einfach aber man vergisst schnell wieder einiges und muss dann im Netz Nachschlagen. Vielleicht geht es euch ja genau so? Und für Docker gibt es eine freie und wirklich gute GUI. Sie […]

Tailwind Purge unter npm run dev laufen lassen

August 28, 2021

Einer der Hauptgründe warum ich von Bootstrap auf TaiklwindCSS umgestiegen bin, ist der realisierte Traum von relative kleinen CSS Dateien. Statt ein ganzes CSS Framework immer und wieder zu laden, kann man mit TailwindCSS nur den wirklich im Code benötigten Style generieren lassen. Also eine 100% Effizienz, was bedeutet wir sparen Ressourcen. Und zwar Strom […]