Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fernando Martins
Turmas: Noturno:
Definies Gerais
1.
2.
3.
4.
5.
6. Evitar usar o nome da entidade em seus componentes internos, por exemplo: Se o nome da tabela for
PACIENTE, o campo para preenchimento com o nome do paciente ser NOME e no
NOME_PACIENTE.
Tabelas
Para objetos relacionados com tabelas (chave primaria, chave estrangeira, campos, indices, etc.) vamos adotar o
seguinte comportamento:
Chave Primaria
1. No usar chave primria composta.
2. Deve ser sempre o primeiro campo na tabela e ser formado por ID_NOME_DA_TABELA. Para
tabela PACIENTE, por exemplo, o campo de chave primria ser ID_PACIENTE.
3. O tipo do campo deve ser do tipo numrico mais abrangente possvel ( numeric[18,0], bigint ), autoincremental, com sequence ou generator, se necessrio. No use triggers para auto-incrementar o
campo.
ndices
1. Deve ser criado sempre; de acordo com as necessidades de ajuste do banco. Normalmente os campos
utilizados para ordenao e filtro nas querys precisam de ndices.
2. Para os campos que poderiam ter sido escolhidos para chave primria composta, construir o ndice com
a combinao dos campos utilizando ndices marcados como nicos (unique).
3. Seguindo uma sugesto de um de nossos leitores (Moriarty), deve ser formado por
IX_TABELA_CAMPO. Por exemplo: a tabela PACIENTE ter dois ndices, nome e registro:
IX_PACIENTE_NOME e IX_PACIENTE_REGISTRO. Essa forma substituiu a anterior onde no lugar
do nome do campo a utilizao era de um nmero sequencial, por exemplo, IX_PACIENTE1,
IX_PACIENTE2.
Chaves estrangeiras
1. Na tabela, o nome do campo deve ser igual ao campo chave primria da tabela a que corresponde.
2. Identificado assim: FK_NOME_DA_TABELA_NOME_DA_TABELA_ESTRANGEIRA. Por
exemplo: a tabela PACIENTE possui uma chave estrangeira para tabela SEXO cuja chave primria
ID_SEXO. O nome do campo na tabela PACIENTE deve ser tambm ID_SEXO e o nome da chave
estrangerira ser FK_PACIENTE_SEXO.
3. Se o nome ficar muito grande e o banco no aceitar criar, nesse caso, permitida uma abreviao.
Restries (constraint)
1. A nica restrio obrigatria a NOT-NULL. Obviamente as restries de relacionamento e ndices so
indispensveis. Outras como, por exemplo, as restries para valores vlidos nos campos, so opcionais.
Tipos
1. Respeite o tipo de dado para o campo. Campo data para guardar datas, numricos para guardar nmeros,
etc.
2. Alguns bancos disponibilizam tipos comuns com quantidade de bytes reduzidas. Por exemplo: para
campo numrico existe: int, smallint, tynint, etc. Procure evitar as variaes. Prefira os tipos que so
comuns a todos os tipos de bancos. Use os tipos abaixo. Eles costumam ter tamanho bem definido e
nome de tipos comuns a todos os bancos.
SEQUENCE ou GENERATOR
1. Deve ser criada da seguinte forma: GEN_NOME_DA_TABELA_ID. Para a tabela PACIENTE crie um
sequence ou generator GEN_PACIENTE_ID.
2. Se o nome ficar muito grande e o banco no aceitar criar, nesse caso, permitida alguma abreviao.
Vises
1. O nome da view deve ser V$NOME_VIEW ou VNOME_VIEW. Ex: V$PACIENTE_INTERNADO ou
VPACIENTE_INTERNADO
Nas aplicaes
1. Na criao de junes utilizarem explicitamente somente a combinao chave primaria/estrangeira
definida no projeto fsico do banco.
2. As selees de dados devem sempre utilizar um campo que possua ndice. O banco deve ser planejado
para realizar pesquisas utilizando os ndices.
3. Nas pesquisas com LIKE, o % deve ser usado sempre no final da seleo evitando seu uso no incio da
string. Isso melhora a performance da pesquisa.
4. Quando abrir uma transao deve-se testar antes todas as possibilidades de a transao poder ser
completada, ou seja, as validaes de dados, testes de integridade referencial, testes de violaes de
chaves, etc. devem ser feitas antes da abertura da transao. O rollback de uma transao deve ser
preferencialmente utilizado apenas para erros internos de banco e no por violao de alguma regra de
negcio.
5. Evitar select * from tabela. Devem-se discriminar exatamente os campos de retorno da seleo. Alm
disso, as selees devem ter algum objetivo, ou seja, uma condio deve ser informada especialmente
em tabelas com grande nmero de linhas. Evitar deixar a cargo da aplicao os filtros e as selees de
dados que poderiam ser realizadas diretamente pelo banco atravs de uma query.
6. Mesmo que restries ou constraints estejam definidas no banco a aplicao deve tambm realizar essas
verificaes.
isso. Espero ter ajudado. Quem tiver alguma maneira diferente de entender ou enxergar este assunto, por
favor, no deixe de registrar um comentrio ou me enviar por email. Desde j obrigado.
Blz!
About these ads
Gostar disso:
Curtir
Seja o primeiro a curtir disso.
1.
George Limeira
mar 30, 2010 @ 15:29:22
2.
Moriarty
jul 20, 2010 @ 10:19:18
Bom dia,
Li seu artigo e no achei correto algumas coisas que voc colocou.
- ndice sequencial? E se eu quiser utilizar um determinado ndice, como saberei qual ele? Utilizo
sempre o ndice com o nome da tabela e o nome do campo. EX: IDX_PACIENTE_NOME
- No utilizar constraint? Como??? Voc pe no sistema uma responsabilidade que do banco.
Sinceramente no concordo.
- Usar chave estrangeira com outro nome que no seja o prprio nome do campo. Tambm no
concordo. Se a chave primria ID_PACIENTE ento ela tambm deve ser ID_PACIENTE em outra
tabela. Isso ajuda na hora de fazer um NATURAL JOIN.
- Utilizar NOME, ao invs de NOME_PACIENTE. Tambm no utilizo assim, principalmente quando
desejo realizar NATURAL JOIN (mesmo motivo do item anterior). Se duas tabelas relacionadas
tiverem o campo NOME, eu no conseguirei utilizar o NATURAL JOIN.
No geral, parabns pela iniciativa.
Abs
Resposta
3.
Marcio
nov 02, 2010 @ 08:12:29
4.
Reginaldo Jr.
Ol, Almir. Claro que sim. Solicito apenas que preserve a referncia.
Resposta
5.
Daniel Moreira
jun 26, 2011 @ 13:13:16
Ol, gostei do seu post e sigo no mesmo caminho, e creio ir um pouco mais alm em nvel de
organizao. Aps a nomeclatura humana, ainda organizo todo os campos em ordem alfabtica:
Primeiro ID, depois FKs e em seguida todos os campos com seus nomes reais e humanamente
intendveis alfabeticamente. Hoje, h uma tendncia (que eu acho bem interessante) de tratar o banco
de dados apenas com um repositrio de dados. A importncia dos dados devem estar na aplicao que
os gerencia e no no banco. UM abrao.
Resposta
reginaldojr
jun 27, 2011 @ 11:04:36
ol, Daniel
Que bom que gostou do nosso trabalho. Realmente o uso do banco apenas como repositrio de
dados tem sido muito com. Nesse caso interessante utilizar um framework de persistncia. Eu
costumo usar o NHibernate. Conhece alguma coisa sobre isso?
Resposta
dmmoreira
jun 27, 2011 @ 12:45:53
Sim, uso h bastante tempo o NHibernate, h alguns anos adotamos esta topologia apra a
arquitetura das aplicaes que desenvolvemos onde trabalho: Asp.NET ou MVC
WinfForm ou WPF Oracle NHibernate , usando DDD como arquitetura bsica. um
abrao
6.
danilomoraes
ago 19, 2011 @ 01:11:43
7.
diegorafaelss
abr 11, 2012 @ 15:57:29
Gostei do post!
Resposta
reginaldojr
abr 11, 2012 @ 18:28:32
Que bom que gostou. Quando puder, d uma olhadinha nos outros.
Resposta
Pesquisar..
Comentrios
Reginaldo Jr. em Clculo de Distncia e Tempo d
Paulo Rogrio em Clculo de Distncia e Tempo d
reginaldojr em Independncia de Banco de
diegorafaelss em Independncia de Banco de
reginaldojr em Independncia de Banco de
Categorias
Selecionar categoria
Arquivos
Selecionar o ms
Desde (04/11/07)
106,700 visitas
Blog no WordPress.com.