Daten array-Typ in mysql
Ich habe eine variable vom Typ array und ich möchte, um es zu speichern, wie es in der Datenbank(mysql) und wenn ich tinyblob, dass ich in der Regel verwenden Sie in java für die Anzeige es wieder abnormal output.
Also, was ist der richtige Datentyp für das array in php.
$countryGoup=array("USA","FRANCE","GERMANY","BRITAIN");
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie:
1) verwenden Sie ein SET-Datentyp, sofern die Werte sind wenige und Feste
Definieren Sie die Spalte in der
CREATE TABLE
- Anweisung alsSET('USA', 'France', 'Germany', ...) NOT NULL
(nicht null, optional), und verwenden Sie Abfragen wie:2) die Nutzung einer lookup-Tabelle mit einer foreign Referenz
So definieren Sie eine
countries
Tabelle:definieren und eine pivot-Tabelle, dass links auf Ihre Haupt-Objekt (f.ex. "Benutzer") zu den Ländern, so esabilishing eine viele-zu-viele-Beziehung.
F. ex., ein
users_countries
Tabelle linkusers
Tabellecountries
Tabelle in dieser Art:In diesem Beispiel Benutzer 1 verbunden ist, um Ländern mit der id 1 und 2 (USA und Deutschland), 2 Benutzer verknüpft ist, nur in den USA, und so weiter
3) verwenden Sie ein Komma-getrennter string, oder andere Separatoren, oder serialisieren des Arrays
Dies beinhaltet die Verwendung der server-side-Sprache (in deinem Fall PHP) zu concat die Werte mit einigen Trennzeichen (wie Komma
,
oder Rohr|
):Wenn Sie abrufen den Wert aus der db ermittelt werden die Zeichenfolge, die Sie setzen in, und erhalten wieder ein array mit
$array = explode(",", $retrievedValueFromDb)
, die die gleichen Trennzeichen.Update:
4) Werte Abzurufen, find_in_set() MySQL Funktion
Können Sie sich verlassen, auch auf die
find_in_set(needle, field)
Funktion, die eine Ganzzahl zurückgibt, die größer als null, wenn der string vorhanden ist, in einem Komma-getrennten Wert-Feld.Also, wenn Sie verwenden, Ansatz 1) und ein string-Feld wie
"USA,Germany"
Sie erhalten den Spalten, in denenUSA
vorhanden ist, durch Verwendung von:Ansatz 1) funktioniert, wenn Sie haben einige Feste Werte, auch sehr leicht auf Abfragen. Nachteil ist, dass Sie sind begrenzt auf 64 Werte, dass die Werte korrigiert werden müssen, und nicht enthalten, ein Komma (,) als als Trennzeichen verwendet.
Ansatz 2) ist die am meisten standardisierte und richtig, es ist auch normalisiert und Abfrage-effiziente
Ansatz 3) ist einfach, aber erfordert zusätzliche Verarbeitung und nicht so einfach für SQL
Wie gesagt, anderswo, es ist kein "array" datatype in das dbms, müssen Sie einige Abhilfe.