Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es ein MySQL-Äquivalent zum set-Typ von Python?

Der richtige Weg, eine Menge in SQL zu implementieren, wäre mit zwei zusätzlichen Tabellen:

CREATE TABLE set (
    id int unsigned PRIMARY KEY AUTO_INCREMENT
);

CREATE TABLE set_member (
    set_id int unsigned NOT NULL,
    FOREIGN KEY (set_id) REFERENCES set(id),
    member <whatever_type_your_set_is_of> NOT NULL,
    UNIQUE (set_id, member)
);

(Möglicherweise können Sie das set vermeiden Tabelle, wenn Sie Sätze in nur einer Tabelle speichern möchten und diese Tabelle eine eindeutige ID hat und Sie nur einen Satz pro Datensatz in der Tabelle speichern)

Da es sehr wahrscheinlich ist, dass Sie nicht nach einem geeigneten SQL-Ansatz suchen (was eigentlich in Ordnung ist, wenn Sie werden außer dem Speichern und Abrufen niemals irgendeine datenbankinterne Operation an diesen Sätzen durchführen), Sie werden Ihren Satz wahrscheinlich denormalisiert in einem einzelnen Feld in einer Tabelle speichern, anstatt die empfohlenen Vorgehensweisen zu befolgen; In diesem Fall gibt es keinen nativen MySQL-Datentyp, der ein Python-Set darstellen kann, und Sie müssen Ihr Set in einem varchar serialisieren oder ein text Säule. Es liegt ganz bei Ihnen, ein Serialisierungsformat auszuwählen, das Ihren Anforderungen entspricht.