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
}