2016-08-09 30 views
2

In der Vergangenheit habe ich nur HTML, CSS und JavaScript für die Website-Entwicklung verwendet; Aber ich habe PHP oder MySQL nicht wirklich berührt und lehre sie jetzt selbst.Was ist die beste Vorgehensweise zum Speichern von mehrschichtigen Daten in mySQL?

Ich möchte beginnen, wie ich weitergehen will, so fragte mich, auf die allgemeine Meinung, was ist die beste Art der Struktur der folgenden Art von Daten in MySQL.

Wenn ich verschiedene Einträge über Personen mit den folgenden Feldern hatte; ID, Name, DateOfBirth, Telefonnummern. Wenn ich diese Informationen als Variable in JavaScript für jeden Eintrag speichern würde, hätte ich die 4 Werte als ein Array mit dem Eintrag Telefonnummern, der ein Array innerhalb dieses Arrays aller Telefonnummern ist. Beispiel:

["355","John","12/12/2016",["07123456789","07987654321"]] 

In MySQL gibt es offensichtlich keinen "Array" -Datentyp; Ich frage mich also, wie Sie persönlich Daten in einem ähnlichen Format wie in MySQL speichern würden. Die Möglichkeiten, die ich aus meinem derzeitigen Verständnis von MySQL sehe, sind folgende.

  1. Haben Sie 4 Spalten für die 4 Werte, haben Sie eine Zeichenfolge aus dem Array von Telefonnummern, die dann in ein Array aufgeteilt werden können, sobald sie aus der Datenbank abgerufen werden.
  2. Zuerst 4 Spalten haben und dann die Datenbank automatisch eine neue Spalte jedes Mal hinzufügen, wenn eine neue Telefonnummer zu einem Eintrag hinzugefügt wird, wenn kein Platz dafür ist (also wenn die meisten Telefonnummern einen Eintrag hatten, war 4 Sie ' d haben ID, Name, DateOfBirth, Telefon1, Telefon2, Telefon3, Telefon4 als die Spalten).
  3. Haben Sie eine separate Tabelle in der Datenbank für Telefonnummern mit einem Eintrag pro Nummer mit den Spalten ID und Telefonnummer gespeichert, ID bezieht sich auf die ID in der ursprünglichen Tabelle. Wenn ich dann die Telefonnummern eines Eintrags benötige, führe ich eine Abfrage aus, die nach allen Einträgen mit dieser ID sucht und sie zurückgibt.

Ich bin sicher, dass es andere Methoden geben muss; Wenn also die beste Methode nicht zu den oben genannten gehört, lass es mich wissen.

Mit freundlichen Grüßen.

+0

Wie über eine XML-Struktur zu schaffen? SQL unterstützt den XML-Datentyp. –

+2

Die meisten vernünftigen DB-Leute würden empfehlen 3. – cHao

Antwort

1

Option # 3 wäre die standardisierte normalisierte relationale Datenbank, um dies zu speichern.

Ihre Tabellen aussehen könnten (zum Beispiel):

create table Person (
    `ID` int auto_increment primary key, 
    `Name` varchar(255), 
    `DateOfBirth` date); 

create table Telephone (
    `ID` int, 
    `Number` varchar(20), 
    foreign key (`ID`) references Person(`ID`) on delete cascade); 
+0

Ein eindeutiger Index auf (ID, Nummer) wäre wahrscheinlich auch eine gute Idee, doppelte Einträge für die gleiche Person zu verhindern. – cHao