Executando verificação de segurança...
1

[Dúvida] Ordenar array no banco de dados? 🤔

Fala turma

Estou criando uma aplicação que tem o seguinte funcionamento:

Em determinado momento, preciso pegar um lista ordenada no banco de dados, essa lista contém a identificação de alguns usuário.

Exemplo:
["id:usuario1", "id:usuario2", "id:usuario3"...]

Nesse momento, estou criando alguns outros registros para alguns dos usuários presentes nessa lista ordenada, e quando termino, preciso tirar o usuário da posição atual dele (que pode ser desde 1° até o último), e colocar ele no final do array.

Minha dúvida é:

Qual seria uma arquitetura mais plausível para esse senário?

  • Salvar um array de Ids em texto? (Ai já teria que migrar pra Postgres)
  • Fazer uma tabela NxN com IdUsuário x IdLista? (Mas ai não fica mais pesado fazer as querys?)
  • Alguma outra?
1

Confesso que não entendi muito bem a sua necessidade, mas pelo pouco que acho que entendi, para cada usuário você quer criar um outro registro no banco de dados?

1

Fala @lesnok

Na verdade o que eu faço com o usuário não é relevante, o ponto é:

Em um momento eu preciso retirar um Array Ordenado do banco de dados, e é um Array que representa usuários.

O que vou fazer com o Array é: após recebe-lo, vou selecionar um certo usuário que deve estar presente nesse Array, vou remove-lo da posição que ele estiver, e coloca-lo na último posição do Array, após isso salvar o Array no banco novamente.

Minha dúvida é algo na linha do que o juliodev disse, salvo uma lista de ids em texto ("1,2,3,4,..."), que aí assim não tem como relacionar tabelas.

Ou faço uma tabela intermediária de NxN?

1

Se vc salvar como texto, vc não vai ter o relacionamento entre as tabelas, porém vc ganha em não ter que ficar criando uma terceira tabela por ex.
Mas eu faria assim, eu salvaria com um pipe para fazer um split:
1|30|45

Depois no codigo receberia o esta lista, faria um split, ordenaria e montava a query de insert. Isso se nao quiser fazer por procedure no banco, se for fazer pelo banco usaria ponteiro