Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro


HGIDC
Resultados 1 a 6 de 6
  1. #1

    Avatar de [ADM]Lp
    Data de Ingresso
    Sep 2011
    Localização
    Magé
    Idade
    24
    Posts
    543
    Agradecido
    91
    Agradeceu
    63
    Peso da Avaliação
    12

    Padrão Normalização de Tabela

    Bom dia amigos, este semestre iniciei na faculdade as matérias de Banco de Dados.
    O Professor passou um exercício de normalização de uma tabela, onde existe uma tabela criada com todas as informações contidas nela.
    Ou seja, ele quer que a mesma seja normalizada, transformando as colunas endereço e telefones em uma nova tabela, que façam referencia a tabela funcionário.
    Eu já criei as duas outras tabelas fazendo referencia a tabela funcionário, agora minha dúvida é: COMO EU FAREI PARA "PEGAR" OS DADOS das colunas 'ENDEREÇO' e 'TELEFONES' da tabela "FUNCIONÁRIO" e depois inserir na tabela 'TELEFONE' E 'ENDEREÇO'. E na sequencia deletar as colunas TELEFONE E ENDEREÇO da tabela Funcionário.

    Deve ser algo bobo, mais para mim iniciante realmente está complicado.
    Farei um curso de extensão para poder me aprofundar mais na linguagem, mais só começa em outubro.

    //SCRIPT DA TABELA ORIGINAL//

    Código:
    create table funcionario (
    matricula serial primary key,
    nome varchar(10),
    sexo char(1),
    endereco varchar(100),
    telefones varchar (100))
    
    insert into funcionario (nome, sexo, endereco, telefones) values
    ('Bruna', 'F', 'Rua dos Passos, 315, LT 3, QD 2, Caxias, RJ', '99999-3232 88888-3232'),
    ('Ana', 'F', 'Rua dos Lírios, 3, Apto 1001, Beco das Garrafas, Caxias, RJ', Null),
    ('Paulo', 'M', 'Rua do Alfinete, Nm 1007, Bairro dos Treze, Meriti, RJ', '99999-3090 (21)2222-9891'),
    ('Augusto', 'M', 'Rua Aleluia, 10, Apto 101, Bairro Caminho Torrto, Nilópolis, RS', '99999-3090 88888-9090 97166-1415'),
    ('Zeromar', 'M', 'Travessa do Sol, sem número, bairro Sol a Pino, Saquerema, RJ', '87888-3232');
    
    select * from funcionario

    //Script de Normalização

    Código:
    CREATE TABLE Telefone(
    CodTel serial primary key,
    Tel1 char(10),
    Tel2 char(10),
    Tel3 char(10),
    DDD int,
    CodMatr serial,
    CodTipTel serial);
    
    alter table Telefone add foreign key (CodMatr) references Funcionario (Matricula);
    select * from Telefone;
    
    CREATE TABLE Endereco (
    CodEnd serial primary key,
    TipoLog char (10),
    Logr char (15),
    Numero int,
    Complemento char (20),
    Bairro char (25),
    Cidade char(20),
    Uf char(2));
    
    alter table Endereco add column CodMatr serial;
    alter table Endereco add foreign key (CodMatr) references Funcionario (Matricula);
    select * from Endereco;
    Última edição por [ADM]Lp; 15-09-2015 às 12:38 PM.

  2. #2



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.249
    Agradecido
    2002
    Agradeceu
    533
    Peso da Avaliação
    30

    Padrão

    Faça um cursor e seus problemas estarão resolvidos.

    Exemplo: [Somente usuários registrados podem vem os links. ]
    Última edição por Renato; 15-09-2015 às 12:27 PM.
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  3. #3

    Avatar de navossoc
    Data de Ingresso
    Jan 2013
    Localização
    local
    Posts
    321
    Agradecido
    533
    Agradeceu
    199
    Peso da Avaliação
    8

    Padrão

    Isso ai não era pra ser feito "manualmente" (na mão)?
    Ele realmente pediu uma query que faz isso?

    Não vejo muita relação em usar um CURSOR por exemplo com um exercício de normalização :P
    Não estou dizendo que não resolva o problema.

    Estou dizendo apenas que se a idéia é aprender o conceito da normalização, por que ele iria complicar mais pedindo uma query que faça tudo isso?

    []'s

  4. #4

    Avatar de [ADM]Lp
    Data de Ingresso
    Sep 2011
    Localização
    Magé
    Idade
    24
    Posts
    543
    Agradecido
    91
    Agradeceu
    63
    Peso da Avaliação
    12

    Padrão

    Citação Postado originalmente por navossoc Ver Post
    Isso ai não era pra ser feito "manualmente" (na mão)?
    Ele realmente pediu uma query que faz isso?

    Não vejo muita relação em usar um CURSOR por exemplo com um exercício de normalização :P
    Não estou dizendo que não resolva o problema.

    Estou dizendo apenas que se a idéia é aprender o conceito da normalização, por que ele iria complicar mais pedindo uma query que faça tudo isso?

    []'s
    Na verdade ele não pediu, ele mandou a gente normalizar e não disse mais nada.

    Eu interpretei que ele quisesse algo assim.

    Já um amigo aqui, refez as tabelas colocando tudo da forma correta.

    Só que ai beleza, é uma tabela pequena, mais e se fosse uma com 10~15 mil linhas? Posso ter interpretado errado.

    Código:
    -- Database: "TDE"
    
    -- DROP DATABASE "TDE";
    
    CREATE DATABASE "TDE"
      WITH OWNER = postgres
           ENCODING = 'UTF8'
           TABLESPACE = pg_default
           LC_COLLATE = 'Portuguese_Brazil.1252'
           LC_CTYPE = 'Portuguese_Brazil.1252'
           CONNECTION LIMIT = -1;
    
    
    //Script para Banco de Dados exemplo funcionario by Anderson Nascimento 09-09-14
    
    
    CREATE TABLE Funcionario(
    Matricula serial primary key,
    Nome varchar(10),
    Sexo char(1));
    
    INSERT INTO Funcionario (Nome, Sexo) Values
    ('Bruna', 'F'),
    ('Ana', 'F'),
    ('Paulo', 'M'),
    ('Augusto', 'M'),
    ('Zeromar', 'M');
    
    CREATE TABLE Telefone(
    CodTel serial primary key,
    Tel1 char(10),
    Tel2 char(10),
    Tel3 char(10),
    DDD int,
    CodMatr serial,
    CodTipTel serial);
    
    drop table Telefone;
    
    INSERT INTO Telefone (Tel1, Tel2, Tel3, DDD) Values
    (9999993232, 888883232, Null, Null),
    (Null, Null, Null, Null),
    (999993090, 22229891, Null, 21),
    (999993090, 888889090, 971661415, Null),
    (878883232, Null, Null, Null);
    
    alter table Telefone add foreign key (CodMatr) references Funcionario (Matricula);
    select * from Telefone;
    
    CREATE TABLE Endereco (
    CodEnd serial primary key,
    TipoLog char (10),
    Logr char (15),
    Numero int,
    Complemento char (20),
    Bairro char (25),
    Cidade char(20),
    Uf char(2));
    
    INSERT INTO Endereco(TipoLog, Logr, Numero, Complemento, Bairro, Cidade, Uf) Values
    ('Rua', 'dos Passos', 315, 'LT 3 - QD 2', Null, 'Duque de Caxias', 'RJ'),
    ('Rua', 'dos Lírios', 3, 'Apartamento - 1001', 'Beco das Garrafas', 'Duque de Caxias', 'RJ'),
    ('Rua', 'do Alfinete', 1007, Null, 'Dos Treze', 'São João de Meriti', 'RJ'),
    ('Rua', 'Aleluia', 10, 'Apartamento 101', 'Caminho Torto', 'Nilópolis', 'RJ'),
    ('Travessa', 'do Sol', Null, Null, 'Sol a Pino', 'Saquarema', 'RJ');
    
    alter table Endereco add column CodMatr serial;
    alter table Endereco add foreign key (CodMatr) references Funcionario (Matricula);
    select * from Endereco;

  5. #5



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.249
    Agradecido
    2002
    Agradeceu
    533
    Peso da Avaliação
    30

    Padrão

    Citação Postado originalmente por [ADM]Lp Ver Post
    agora minha dúvida é: COMO EU FAREI PARA "PEGAR" OS DADOS das colunas 'ENDEREÇO' e 'TELEFONES' da tabela "FUNCIONÁRIO" e depois inserir na tabela 'TELEFONE' E 'ENDEREÇO'. E na sequencia deletar as colunas TELEFONE E ENDEREÇO da tabela Funcionário.
    Apenas respondi a dúvida, partindo do pressuposto que ele queria algo automatizado...
    Pra fazer isso, a meu ver seria um cursor, mas de boa.. ^^

    []'s
    Última edição por Renato; 15-09-2015 às 05:08 PM.
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  6. #6

    Avatar de navossoc
    Data de Ingresso
    Jan 2013
    Localização
    local
    Posts
    321
    Agradecido
    533
    Agradeceu
    199
    Peso da Avaliação
    8

    Padrão

    Sim sim sim, mas como eu falei, se você está começando agora, acho que o objetivo principal dele era que você aprendesse o conceito.

    Então, eu me focaria mais no conceito. Se já estiver confortável e tiver tempo sobrando tente usar o cursor junto.

    []'s

 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| query tabela negativa
    Por hadeslan no fórum Dúvidas
    Respostas: 4
    Último Post: 07-09-2015, 10:50 PM
  2. |Suporte| HELP Consulta de Tabela
    Por Bullet no fórum Java
    Respostas: 6
    Último Post: 26-03-2015, 05:02 PM
  3. |Download| Tabela de eventos [+]
    Por Alafynhow no fórum Downloads
    Respostas: 0
    Último Post: 16-09-2014, 04:57 AM
  4. |Notícia| Tabela e Calendário Série B
    Por adrianodjs no fórum Brasileirão Serie B
    Respostas: 0
    Último Post: 01-06-2012, 04:31 AM
  5. [Download] Tabela de cores
    Por mend3 no fórum Outros
    Respostas: 3
    Último Post: 15-09-2009, 11:41 AM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •