Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda para um Iniciante


matrakaum

Pergunta

Bom Dia Amigos,

Estou começando a trabalhar/fuçar neste BD. Farei um breve resumo de onde venho e o porque. de ter começado a usar o PostgreSql.

Bom! Sou formado em Ciência da Computação e, trabalhei alguns anos em TI até me desiludir. Hoje atuo em um ramo completamente diferente, o de auto-peças. Tenho uma pequena loja em Osasco/SP.

Mas como o vício, e o gosto, do DIY não me abandonam, aliado a gostar de programar, resolvi fazer um sisteminha para a loja.

Programava em Delphi, trabalhei com PL1, um pouco de Cobol e outras linguagens para Mainframe no ABN. Estava, há algum tempo atrás, aprendendo PHP, mas minha grande vontade sempre foi aprender C. Não sei porque. mas sempre quis aprender C e fui adiando...e vou adiar mais um pouco...kkkk

Com Banco de Dados já usei SQL Server, um que vinha c/ o Delphi (já nem me lembro o nome) e alguns outros, mas usei com mais intensidade o MySql.

Agora com o projeto que tenho em mente ia voltar a usar o MySQl mas fui surpreendido vendo que a Oracle está matando este ótimo BD. Aí procurando alternativas resolvi c/ o PostgreSQL.

Vou desenvolver o sistema em Delphi mesmmo....futuramente, quem sabe, posso migrar para uma outra linguagem mas, por eqto, fica em Delphi.

Agora estou apanhando do PostgreSQL. E preciso de ajuda.

Será que alguém ou alguns de vocês. poderiam me ajudar nesta empreitada!?

De qualquer forma fica um grande Abraço à todos!

Evandro

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Bom dia,

Agradeço de antemão a resposta e a prontidão em me ajudar. muito Obrigado! Meu primeiro problema é que necessito que o meu campo do tipo "integer" que será minha chave primária. Até aí beleza consegui fazer. Preciso que esta chave seja do tipo auto-incremento e que tenha obrigatóriamente 3 dígitos. porque. vou usar este código para formar um maior. Então, o primeiro código ficaria, ao menos na minha idéia, 001, aí ... 002...até 999. Mesmo porque. não alcançarei nem o código 050.

Abço,

Evandro

Link para o comentário
Compartilhar em outros sites

  • 0

Bom Dia Kakao,

Não entendi a criação desta primary key. Eu estava usando o PGModeler.

Vamos lá. Eu trabalho com Auto Peças, então, na minha idéia, eu pego as peças e quero cataloga-las.

Esta peça terá um código composto de 17 campos onde cada conjunto de campos terá uma significação.

Os 3 primeiros dígitos indentificará a Montadora, ou seja, PK da Tabela de Montadoras;

Os 3 dígitos subsequentes identificará o Modelo, ou seja, PK da Tabela Modelos - aqui é necessário se fazer um aparte para uma explicação mais detalhada.

- Como a tabela Modelo está relacionada diretamente c/ a tabele Montadora, ou seja, sua PK será formada pela PK da Montadora (3 dígitos) + 3 dígitos auto incremento do Modelo, formando, assim, a PK do Modelo (3 dígitos Montadora + 3 dígitos do Modelo), usarei a PK da Tabela Modelo com 06 dígitos para serem os 06 primeiros dígitos do código da Peça - Se fui confuso me diga que tento ser mais claro.

4 dígitos do Lote - é um código que dou na entrada dos veículos na loja.

1 dígito Seção - Se é Acabamento, Mecanica, Lataria....

1 dígito Subseção - Se é acabamento o que é de acabamento, se lataria se é paralama, porta...

1 dígito Posição - Frente / traseira

1 dígito Lado - Direito / Esquerdo

Acho que é isto.

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi a criação desta primary key

Em vez de usar o tipo "integer" como a seguir

create table t (
    minha_coluna integer primary key,
    ...
);

substitua o tipo "integer" pelo pseudo tipo "serial" que é um "integer" gerado por uma sequencia.

A modelagem fica assim:

tabela montadora:

create table montadora (
    montadora_id serial primary_key,
    montadora_nome varchar(100),
    etc...
);

Tabela modelo:

create table modelo (
    modelo_id serial primary key,
    montadora_id integer references montadora_id (montadora_id),
    modelo_nome varchar(100),
    etc...
);

Veja que a coluna montadora_id na tabela modelo faz referência à mesma coluna na tabela montadora. É a chamada chave estrangeira.

A partir daqui como não sou do ramo vou colocar o meu entendimento. O lote faz referência a um veículo que pode ter mais de um serviço a ser executado. Por exemplo lataria capô e lataria porta esquerda. Então eu criaria uma tabela lote com os dados do veículo:

create table lote (
    lote_id serial primary key,
    modelo_id integer references modelo (modelo_id),
    chassis varchar(50),
    etc...
);

