Mysql
 sql >> Database >  >> RDS >> Mysql

Esiste un MySQL equivalente al tipo set di Python?

Il modo corretto per implementare un set in SQL sarebbe con due tabelle extra:

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

(Potresti essere in grado di evitare il set tabella, se desideri memorizzare i set in una sola tabella e quella tabella ha un ID univoco e memorizzerai solo un set per record nella tabella)

Dal momento che è molto probabile che tu non stia cercando un approccio SQL corretto (che va bene, se non eseguirai mai alcuna operazione nel database su quei set, oltre all'archiviazione e al recupero), probabilmente memorizzerai il tuo set denormalizzato in un singolo campo su una tabella invece di seguire le pratiche consigliate; in tal caso non esiste un tipo di dati MySQL nativo che possa rappresentare un set Python e dovrai serializzare il tuo set in un varchar o un text colonna. Sta a te scegliere un formato di serializzazione adatto alle tue esigenze.