Dynamic Columns

Uma funcionalidade interessante que existe no MariaDB, é a possibilidade de se criar colunas dinâmicas 🙂

Vamos ao exemplo:

create table produtos (
item varchar(32) primary key,
dynamic_columns blob
);

Observe, que tenho apenas 2 colunas, sendo que a coluna dynamic_column, poderá receber ou ser subdividida em outras colunas.

Para isto, existe uma função chamada COLUMN_CREATE():

insert into produtos values (‘T-shirt’, COLUMN_CREATE(‘marca’,’MariaDB’,’cor’, ‘azul’, ‘tamanho’, ‘XL’));
insert into produtos values (‘Whisky’, COLUMN_CREATE(‘marca’,’Johnnie Walker’, ‘tipo’, ‘Gold Label’));

Foram inseridos duas linhas, produtos diferentes e que possuem caracteristicas diferentes.

Para consultar os dados, neste caso tem que se utilizar a função COLUMN_GET():

select item, COLUMN_GET(dynamic_cols, ‘marca’ as char) as marca from produtos;

Select a tabela sem a função:

output1_dynamic

E com a função:

output2_dynamic

Existem várias outras funções que podem ser utilizadas para a manipulação de de colunas dinâmicas:

Tipos de dados que podem ser utilizados com esta funcionalidade:

type dynamic column internal type
BINARY[(N)] DYN_COL_STRING
CHAR[(N)] DYN_COL_STRING
DATE DYN_COL_DATE
DATETIME[(D)] DYN_COL_DATETIME
DECIMAL[(M[,D])] DYN_COL_DECIMAL
DOUBLE[(M,D)] DYN_COL_DOUBLE
INTEGER DYN_COL_INT
SIGNED [INTEGER] DYN_COL_INT
TIME[(D)] DYN_COL_TIME
UNSIGNED [INTEGER] DYN_COL_UINT

Bem interessante esta funcionalidade 🙂

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s