Jump to content

Checar modelagem de Banco de dados


dandrade

Postagens Recomendadas

Caro colegas, não tenho uma experiência aprofundada em banco de dados, portanto solicito apoio para verificarem se está correto a modelagem do banco que segue, será em MySQL.
Esse banco de dados, será utilizado em uma aplicação simples para armazenar o dados dos produtos, como numero de serie e etiquetas internas de garantia das peças.
As regras são:
A- Cada produto é constituído por um conjunto de peças. Cada peça recebe uma etiqueta interna de garantia.
B- Cada produto tem seu número de série único e exclusivo.
C- As etiquetas de garantia são fabricadas em lotes de sequencia única, não repetida e identificadas por sequencia numérica exclusiva.
D- Cada peça recebe uma etiqueta de Garantia. A etiqueta de garantia é violável, caso peça seja substituída requer nova etiqueta.
E- Cada modelo de produto, exemplo TVP400 ou TL320 possui é constituído por grupo de peças específicas.
F- Cada modelo exige uma nova tabela de sua composição.
G- Cada número de série tem uma data que foi associado ao produto.(data_fabrico)

Algumas duvidas, que tenho:
1)Neste modelamento, ao adicionar dados em TVP400 ou TL320, se existir algum numero de serie ou etiqueta de garantia já utilizada, o SGBD, irá impedir?
2)Caso ocorra, a rejeição de adição de dados, relacionado a pergunta anterior, tem como identificar os elementos que repetiram? Ou requer pesquisa no banco de dados?
3)Quais recursos do SGBD possui utilizar para facilitar a implementação da lógica de negócios?
4)Alguma dica ou sugestão ao modelo apresentado.

//website https://dbdiagram.io/
Table "num_serie" {

  "numero_serie" varchar(14) [pk, not null]

  "data_fabrico" datetime [not NULL]

  "idmodelo" int(10) [not NULL]

   

Indexes {

  numero_serie [name: "numero_serie"]

}

}



Table "TVP400" {

  "peca1" varchar(14) [not null]

  "peca2" varchar(14) [not null]

  "peca3" varchar(14) [not null]

  "peca4" varchar(14) [not null]

  "id_num_serie" varchar(14) [not null]

  

Indexes {

  id_num_serie [name:"id_num_serie"]

}

}



Table "TL320" {

  "peca1" varchar(14) [not null]

  "peca2" varchar(14) [not null]

  "peca3" varchar(14) [not null]

  "peca4" varchar(14) [not null]

  "peca5" varchar(14) [not null]

  "id_num_serie" varchar(14) [not null]

  

Indexes {

  id_num_serie [name:"id_num_serie"]

}

}



Table "garantias" {

  "etiqueta_garantia" varchar(14) [pk, not null, increment]

  "data_inserida" datetime



Indexes {

  etiqueta_garantia [name: "etiqueta_garantia"]

}

}



Table "modelo" {

  "id_modelo" int(1) [pk, not null, increment]

  "nome" varchar(12) [default: NULL]

   

Indexes {

  nome [name: "nome"]

}

}



Table "usuarios" {

  "id_user" int(1) [pk, not null]

  "apelido" varchar(12) [not null]

  "nome" varchar(40) [not null]

  "cargo" varchar(12) [default: NULL]

   

}



Ref{

  modelo.id_modelo < num_serie.idmodelo

  }



Ref{

  num_serie.numero_serie - TVP400.id_num_serie

}

Ref{

  TVP400.peca1 - garantias.etiqueta_garantia

  }

Ref{

  TVP400.peca2 - garantias.etiqueta_garantia

} 

Ref{

  TVP400.peca3 - garantias.etiqueta_garantia

}

Ref{

  TVP400.peca4 - garantias.etiqueta_garantia

}

Ref{

  num_serie.numero_serie - TL320.id_num_serie

}



Ref{

  TL320.peca1 - garantias.etiqueta_garantia

  }

Ref{

  TL320.peca2 - garantias.etiqueta_garantia

} 

Ref{

  TL320.peca3 - garantias.etiqueta_garantia

}

Ref{

  TL320.peca4 - garantias.etiqueta_garantia

}

Ref{

  TL320.peca5 - garantias.etiqueta_garantia

}

banco-de-dados-ratro-DRE.png

banco-de-dados-ratro-DRE.png

Link to comment
Compartilhe em outros sites

  • 7 months later...

1) O SGBD só irá impedir se você configurar essa condição nas propriedades da coluna. Você pode verificar a documentação do gerenciador que utiliza para achar essa opção mais facilmente. 

2) Acredito que não apareça especificamente onde está a duplicidade, apenas restringe adicionar um número já existente. Caso seja dessa forma, podes realizar consulta pra verificar.

3) Os programas de SGBD possuem um diagrama próprio de entidade-relacionamento e podem facilitar a tua visualização! No dbeaver, por exemplo, consigo ter ainda o tipo de entrada de dados (string, num, alphanum etc.) ao lado da coluna de forma visual. 

 

4)

i) Realizaria a exclusão da tabela "modelo", pois o nome dos modelos já são nomes de tabelas, e são apenas 2. 

ii) Excluiria a coluna "idmodelo" da tabela "num_serie". Caso precise realizar consulta por modelo, é só fazer JOIN com a tabela de cada modelo, pois só existem 2. 

iii) Passo A: Retiraria a conexão das peças com a garantia.

B: Adicionaria "id_num_serie" na tabela garantias.

C : Realizaria uma conexão entre "garantias.id_num_serie" e "num_serie.num_serie", na proporção 1:1. 

 

Essas são as minhas considerações, espero que sejam de alguma utilidade e que tu tenhas sucesso na tua query.

 

Abraço, 

Editado por lucaseduardo
  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...