AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench

Ein Thema von iHüsoo91 · begonnen am 16. Dez 2015 · letzter Beitrag vom 16. Dez 2015
Antwort Antwort
iHüsoo91

Registriert seit: 16. Dez 2015
1 Beiträge
 
#1

Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench

  Alt 16. Dez 2015, 14:49
Datenbank: MYSQL • Version: 6.3 • Zugriff über: 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
E-Mail

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?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench

  Alt 16. Dez 2015, 15:00
Hallo und willkommen hier...

Im Prinzip geht es darum die Datenbank zu normalisieren. (z.B. Vermeidung von Redundanzen) im Wiki ist es etwas ausführlicher erklärt. https://de.wikipedia.org/wiki/Normal...28Datenbank%29
Man muß das nicht bis ins Extreme handhaben. Aber in jedem Datensatz die vollständige Adresse zu haben ist eher unproduktiv... Man muß aber nicht die Orte, Straßen und Hausnummern normalisieren...was man könnte.

Zitat:
Was bringt mir der Primärschlüssel? und was der Fremdschlüssel?
Der Primärschlüssel definiert, in der Regel, die Eindeutigkeit des Datensatzes z.B. über eine automatische ID oder einer Kombination von Feldern. Der Fremdschlüssel definiert, einfach ausgedrückt, die "Beziehung" zu einer anderen Tabelle. Über verschiedene Bedingungen steuert die DB z.B. das kein Datensatz eingetragen werden kann wenn die zugehörige ID nicht in der Fremdtabelle vorhanden ist.

Der Möglichkeiten gibt es noch viel mehr...

PS: Das Prinzip Normalisierung ist bei jedem DBMS identisch.

Geändert von haentschman (16. Dez 2015 um 15:08 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Mehrere Angfänger-Fragen bezüglich MYSQL-Workbench

  Alt 16. Dez 2015, 15:12
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.
Gruß, Jo

Geändert von jobo (16. Dez 2015 um 15:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz