Banco de Dados Sem Nenhum Relacionamento

722 views
Skip to first unread message

Italo Alan

unread,
Oct 17, 2012, 4:16:12 PM10/17/12
to jav...@googlegroups.com
Alguem do grupo do javasf, sabe dizer porque um banco de dados enorme não possui nenhum tipo de relacionamento, existe mais de 50 tabelas, é em MySQL, não existe nenhuma foreign key. E se não existe nenhum relacionamento explicito, aonde é feito a restrição dos dados, para evitar a duplicidade das informações.

- Criei classes de entidades  do banco de dados atraves do netbeans, para ver se existia algum join, mas não existe nenhum tipo de relacionamento, nada, nada!!

Sei que o ggrupo não é sobre banco de dados, mas, espero que me ajudem!

Obrigado desde já!

--
..:: Italo Alan ::..

Web Developer !

tel: (84) 88571409 / 81060453

Bruno Maomeh

unread,
Oct 17, 2012, 4:49:40 PM10/17/12
to jav...@googlegroups.com
se o banco não tem nenhum relacionamento.. é por que quem criou o banco não adicionou os relacionamentos..

2012/10/17 Italo Alan <italo...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Visite este grupo em http://groups.google.com/group/javasf?hl=pt-BR.
 
 



--
Bruno Maomeh
   http://brunomaomeh.wordpress.com

Thiago Vulcão

unread,
Oct 17, 2012, 4:48:31 PM10/17/12
to jav...@googlegroups.com
Possivelmente o controle de tudo é feito pela aplicação. Se abrir o banco de dados do Joomla é assim, não sei do openCMS se é. Se for feito pela aplicação amigo, infelizmente você vai ter um trabalho grande. Já peguei uma base de dados assim, pelos mapeamentos do Hibernate consegui resolver tudo, basta mapear direito, com o mesmo tipo de dados e usar as anotações corretas. Fica tudo bem limpo e funcional.

--
 
 Thiago Vulcão
  Desenvolvedor de Sistemas Pleno - EBI Informática
  Contato: (91) 8120-1949
  MSN: thiago...@hotmail.com
  Skype: vulcaodeveloper

Denis Silveira

unread,
Oct 17, 2012, 4:50:55 PM10/17/12
to jav...@googlegroups.com
O que pode acontecer é que o Sistema é bem legado, pode ter vindo de códigos PHP ou Asp.
Ou até mesmo app Java antigas, onde as restrições poderiam ser feitas via código mesmo, onde antes de fazer a inserção seria feita uma consulta para ver se o registro já existe ou não.

Essa foi a única explicação que achei assim de cara.
Mas principalmente para sistemas legados, tudo é bem mais complicado.


--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Visite este grupo em http://groups.google.com/group/javasf?hl=pt-BR.
 
 



--
Atenciosamente,

Denis Silveira
Fone: (11) 952-850-724
Analista de Sistemas
www.systic.com.br

“Hoje os Livros de Ficção estão bem mais Realistas do que os Jornais de Televisão” Denis Silveira





Nilson Uehara

unread,
Oct 17, 2012, 4:52:55 PM10/17/12
to jav...@googlegroups.com
Nada impede você de ter um database assim, sem nenhum foreign key, trigger, view, etc. Vc faz tudo pelo programa, inclusive a integridade referencial. Só vai dar mais trabalho.
Vc vai achar muito disso por ai, principalmente sistema legado (legado do legado...)

Um abraço,
Nilson Uehara

Marcio Eduardo

unread,
Oct 17, 2012, 5:02:49 PM10/17/12
to jav...@googlegroups.com
No MySQL também tem a restrição da engine, as engine MyISAM tem a restrição de não ter foreign key.
Alguns sistemas antigos tem essa situação, trabalho com ERP protheus aqui e as tabelas são sem foreign key, por causa da própria forma do protheus trabalhar.
Ainda peguei um legado aqui que era simplesmente SEM chaves estrangeiras, tive que adivinhar.
Alguns sistemas em PHP como ForumPHP e OpenCart usam sem chaves estrangeiras e MyISAM para agilizar a pesquisa, alguns DBAs colocam na normatização número 2 para agilizar a pesquisa. 
Márcio Eduardo Luz
Bacharel em Sistemas de Informação

Italo Alan

unread,
Oct 17, 2012, 5:01:43 PM10/17/12
to jav...@googlegroups.com
Muito obrigado pelas respostas rápidas!! Agradeço a todos!

Em 17 de outubro de 2012 17:52, Nilson Uehara <nilu...@gmail.com> escreveu:

Rogério Alencar Lino Filho

unread,
Oct 17, 2012, 5:27:57 PM10/17/12
to jav...@googlegroups.com
Dependendo da engine que você estiver utilizando no MySQL, não gerará foreign keys.



2012/10/17 Italo Alan <italo...@gmail.com>



--
Rogério Alencar Lino Filho
http://rogeriolino.com
@rogeriolino
Vitória - ES


Everton Fujimoto

unread,
Oct 17, 2012, 6:21:08 PM10/17/12
to jav...@googlegroups.com
Como já falaram da engine MyISAM do Mysql, não vou entrar nesse ponto. 

Mas também tem outras possibilidades. Muitas vezes os desenvolvedores trabalham em formas "menos normalizadas" para reduzir joins e assim ter mais desempenho. 

Outra possibilidade é removerem constraints para ganhar desempenho em outras partes, como por exemplo, um sistema que recebe 50 mil registros por minuto, se ficar conferindo as chaves primárias fica lento, nesse caso costumam fazer uma trigger que força o id baseado numa sequence. A mesma lógica serve para integridade referencial e unique keys. 

As possibilidades são muitas, e explorar um banco de dados assim é bem trabalhoso, começa olhando as consultas da aplicação ou monitorando o uso da aplicação através das views, assim você encontra por onde começar.

Att.
Everton William Fujimoto
Hecate Systems
CIO
(47)3394-5516
(47)9947-5481

Italo Alan

unread,
Oct 17, 2012, 7:47:15 PM10/17/12
to jav...@googlegroups.com
Puxa, acho que todas as tabelas estão com a restrição engine MyIsam!! :) Então, resumindo: banco de dados assim, vão complicar a vida de novos programadores que irão pegar banco de dados já desta forma, né isso? Principalmente quem é acostumado a trabalhar com banco de dados relacional, que é o mais comum hoje em dia!! 

Paulisson de Santana Boaventura

unread,
Oct 18, 2012, 1:06:53 PM10/18/12
to jav...@googlegroups.com
Já estive em uma empresa muito grande que o controle disso era feitos por triggers.. Num era muito bom porque pelo porte da empresa isso deixa o banco bem cheio de informações que não eram usadas e sem muita confiabilidade.. 
Páulisson Boaventura
________________________________

"O coração do homem planeja o seu caminho, mas o SENHOR lhe dirige os passos." (Pv. 16:9)
".. e eis que eu estou convosco todos os dias, até a consumação dos séculos. Amém." (Mt 28:20)

Enio Nunes

unread,
Oct 18, 2012, 12:04:40 PM10/18/12
to jav...@googlegroups.com
O fato de não existir chave estrangeira não significa que não existe relacionamentos, e isso também não significa que o banco não é relacional, em sistemas grandes como deve ser o caso, isso é bem comum, pois a rotatividade de pessoal, a falta de padrões e a falta um DBA implica para esses acontecimentos, isso também não é motivo para caracterizar o sistema como legado, um sistema só pode ser considerado legado quando não se é possível sofrer manutenções, cuidado com os termos utilizados.

Quanto a utilizar JPA vc pode fazer os relacionamentos mesmo que não existam chaves estrangeiras no banco.

Em 17 de outubro de 2012 20:47, Italo Alan <italo...@gmail.com> escreveu:

Renan Monteiro de Castro

unread,
Oct 18, 2012, 7:51:13 PM10/18/12
to jav...@googlegroups.com
Isso é muito comum em ERP's, porém, alguns como o Oracle EBS possuem até tabelas (fnd_tables, fnd_foreign_keys, etc) que possuem
as informações necessárias da base de dados. Além de uma documentação extensiva sobre elas.
Isso permite um melhor processo de customização.



2012/10/18 Enio Nunes <enio.a...@gmail.com>



--
Renan Monteiro de Castro - Linkedin

Reply all
Reply to author
Forward
0 new messages