4
respostas

campo é uma coleção

Bom dia, saúde e Feliz 2021. Preciso criar uma Tabela num banco de dados de cadastro de cliente com: cpf,nome,email e endereço, sendo que o endereço deve conter: tipo, logradouro,número,bairro,cidade e estado. Até aqui, nada de novo. O desafio é que o cliente no momento de inclusão neste cadastro, poderá definir mais de um tipo de endereço (Vide Exemplos de tipo de endereço:). Ou seja, o campo endereço é uma coleção, (o que infere a usar array). De que forma utilizar array na criação desta tabela num banco de dados? Vale lembrar que, não deve haver limite para o número de elementos deste array. Exemplos de tipo de endereço: {Endereço de cobrança:Rua XYZ 9999-Bloco B-Centro-São Paulo-São Paulo}

{Endereço de entrega:Avenida Paulista 9999999-apto. 99-Cerqueira César-São Paulo-São Paulo}

{Endereço geral:Avenida Atlântica 9999999-apto. 99-Copacabana-Rio de Janeiro-RJ}

{Endereço residencial:Rua Projetada 9999-apto. 99-Centro-São Paulo-São Paulo}

{Endereço comercial:Avenida ABC 3333-quarto andar-Copacabana-Rio de Janeiro-RJ}

4 respostas

Olá Beto, tudo bem?

Você poderia disponibilizar mais detalhes? Com qual banco de dados você está trabalhando, SQL Server, MySQL, Oracle ou outro ? Qual o motivo de inserir todos endereços em um único campo? Você já pensou em criar um campo para cada endereço ou uma tabela para cada endereço ?

Aguardo o seu retorno!

Boa tarde Danielle Oliveira . Estou usando SQL Server. A sua sugestão de criar uma segunda tabela para cada endereço me parece perfeita para o que preciso: criaria duas tabelas: 1) de clientes (com cpf, nome,email) e 2) de endereços (com tipo, logradouro, complemento, bairro, cidade e estado). Na Tabela 1, O CPF é a chave primária e passaria a ser estrangeira da Tabela 2. Na Tabela 2 teria uma chave composta da chave estrangeira concatenada com o campo tipo de endereço. Desta forma estabeleceria a relação entre as duas. Você concorda? Muito obrigado pela atenção.

Olá Beto!

Então, achei bem legal essa sua ideia de utilizar duas tabelas, uma para clientes e outra para os endereços, se dessa forma satisfaz as regras de negócio e as necessidades do seu projeto, então sim, é uma ótima opção para você.

Mas, indico que no lugar de utilizar a chave composta, você poderia utilizar um campo de auto incremento, o CPF ficaria apenas como chave estrangeira e o tipo apenas como um identificador para os tipos de endereço, ficaria mais ou menos da seguinte forma:

exemplo do banco de dados

Vou deixar aqui para você a documentação do SQL Server onde aborda sobre auto incremento: link.

Outra opção que você poderia utilizar, seria uma tabela para cada endereço, como por exemplo, uma tabela para o endereço residencial, uma tabela para o endereço comercial e assim sucessivamente. Mas, como disse Beto a escolha deve ser feita de acordo com as regras de negócio e as necessidades do seu projeto.

Indico que se possível, você veja a Formação de Modelagem de dados, tenho certeza que irá ajuda você neste projeto :).

Boa noite Danielle Oliveira. Vou verificar os temas do auto incremento e a Formação de modelagem de dados. Muito obrigado.