Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe um MySQL equivalente ao tipo de conjunto do Python?


A maneira correta de implementar um conjunto em SQL seria com duas tabelas extras:
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)
);

(Você pode evitar o set table, se você quiser armazenar conjuntos em apenas uma tabela, e essa tabela tiver um ID exclusivo, e você armazenará apenas um conjunto por registro na tabela)

Como é muito provável que você não esteja procurando por uma abordagem SQL adequada (o que é realmente bom, se você nunca executará nenhuma operação no banco de dados nesses conjuntos, além de armazenamento e recuperação), provavelmente armazenará seu conjunto desnormalizado em um único campo em uma tabela em vez de seguir as práticas recomendadas; nesse caso, não há nenhum tipo de dados nativo do MySQL que possa representar um conjunto Python e você precisará serializar seu conjunto em um varchar ou um text coluna. Cabe a você escolher um formato de serialização que atenda às suas necessidades.