sql >> Base de Datos >  >> RDS >> Mysql

¿Existe un MySQL equivalente al tipo de conjunto de Python?

La forma correcta de implementar un conjunto en SQL sería con dos tablas adicionales:

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

(Es posible que pueda evitar el set tabla, si desea almacenar conjuntos en una sola tabla, y esa tabla tiene una ID única, y solo almacenará un conjunto por registro en la tabla)

Dado que es muy probable que no esté buscando un enfoque de SQL adecuado (que en realidad está bien, si nunca realizará ninguna operación en la base de datos en esos conjuntos, además del almacenamiento y la recuperación), es probable que almacene su conjunto desnormalizado en un solo campo en una tabla en lugar de seguir las prácticas recomendadas; en ese caso, no hay un tipo de datos MySQL nativo que pueda representar un conjunto de Python y deberá serializar su conjunto en un varchar o un text columna. Depende completamente de usted elegir un formato de serialización que se ajuste a sus necesidades.