Frage von Joojoo, 34

Wie gebe ich Daten sinnvoll in eine Datenbank ein?

Ich bin gerade dabei, eine Datenbank zu erstellen, jedoch habe ich relativ wenig Wissen dazu und daher folgendes Problem: Die Personen (die in der Datenbank aufgelistet werden sollen) konnten bei ihrer Anmeldung mehrere Länder angeben. Bei meiner Abfragen sollen dann alle Personen angezeigt werden die (unter anderem) ein bestimmtes Land angegeben haben.

Beispiel:

Person X: Spanien, Portugal

Person Y: Spanien

Person Z: Frankreich

Ich will nun alle Personen wissen, die Spanien angegeben haben, also Person X und Y

Wie gebe ich die Daten in die Datenbank ein, damit eine solche Abfrage funktioniert?

Antwort
von valvaris, 16

kommt drauf an, wie du die Länger und deren Zuordnung gespeichert hast - Das wäre eine typische "M zu N"-Zuordnung, wobei Leute und Länder je eine Tabelle sind und eine dritte, in der steht, welche Person ein Land gewählt hat, wobei die Personen mehrfach vorkommen können.

Leute (id, name): 1 - Person X, 2 - Person Y, 3 - Person Z
Laender (id, name): 1 - Spanien, 2 - Portugal, 3 - Frankreich
LaenderLeute (person_id, land_id): (1,1), (1,2), (2,1), (3,3)

Dann kommts drauf an, welche Datenbank du benutzt. MySQL, MSSQL, Oracle.....?

Die Abfrage selbst könnte dann einfach so aussehen

(select person_id from LaenderLeute where land_id=1;)

Damit kriegst du dann 1 und 2 raus für Person X und Y.

Kommentar von Joojoo ,

Okay danke! aber ich will ja den Namen der Person letztendlich haben und nicht deren ID. Wie kriege ich das dann hin? 

Kommentar von valvaris ,

das kannst du dann aus der personen-datenbank holen, oder, falls du mysql benutzt, mit frontends wie phpmyadmin. Dort kannst du die Tabellen verknüpfen und er macht alles alleine. Du wählst dann spanien aus und er zeigt dir die namen an.

Antwort
von wotan38, 1

Genau das ist die herausragende Eigenschaft einer relationalen Datenbank, dass sie 1:n Beziehungen darstellen und verarbeiten kann. Nur ist das nicht ganz einfach, man muss sich schon etwas in die Datenbanktechnik einarbeiten. Aber abschrecken lassen sollte man sich deshalb nicht, denn gerade für so einfache Aufgaben wie Deine lassen sich bereits mit etwas Grundwissen realisieren.

Das bei diesen Datenbanken angewandte Prinzip ist die Aufteilung der Daten in mehrere Tabellen, die dann zur Verarbeitung verknüpft werden können.

In Deinem Fall brauchst Du drei Tabellen:

Eine für die Personen, eine für die Länder und eine für die Zuordnung.

1. Personen: Pers-Id, Name, ggf. weitere Daten zur Person.

2. Länder: Land-Id, Land, ggf. weitere Daten zum Land.

3. Zuordnung: Pers-Id, Land-Id,,,ggf. weitere Angaben zur Zuordnung.

In Personen steht nun:

1, Person-X, ...

2, Person-Y, ...

3, Person-Z, ...

In Länder steht:

4, Frankreich, ...

5, Portugal, ...

9, Spanien, ...

In Zuordnung steht:

1, 5, ...

1, 9, ...

2, 9, ...

3, 4, ...

Alle Einträge aufgelistet mit:

SELECT Name, Land, ... FROM Personen, Länder, Zuordnung

WHERE Zuordnung.Pers-id = Personen.Pers-Id

AND Zuordnung.Land-ID = Länder.Land-Id

sehen dann so aus:

Name                 Land

------------------------------------------------

Person-X,  Portugal

Person-X,  Spanien    

Person-Y,  Spanien

Person-Z,  Frankreich

Wenn Du jetzt noch z.B. zusätzlich angibst:

WHERE Land = 'Spanien'

bekommst Du nur die beiden Zeilen mit Spanien.

Das hier ist das Minimum, was Du wissen und machen musst, um Deine Aufgabe zu lösen. Da gibt es natürlich viele Feinheiten zum Ergänzen, die ich der Einfachkeit halber weggelassen habe. 

Antwort
von quinann, 16

Mach eine Excel-Tabelle, die Länder in verschiedenen Spalten eingeben und dann  kannst du über "sortieren und filtern" die einzelnen Länder rausziehen

Antwort
von Eklob, 15

Die Länder in verschiedenen Spalten eingeben und dann alle Spalten abfragen!

Antwort
von TheAllisons, 12

Nur ein Land in einer Spalte eingeben, dann ist es eindeutig zuweisbar bei einer Abfrage.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten