Questão do Termo do Banco de Dados

1

Alguém pode me dizer o que a técnica é chamada quando você armazena campos e valores divididos em um banco de dados delimitado por uma vírgula, por exemplo. Eu vi isso sendo usado, mas não tinha certeza do que era chamado.

id | options
1 | option1=this, option2=that, option3=other
2 | option1=this, option2=that, option3=other
3 | option1=this, option2=that
    
por madphp 13.08.2009 / 02:39

10 respostas

8

é chamada de uma lista separada por vírgulas de pares de valores de atributo e é uma coisa perfeitamente válida para fazer ...
... em circunstâncias raras e excepcionais !

    
por 13.08.2009 / 03:15
4

Estou com o Paul; "Stupid" é a primeira palavra que vem à minha mente.

    
por 13.08.2009 / 02:57
3

BTW, a razão pela qual isso é "estúpido" ou "estúpido" ou "uma péssima idéia" é que isso é feito melhor como uma tabela separada com um campo de chave estrangeira apontando para o campo de ID na primeira tabela, um campo "chave" e um campo "valor". isso permite que pares de chave / valor sejam individualmente indexados, pesquisados e manipulados (adicionar, excluir, atualizar).

e, mesmo assim, isso só é útil em algumas circunstâncias - onde há um número variável de chaves desconhecidas / arbitrárias que um dado registro pode ter associado a si mesmo. se o nome e o número de chaves forem conhecidos antecipadamente, há maneiras melhores de lidar com isso.

A wikipedia tem vários artigos introdutórios sobre bases de dados e normalização de bases de dados que valem a pena ler. comece com Modelos de banco de dados e Banco de dados Normalização

    
por 13.08.2009 / 03:11
3

De acordo com alguns livros na minha prateleira, o termo que você está procurando é:

< strong> Multipart Field

Embora haja exceções para todas as regras, os campos com várias partes são raramente necessários.

Campos multipartes podem causar estragos na integridade dos dados e devem ser evitados. Os problemas geralmente surgem quando você tenta editar, excluir ou classificar a data em um campo multiparte.

Quando você "normaliza" seu banco de dados e garante que cada campo armazene apenas um único valor que você está fazendo (e outros) um grande favor, ajudando a garantir que você tenha integridade de dados e informações precisas.

    
por 13.08.2009 / 04:17
2

Eu o chamo de violação do primeiro formulário normal.

    
por 13.08.2009 / 03:05
2

Concordo, é estúpido SE
este é o modelo de dados do seu aplicativo.

Isso é realmente muito benéfico se você simplesmente persistir em algo que foi analisado em outro lugar, como opções do usuário em um aplicativo cliente. Faz o cliente para o trabalho de análise. Este é um mecanismo de armazenamento trivial que pode ser facilmente dividido e armazenado em uma coleção do lado do cliente.

    
por 13.08.2009 / 03:51
1

Livremente, é um "valor repetido" e viola (pelo menos) a primeira forma normal (tipo de): link

    
por 13.08.2009 / 03:03
0

Os valores separados por vírgula estão próximos.

Não sei por que você repetiria nomes de campo para todos os valores.

    
por 13.08.2009 / 02:50
0

Você pode usar tipos de matriz no PostgreSQL para obter algo semelhante ao que procura, mas ainda é uma Idéia Realmente Ruim (tm).

    
por 13.08.2009 / 03:17
0

É assim que eu prefiro fazê-lo se você estiver fazendo algo com esses dados além de simplesmente persistir.

id | opt | content
1  | 1   | this
1  | 2   | that
1  | 3   | other
2  | 1   | this
2  | 2   | that
2  | 3   | other
3  | 1   | this
3  | 2   | that
3  | 3   | other
    
por 13.08.2009 / 04:50

Tags