E a tabela peça

create table peca (
    peca_id serial primary key,
    lote_id integer references lote(lote_id),
    secao smallint,
    subsecao smallint,
    posicao smallint,
    lado smallint
);

As colunas posicao e lado podem ser char(1) "E", "D", "F", "T"

Link para o comentário
Compartilhar em outros sites

  • 0

Bom Dia Flechaus,

Eu coloquei isto porque. li em vários tópicos na net usuários reclamando sobre atualizações, serviços que eram gratuitos agora são pagos e/ou descontinuados. Eu gostava muito do MySql, inclusive, nos tempos meus tempos de desenvolvimento, desenvolvemos um sistema para revendas de automóveis todo baseado em MySql e Delphi. Funcionava legal, vc. tinha uma agência de automóvel, aí um cliente ia na sua loja procurando um veículo que vc. não tinha, você usava nosso sistema e conseguiria ver todo o estoque de outras lojas que tb. usassem (virgi, não sei se é assim que se escreve!) o sistema.... lógico que com informações, fotos, valores, tudo fechado apenas para lojistas.

Agora, fui procurar o Modelador do MySql e comecei a ler e me assustei....a quantidade de usuários reclamando era absurda. O que na verdade faz sentido. Não há lógica comercial em a Oracle manter um produto free para concorrer com o seu caríssimo produto pago.

Para evitar aborrecimentos futuros preferi aprender este novo que não é novo PostgreSql. Acho que aqui estou mais seguro no que tange a cobranças futuras.

Não é nada contra o MySql mas sim uma questão de planejamento.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom Dia Kakao,

tabela montadora:

create table montadora (
montadora_id serial primary_key,
montadora_nome varchar(100),
etc...
);

Beleza entendi a questão do Serial;

Agora como você me sugere para eu "matar" a questão dos 3 dígitos?

Tabela modelo:

create table modelo (
modelo_id serial primary key,
montadora_id integer references montadora_id (montadora_id),
modelo_nome varchar(100),
etc...
);

Aqui é para tirar dúvidas referente a linguagem mesmo. Em "montadora_id integer references montadora_id (montadora_id)" ele referencia montadora_id que é um campo e entre () é uma passagem de parâmetro? Ou seja, é por ali que ele receberá o valor? Não faz nenhuma referência em que tabela está o "montadora_id"? Tipo montadora_id (montadora).

Ainda na tabela modelo - O campo modelo_Id que é PK teria que ser "Montadora_ID + Modelo_ID(serial)" - é possível isto?

Mais uma vez meus agradecimentos à vocês por se disporem a me ajudar.

muito Obrigado e um forte Abraço!

Evandro

Link para o comentário
Compartilhar em outros sites

  • 0

Usando o modelo proposto esta consulta retorna uma linha para cada peça

select
    montadora_id,
    modelo_id,
    lote_id,
    secao,
    subsecao,
    posicao,
    lado
from
    peca
    inner join
    lote using(lote_id)
    inner join
    modelo using(modelo_id)
    inner join
    montadora using(montadora_id)
where l.proprietario_cpf = '12345678901'

Fiz a seleção pelo CPF do proprietário. Na camada de apresentação você pode adicionar pontos e completar com zeros.

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa ver se entendi.

Então para criar a tabela da Peça aonde Cod_Peca será uma junção de outros códigos e Pks, no caso específico dos 3 primeiros dígitos que deverão vir do montadora_id, eu teria que fazer uma verificação em nível de programação para confirmar se há 3 dígitos, caso sejam mais, descartar alguns, e o resultado, aí sim, concatenar c/ os demais códigos que formarão o Cod_Peca?

Curti este Inner Join

P.S = Acho que entendi seu entendimento. Eu não devo criar um campo Cod_Peca sendo a junção de tudo. Ao contrário referencio os campos, que seriam juntados no Cod_Peca, sendo chave estrangeira dentro da Tabela Peca. Aí em ambiente de apresentação faço os malabarismos para juntar tudo e criar o código de barras que ficará na peça. Correto ou decolei?

abço,

Link para o comentário
Compartilhar em outros sites

  • 0

Voltei!

Estou com uma dúvida.

Criei uma tabela Montadora (Id_Montadora, Nome) onde Id_Montadora é a PK

Criei uma segunda tabela Modelo (Id_modelo,Montadora, Nome) onde Id_Modelo é PK e Montadora é FK.

Aqui mora a dúvida usando o PGAdmin na inserção de dados. Ele não deveria no campo Montadora abrir uma combo com os campos referenciados na tabela Montadora?

Se eu inserir um valor que não esteja na tabela Montadora ele faz a validação certinho, ou seja, dá o erro. Mas, não era mais fácil uma combo assim não teria jeito de errar?

abços,

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...