Forum: PC-Programmierung Datenbank variable Anzahl Daten


von Martin (Gast)


Lesenswert?

Hallo.

Ich beschäftige mich gerade neu mit MariaDB. Dabei stellt sich mir 
folgende Frage: wie geht man in der Praxis vor, um eine variable Anzahl 
an Daten zu speichern: zB die IP zu einer Domain. Da kann es ja sein es 
gibt keine IP, einen A Record oder gleich mehrere oder zusätzlich noch 
AAAA.
Mit einem Feld Domain und einem IP ist es dann ja irgendwie nicht getan. 
Oder kann man irgendwie in IP mehrere Daten speichern? Wie hole ich die 
dann einzeln wieder aus dem Feld ab? Danke.



Martin

von Irgendwer (Gast)


Lesenswert?

Martin schrieb:
> Oder kann man irgendwie in IP mehrere Daten speichern?

Ja, indem man einfach mehrere Einträge pro IP anlegt

127.0.0.1  domaene1.de
127.0.0.1  domaene2.de
127.0.0.1  domaene3.de

von планар троль (Gast)


Lesenswert?

Man kann die Felder als Text, resp varchar definieren und XML eintraege 
in ein einzelnes Feld kombinieren. Man untergraebt so halt die 
suchfunktion.

von 50c (Gast)


Lesenswert?

планар троль schrieb:
> Man kann die Felder als Text, resp varchar definieren und XML eintraege
> in ein einzelnes Feld kombinieren. Man untergraebt so halt die
> suchfunktion.

...ich würde statt XML lieber JSON nehmen:
https://mariadb.com/kb/en/library/json-functions/

von test (Gast)


Lesenswert?

Oder eine Excel Tabelle base64 Kodiert im Textfeld speichern. Natürlich 
das xls vorher tippen um sich nicht die Performance zu verdauen.


Hilfe...

von test (Gast)


Lesenswert?

tippen = zippen

von werists (Gast)


Lesenswert?

Durch eine passende Datenstruktur über mehrere Tabellen mit eindeutigen 
Keys

Tabelle Domains -> key -> Tabelle IPs

LG Thomas

von Rolf M. (rmagnus)


Lesenswert?

test schrieb:
> Oder eine Excel Tabelle base64 Kodiert im Textfeld speichern. Natürlich
> das xls vorher tippen um sich nicht die Performance zu verdauen.

Willst du sie unverdaut wieder ausscheiden? ;-)

von Kai S. (kai1986)


Lesenswert?

Hallo,

wie werists schon gesagt hat über mehrere Tabellen (das ist genau einer 
der Gründe für Datenbanken). Du hast eine Tabelle mit den Domains (und 
einer Spalte ID (Primärschlussel)), eine zweite Tabelle mit den IPs (und 
einer eigenen Spalte ID (Primärschlussel) und als drittes eine Tabelle, 
in der die zusammengehörende ID aus der Domain Tabelle und die ID aus 
der IP Tabelle in je einer Spalte gelistet ist und zusammen eine 
Fremdschlüssel ergeben. Über die SQL Abfragen bekommst du die 
entsprechenden Daten bei der Abfrage passend zusammengesetzt wieder aus 
der Datenbank heraus.

Gruß Kai

von Egon D. (Gast)


Lesenswert?

Martin schrieb:

> Ich beschäftige mich gerade neu mit MariaDB. Dabei
> stellt sich mir folgende Frage: wie geht man in der
> Praxis vor, um eine variable Anzahl an Daten zu
> speichern: [...]

Man fragt die Wikipedie unter dem Stichwort:
"Normalisierung (Datenbank)".

von Clemens L. (c_l)


Lesenswert?

Egon D. schrieb:
> Normalisierung

z.B.
1
CREATE TABLE Domains(
2
  DomainID INT PRIMARY KEY,
3
  Name     TEXT
4
  /* ... */
5
);
6
CREATE TABLE DNS(
7
  DomainID INT,
8
  Name     TEXT,
9
  Value    TEXT
10
);
11
INSERT INTO Domains VALUES(1, 'martin.example');
12
INSERT INTO DNS VALUES(1, 'A', '203.0.113.42');
13
INSERT INTO DNS VALUES(1, 'AAAA  ', '2001:db8::2a');

Martin schrieb:
> Wie hole ich die dann einzeln wieder aus dem Feld ab?
1
SELECT *
2
FROM Domains
3
JOIN DNS USING (DomainID)
4
WHERE Domains.Name = 'martin.example';

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.