![]() |
Datenbank: MYSQL • Version: 6.3 • Zugriff über: Workbench
Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench
Hallo,
ich bin neu hier und habe gleich mehrere Fragen. Ich habe gerade das Fach Datenbanken in der Uni und eigentlich sollen wir nur lernen, wie man eine Datenbank anlegt aber ich will es erweitern Ich arbeite mit MY-SQL Workbench Zu meinen Fragen: Also ich will eine Datenbank erstellen die 2-3 Tabellen beinhaltet Also die 1.Tabelle "User" beinhaltet folgendes: ----- ID Vorname Nachname Alter Straße Hausnummer Handy Bsp hierfür: 1 Hans Peter 55 Galaxiestraße 17 01234566 hans.peter@gmx.de ----- Die 2.Tabelle "Skills" soll die Skills beinhalten die ein User hat ------ ID Skill Preis pro Tag Bsp hierfür: 1 C++ 200€ ----- So jetzt habe ich was gelesen, dass man wenn man einen Primärschlüssel hat einen Fremdschlüssel benutzen kann Jedoch haben wir das Thema noch nicht behandelt Ich habe jetzt recherchiert jedoch verstehe ich das nicht ganz Was bringt mir der Primärschlüssel? und was der Fremdschlüssel? Ich habe auch in google gesehen, dass ich theoretisch auch einen Fremdschlüssel benutzen könnte. Die Idee ist diese: Wenn ich eine 3.Tabelle namens "User_Skills" anlege, könnte ich diesen doch als Fremdschlüssel verwenden Das würde dann so aussehen ID User_id Skill_id Müsste jetzt die User_id von der Tabelle User_Skills auf die id vom der Tabelle User zugreifen? Aber wozu brauche ich das? welchen Vorteil habe ich? Und wie sollte dann der Eintrag in der User_Skills Tabelle aussehen? 1 1 1 Würde heißen Hans Peter 55 Galaxiestraße 17 01234566 hans.peter@gmx.de C++ 200€ Werden also beide Tabellen miteinander verknüpft? Wäre nett, wenn mir das jemand mal erklären könnte? |
AW: Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench
Hallo und willkommen hier...:dp:
Im Prinzip geht es darum die Datenbank zu normalisieren. (z.B. Vermeidung von Redundanzen) im Wiki ist es etwas ausführlicher erklärt. ![]() Man muß das nicht bis ins Extreme handhaben. Aber in jedem Datensatz die vollständige Adresse zu haben ist eher unproduktiv... :P Man muß aber nicht die Orte, Straßen und Hausnummern normalisieren...was man könnte. Zitat:
Der Möglichkeiten gibt es noch viel mehr... :P PS: Das Prinzip Normalisierung ist bei jedem DBMS identisch. |
AW: Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench
Habs mal überflogen. Das hast Du im Prinzip alles richtig beschrieben.
Wofür Du das brauchst, könntest Du merken, wenn Du ein Select Statement schreibst, was Dir User und Skills ausgeben soll, ohne die 3. Tabelle zu haben. Der Primärschlüssel dient der (eindeutigen) Identifikation eines Datensatzes einer Tabelle. Der Fremdschlüssel zeigt auf einen solchen Primärschlüssel und schafft so aus einer anderen Tabelle bzw. Datensatz eine Zuordnung zum Datensatz mit dem jeweiligen Primär-Schlüssel. Es ist eben einfach eine Zuordnung. Jenachdem wie Du nun die Fremdschlüssel in den Tabellen einbaust und auf andere Tabellen zeigen lässt, schaffst Du also Verbindungen zwischen den Datensätzen. Du hast mit der 3. Tabelle eine n:m Verbindung angelegt. Heisst jeder User kann alle Skills haben. In einem anderen Fall z.B. Bestellungen, bestehend aus der Bestellung selbst und den Bestellpositionen (2 Tabellen) wäre eine solche Zuordnung (n:m) unsinnig. Hier erhält lediglich die Bestellposition einen Fremdschlüssel zur Bestellung. Ich denke, wenn Du etwas mit SQL rumspielst und dein Beispiel erweiterst und abfragst, wirst Du die Grundzüge schnell verstehen. P.S: Was Du beschrieben hast, nennt man das Datenmodell. Es ermöglicht eine Verknüpfung. Erstmal steht halt einfach alles so da, wie Du es definiert hast und mit Daten versehen hast. Eine Abfrage (Query, Select Statement, ..) kann diese Tabellen und verknüpfen, anhand der Schlüsselfelder. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz