Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Como dividir uma coluna em várias colunas de variáveis


Dividir esses dados em colunas separadas é um bom começo (valores separados por vírgula são uma heresia). No entanto, um "número variável de propriedades" normalmente deve ser modelado como um one-to- muitos relacionamentos .
CREATE TABLE main_entity (
  id INT PRIMARY KEY,
  other_fields INT
);

CREATE TABLE entity_properties (
  main_entity_id INT PRIMARY KEY,
  property_value INT,
  FOREIGN KEY (main_entity_id) REFERENCES main_entity(id)
);

entity_properties.main_entity_id é uma chave estrangeira para main_entity.id .

Parabéns, você está no caminho certo, isso se chama normalização . Você está prestes a alcançar a Primeira Forma Normal.

Cuidado, no entanto, essas propriedades devem ter uma natureza sensivelmente semelhante (ou seja, todos os números de telefone ou endereços, etc.). Não caia no lado sombrio (também conhecido como Antipadrão de valor de atributo de entidade ), e fique tentado a jogar todas as propriedades na mesma tabela. Se você puder identificar vários tipos de atributos, armazene cada tipo em uma tabela separada.