Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il un équivalent MySQL au type d'ensemble de Python ?

La bonne façon d'implémenter un ensemble en SQL serait avec deux tables supplémentaires :

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)
);

(Vous pourrez peut-être éviter le set table, si vous souhaitez stocker des ensembles dans une seule table, et que cette table a un ID unique, et vous ne stockerez qu'un seul ensemble par enregistrement dans la table)

Puisqu'il est très probable que vous ne recherchiez pas une approche SQL appropriée (ce qui est en fait très bien, si vous n'effectuerez jamais d'opération dans la base de données sur ces ensembles, à part le stockage et la récupération), vous stockerez probablement votre ensemble dénormalisé dans un seul champ d'une table au lieu de suivre les pratiques recommandées ; dans ce cas, il n'y a pas de type de données MySQL natif qui peut représenter un ensemble Python et vous devrez sérialiser votre ensemble dans un varchar ou un text colonne. Il vous appartient entièrement de choisir un format de sérialisation qui correspond à vos besoins.