Ir para o conteúdo

 Voltar a Padrão de Mo...
Tela cheia

2 Modelo de Dados Físico

2 de Setembro de 2015, 16:53 , por Silvio Pozza - | 1 Pessoa seguindo este artigo.
Visualizado 5310 vezes

<-- Voltar

Nomenclatura Geral

Regras de nomenclatura aplicáveis a todos os elementos (tabelas, colunas, índices, etc) do  
modelo de dados:  
• usar somente letras, números e o caracter sublinhado;  
• limitar o tamanho ao máximo de 30 caracteres;  
• utilizar apenas letras minúsculas;  
• palavras internas devem ser separadas pelo caractere sublinhado;  
• suprimir as preposições;  
• utilizar apenas palavras no singular.

Tabelas

• Não utilizar verbos para designar nomes de tabelas, priorizar o uso de substantivos:

processo  
espelho_pauta 

• Para tabelas que implementam relacionamentos (n x n) utilizar o prefixo rel seguido  dos nomes das tabelas envolvidas separados por sublinhado:


rel_processo_parte 

Se o relacionamento expressar um conceito forte do sistema então o nome deste conceito pode ser utilizado:


administrador_sistema (e não rel_usuario_sistema)


• Tabelas que representam conjuntos de valores relacionados a uma determinada entidade, devem conter um prefixo indicativo do tipo do conjunto seguido do nome da entidade:  

tipo_dependente  
grau_dependente

Colunas

Para chaves primárias seqüenciais utilizar o prefixo id seguido do nome da tabela:

id_pedido  

Para chaves primárias naturais (simples ou compostas) utilizar o prefixo id, o nome da  tabela e o nome da coluna:  

(chave simples)  
id_servidor_cpf  

(chave composta)  
id_pedido_codigo  
id_pedido_data 


 Para chaves primárias que fazem uso de chaves estrangeiras, manter a nomenclatura  da chave estrangeira igual a da chave primária de origem. Aconselha-se que as chaves  estrangeiras sejam posicionadas antes dos demais campos que compõem a chave  primária, isto permite uma melhor identificação visual das chaves estrangeiras que  compõem uma chave primária.  Chave primária da tabela dependente:  

id_servidor  
id_dependente
.
.
.

Chave primária da tabela tarefa (dependente de processo e atividade):  

id_processo  
id_atividade  
id_tarefa
.
.
.  

Chaves primárias cujo conteúdo é numérico devem possuir um tipo de dado numérico e sem decimais.

Os nomes das chaves estrangeiras devem ser iguais ao nome da chave primária de origem.

Prefixos recomendados:  

 sin_ campo sinalizador que aceita apenas os valores S ou N  
 sta_ status multi-valorado. Ex.: S=Servidor, M=Magistrado, T=todos  
 dta_ data  
 dth_ data/hora  
 din_ dinheiro  

Para exclusão lógica utilizar o nome de campo:

sin_ativo  

Tipo de Dado

Quanto ao tipo de dado usado na representação, aconselha-se, para maior portabilidade, a escolha de um dos tipos principais definidos pelo padrão SQL-99 (ou SQL3): 

Tipo Parâmetro Significado
integer - Números inteiros com sinal, o número de bits utilizado na  
representação é dependente da implementação (geralmente 32  
bits). 
smallint - Números inteiros pequenos com sinal, o número de bits utilizado  
na representação é dependente da implementação (geralmente  
16 bits).
numeric [(precisão
[,decimais])]
Números decimais com precisão fixa. Ao criar uma coluna do  
tipo numeric é necessário especificar o comprimento total do  
número e o número de casas decimais. Este tipo é  
recomendado para representação de moedas. Muitos bancos  
de dados possuem um tipo money (não padronizado) que, na  
maioria das vezes, é um campo numeric com precisão e  
decimais específicos. 
decimal [(precisão
[,decimais])]
Semelhante ao numeric, entretanto deve possuir uma precisão  
maior permitindo mais casas decimais.
float [(precisão)] Números com precisão única em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação.
double - Números com precisão dupla em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação, mas é sempre igual ou melhor do que o tipo  
float.
blob [(tamanho)] Usado para armazenagem de qualquer dado em formato binário.  
O significado do parâmetro tamanho depende da implementação  
do banco, podendo ser medido em Kb, Mb ou até Gb. 
char [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
fixo. Tenha cuidado com o parâmetro tamanho – para maior  
portabilidade, evite comprimentos superiores a 1000 caracteres. 
varchar [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
variável (geralmente com tamanho até 4 Kb). 
clob [(tamanho)]

Semelhante ao tipo blob só que aplicado a caracteres (geralmente

para textos maiores que 4 Kb). 

date - Um valor de data no formato YYYY-MM-DD. A faixa de  
valores para o ano pode variar de 1 a 9999).
time [(precisão)] Um valor de hora no formato hh:mm:ss.nnn. O parâmetro  
precisão indica as frações de segundo representadas, e é  
dependente da implementação (geralmente variando entre 0 e 6).
timestamp [(precisão)] Data e hora no formato YYYY-MM-DD hh:mm:ss.nnn.  
O parâmetro precisão indica as frações de segundo  
representadas, e é dependente da implementação (geralmente  
variando entre 0 e 6).
boolean - Valor lógico booleano (verdadeiro/falso). 

Restrições de Integridade

Chave Primária

Utilizar o prefixo pk seguido do nome da entidade:

pk_servidor

Chave Alternativa

Utilizar o prefixo ak seguido do nome da entidade e do nome do(s) campo(s) que a compõem:

ak_servidor_nome

Chave Estrangeira

Utilizar o prefixo fk seguido do nome da entidade que possui a chave estrangeira e do  nome da entidade à qual a chave faz referência:

fk_servidor_lotacao

Índice

Para índices utilizar o prefixo i(01-99) seguido do nome da entidade.

i01_processo 
i02_processo
.
.
.
i99_processo

Sequência

Utilizar o prefixo seq seguido do nome do objeto ao qual a seqüência atende:

seq_dependente 
seq_registro

Observação: O uso deste recurso, bem como de campos do tipo auto-incremento, não é recomendado pois afeta negativamente a portabilidade do sistema.

Aconselha-se a criação de uma tabela auxiliar para geração de seqüências, com estrutura
igual a descrita abaixo:

CREATE TABLE infra_sequencia ( 
nome_tabela varchar(30) NOT NULL,
qtd_incremento integer NOT NULL,
num_atual integer NOT NULL,
num_maximo integer NOT NULL,
CONSTRAINT pk_infra_sequencia PRIMARY KEY (nome_tabela) );

Stored Procedures 

Utilizar o prefixo sp seguido por uma descrição do que a stored procedure faz

sp_gera_fonetica_nome_parte

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Triggers

Utilizar os prefixos ti (insert) tu (update) ou td (delete) seguido do nome da tabela:

ti_requisicao_pagamento  
tu_requisicao_pagamento  
td_requisicao_pagamento

Para cada trigger deve existir uma stored procedure associada que recebe como parâmetro  
os campos da tabela que necessitam validação ou atualização: 

sp_ti_requisicao_pagamento  
sp_tu_requisicao_pagamento  
sp_td_requisicao_pagamento

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Rules

axasUtilizar os prefixos rs (select), ri (insert), ru (update) ou rd (delete) seguido do nome da
tabela: 

rs_processo 

Nomenclatura Geral

Regras de nomenclatura aplicáveis a todos os elementos (tabelas, colunas, índices, etc) do  
modelo de dados:  
• usar somente letras, números e o caracter sublinhado;  
• limitar o tamanho ao máximo de 30 caracteres;  
• utilizar apenas letras minúsculas;  
• palavras internas devem ser separadas pelo caractere sublinhado;  
• suprimir as preposições;  
• utilizar apenas palavras no singular.

Tabelas

• Não utilizar verbos para designar nomes de tabelas, priorizar o uso de substantivos:

processo  
espelho_pauta 

• Para tabelas que implementam relacionamentos (n x n) utilizar o prefixo rel seguido  dos nomes das tabelas envolvidas separados por sublinhado:


rel_processo_parte 

Se o relacionamento expressar um conceito forte do sistema então o nome deste conceito pode ser utilizado:


administrador_sistema (e não rel_usuario_sistema)


• Tabelas que representam conjuntos de valores relacionados a uma determinada entidade, devem conter um prefixo indicativo do tipo do conjunto seguido do nome da entidade:  


tipo_dependente  
grau_dependente

Colunas

Para chaves primárias seqüenciais utilizar o prefixo id seguido do nome da tabela:

id_pedido  

Para chaves primárias naturais (simples ou compostas) utilizar o prefixo id, o nome da  tabela e o nome da coluna:  

(chave simples)  
id_servidor_cpf  

(chave composta)  
id_pedido_codigo  
id_pedido_data 


 Para chaves primárias que fazem uso de chaves estrangeiras, manter a nomenclatura  da chave estrangeira igual a da chave primária de origem. Aconselha-se que as chaves  estrangeiras sejam posicionadas antes dos demais campos que compõem a chave  primária, isto permite uma melhor identificação visual das chaves estrangeiras que  compõem uma chave primária.  Chave primária da tabela dependente:  

id_servidor  
id_dependente
.
.
.

Chave primária da tabela tarefa (dependente de processo e atividade):  

id_processo  
id_atividade  
id_tarefa
.
.
.  

Chaves primárias cujo conteúdo é numérico devem possuir um tipo de dado numérico e sem decimais.

Os nomes das chaves estrangeiras devem ser iguais ao nome da chave primária de origem.

Prefixos recomendados:  

 sin_ campo sinalizador que aceita apenas os valores S ou N  
 sta_ status multi-valorado. Ex.: S=Servidor, M=Magistrado, T=todos  
 dta_ data  
 dth_ data/hora  
 din_ dinheiro  

Para exclusão lógica utilizar o nome de campo:

sin_ativo  

Tipo de Dado

Quanto ao tipo de dado usado na representação, aconselha-se, para maior portabilidade, a escolha de um dos tipos principais definidos pelo padrão SQL-99 (ou SQL3): 

Tipo Parâmetro Significado
integer - Números inteiros com sinal, o número de bits utilizado na  
representação é dependente da implementação (geralmente 32  
bits). 
smallint - Números inteiros pequenos com sinal, o número de bits utilizado  
na representação é dependente da implementação (geralmente  
16 bits).
numeric [(precisão
[,decimais])]
Números decimais com precisão fixa. Ao criar uma coluna do  
tipo numeric é necessário especificar o comprimento total do  
número e o número de casas decimais. Este tipo é  
recomendado para representação de moedas. Muitos bancos  
de dados possuem um tipo money (não padronizado) que, na  
maioria das vezes, é um campo numeric com precisão e  
decimais específicos. 
decimal [(precisão
[,decimais])]
Semelhante ao numeric, entretanto deve possuir uma precisão  
maior permitindo mais casas decimais.
float [(precisão)] Números com precisão única em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação.
double - Números com precisão dupla em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação, mas é sempre igual ou melhor do que o tipo  
float.
blob [(tamanho)] Usado para armazenagem de qualquer dado em formato binário.  
O significado do parâmetro tamanho depende da implementação  
do banco, podendo ser medido em Kb, Mb ou até Gb. 
char [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
fixo. Tenha cuidado com o parâmetro tamanho – para maior  
portabilidade, evite comprimentos superiores a 1000 caracteres. 
varchar [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
variável (geralmente com tamanho até 4 Kb). 
clob [(tamanho)]

Semelhante ao tipo blob só que aplicado a caracteres (geralmente

para textos maiores que 4 Kb). 

date - Um valor de data no formato YYYY-MM-DD. A faixa de  
valores para o ano pode variar de 1 a 9999).
time [(precisão)] Um valor de hora no formato hh:mm:ss.nnn. O parâmetro  
precisão indica as frações de segundo representadas, e é  
dependente da implementação (geralmente variando entre 0 e 6).
timestamp [(precisão)] Data e hora no formato YYYY-MM-DD hh:mm:ss.nnn.  
O parâmetro precisão indica as frações de segundo  
representadas, e é dependente da implementação (geralmente  
variando entre 0 e 6).
boolean - Valor lógico booleano (verdadeiro/falso). 

Restrições de Integridade

Chave Primária

Utilizar o prefixo pk seguido do nome da entidade:

pk_servidor

Chave Alternativa

Utilizar o prefixo ak seguido do nome da entidade e do nome do(s) campo(s) que a compõem:

ak_servidor_nome

Chave Estrangeira

Utilizar o prefixo fk seguido do nome da entidade que possui a chave estrangeira e do  nome da entidade à qual a chave faz referência:

fk_servidor_lotacao

 

Índice

Para índices utilizar o prefixo i(01-99) seguido do nome da entidade.

i01_processo 
i02_processo
.
.
.
i99_processo

Sequência

Utilizar o prefixo seq seguido do nome do objeto ao qual a seqüência atende:

seq_dependente 
seq_registro

Observação: O uso deste recurso, bem como de campos do tipo auto-incremento, não é recomendado pois afeta negativamente a portabilidade do sistema.

Aconselha-se a criação de uma tabela auxiliar para geração de seqüências, com estrutura
igual a descrita abaixo:

CREATE TABLE infra_sequencia ( 
nome_tabela varchar(30) NOT NULL,
qtd_incremento integer NOT NULL,
num_atual integer NOT NULL,
num_maximo integer NOT NULL,
CONSTRAINT pk_infra_sequencia PRIMARY KEY (nome_tabela) );

Stored Procedures 

Utilizar o prefixo sp seguido por uma descrição do que a stored procedure faz

sp_gera_fonetica_nome_parte

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Triggers

Utilizar os prefixos ti (insert) tu (update) ou td (delete) seguido do nome da tabela:

ti_requisicao_pagamento  
tu_requisicao_pagamento  
td_requisicao_pagamento

Para cada trigger deve existir uma stored procedure associada que recebe como parâmetro  
os campos da tabela que necessitam validação ou atualização: 

sp_ti_requisicao_pagamento  
sp_tu_requisicao_pagamento  
sp_td_requisicao_pagamento

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Rules

axasUtilizar os prefixos rs (select), ri (insert), ru (update) ou rd (delete) seguido do nome da
tabela: 

rs_processo  
ri_processo  
ru_processo  
rd_processo 

Para cada rule, se existir uma stored procedure associada utilizar:

Observação: O uso deste recurso não é recomendado pois afeta negativamente a
portabilidade do sistema.

Nomenclatura Geral

Regras de nomenclatura aplicáveis a todos os elementos (tabelas, colunas, índices, etc) do  
modelo de dados:  
• usar somente letras, números e o caracter sublinhado;  
• limitar o tamanho ao máximo de 30 caracteres;  
• utilizar apenas letras minúsculas;  
• palavras internas devem ser separadas pelo caractere sublinhado;  
• suprimir as preposições;  
• utilizar apenas palavras no singular.

Tabelas

• Não utilizar verbos para designar nomes de tabelas, priorizar o uso de substantivos:

processo  
espelho_pauta 

• Para tabelas que implementam relacionamentos (n x n) utilizar o prefixo rel seguido  dos nomes das tabelas envolvidas separados por sublinhado:


rel_processo_parte 

Se o relacionamento expressar um conceito forte do sistema então o nome deste conceito pode ser utilizado:


administrador_sistema (e não rel_usuario_sistema)


• Tabelas que representam conjuntos de valores relacionados a uma determinada entidade, devem conter um prefixo indicativo do tipo do conjunto seguido do nome da entidade:  


tipo_dependente  
grau_dependente

Colunas

Para chaves primárias seqüenciais utilizar o prefixo id seguido do nome da tabela:

id_pedido  

Para chaves primárias naturais (simples ou compostas) utilizar o prefixo id, o nome da  tabela e o nome da coluna:  

(chave simples)  
id_servidor_cpf  

(chave composta)  
id_pedido_codigo  
id_pedido_data 


 Para chaves primárias que fazem uso de chaves estrangeiras, manter a nomenclatura  da chave estrangeira igual a da chave primária de origem. Aconselha-se que as chaves  estrangeiras sejam posicionadas antes dos demais campos que compõem a chave  primária, isto permite uma melhor identificação visual das chaves estrangeiras que  compõem uma chave primária.  Chave primária da tabela dependente:  

id_servidor  
id_dependente
.
.
.

Chave primária da tabela tarefa (dependente de processo e atividade):  

id_processo  
id_atividade  
id_tarefa
.
.
.  

Chaves primárias cujo conteúdo é numérico devem possuir um tipo de dado numérico e sem decimais.

Os nomes das chaves estrangeiras devem ser iguais ao nome da chave primária de origem.

Prefixos recomendados:  

 sin_ campo sinalizador que aceita apenas os valores S ou N  
 sta_ status multi-valorado. Ex.: S=Servidor, M=Magistrado, T=todos  
 dta_ data  
 dth_ data/hora  
 din_ dinheiro  

Para exclusão lógica utilizar o nome de campo:

sin_ativo  

Tipo de Dado

Quanto ao tipo de dado usado na representação, aconselha-se, para maior portabilidade, a escolha de um dos tipos principais definidos pelo padrão SQL-99 (ou SQL3): 

Tipo Parâmetro Significado
integer - Números inteiros com sinal, o número de bits utilizado na  
representação é dependente da implementação (geralmente 32  
bits). 
smallint - Números inteiros pequenos com sinal, o número de bits utilizado  
na representação é dependente da implementação (geralmente  
16 bits).
numeric [(precisão
[,decimais])]
Números decimais com precisão fixa. Ao criar uma coluna do  
tipo numeric é necessário especificar o comprimento total do  
número e o número de casas decimais. Este tipo é  
recomendado para representação de moedas. Muitos bancos  
de dados possuem um tipo money (não padronizado) que, na  
maioria das vezes, é um campo numeric com precisão e  
decimais específicos. 
decimal [(precisão
[,decimais])]
Semelhante ao numeric, entretanto deve possuir uma precisão  
maior permitindo mais casas decimais.
float [(precisão)] Números com precisão única em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação.
double - Números com precisão dupla em ponto flutuante. A faixa de  
valores e a precisão da representação dependem da  
implementação, mas é sempre igual ou melhor do que o tipo  
float.
blob [(tamanho)] Usado para armazenagem de qualquer dado em formato binário.  
O significado do parâmetro tamanho depende da implementação  
do banco, podendo ser medido em Kb, Mb ou até Gb. 
char [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
fixo. Tenha cuidado com o parâmetro tamanho – para maior  
portabilidade, evite comprimentos superiores a 1000 caracteres. 
varchar [(tamanho)] Usado na representação de seqüências de caracteres de tamanho  
variável (geralmente com tamanho até 4 Kb). 
clob [(tamanho)]

Semelhante ao tipo blob só que aplicado a caracteres (geralmente

para textos maiores que 4 Kb). 

date - Um valor de data no formato YYYY-MM-DD. A faixa de  
valores para o ano pode variar de 1 a 9999).
time [(precisão)] Um valor de hora no formato hh:mm:ss.nnn. O parâmetro  
precisão indica as frações de segundo representadas, e é  
dependente da implementação (geralmente variando entre 0 e 6).
timestamp [(precisão)] Data e hora no formato YYYY-MM-DD hh:mm:ss.nnn.  
O parâmetro precisão indica as frações de segundo  
representadas, e é dependente da implementação (geralmente  
variando entre 0 e 6).
boolean - Valor lógico booleano (verdadeiro/falso). 

Restrições de Integridade

Chave Primária

Utilizar o prefixo pk seguido do nome da entidade:

pk_servidor

Chave Alternativa

Utilizar o prefixo ak seguido do nome da entidade e do nome do(s) campo(s) que a compõem:

ak_servidor_nome

Chave Estrangeira

Utilizar o prefixo fk seguido do nome da entidade que possui a chave estrangeira e do  nome da entidade à qual a chave faz referência:

fk_servidor_lotacao

 

Índice

Para índices utilizar o prefixo i(01-99) seguido do nome da entidade.

i01_processo 
i02_processo
.
.
.
i99_processo

Sequência

Utilizar o prefixo seq seguido do nome do objeto ao qual a seqüência atende:

seq_dependente 
seq_registro

Observação: O uso deste recurso, bem como de campos do tipo auto-incremento, não é recomendado pois afeta negativamente a portabilidade do sistema.

Aconselha-se a criação de uma tabela auxiliar para geração de seqüências, com estrutura
igual a descrita abaixo:

CREATE TABLE infra_sequencia ( 
nome_tabela varchar(30) NOT NULL,
qtd_incremento integer NOT NULL,
num_atual integer NOT NULL,
num_maximo integer NOT NULL,
CONSTRAINT pk_infra_sequencia PRIMARY KEY (nome_tabela) );

Stored Procedures 

Utilizar o prefixo sp seguido por uma descrição do que a stored procedure faz

sp_gera_fonetica_nome_parte

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Triggers

Utilizar os prefixos ti (insert) tu (update) ou td (delete) seguido do nome da tabela:

ti_requisicao_pagamento  
tu_requisicao_pagamento  
td_requisicao_pagamento

Para cada trigger deve existir uma stored procedure associada que recebe como parâmetro  
os campos da tabela que necessitam validação ou atualização: 

sp_ti_requisicao_pagamento  
sp_tu_requisicao_pagamento  
sp_td_requisicao_pagamento

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

Rules

Utilizar os prefixos rs (select), ri (insert), ru (update) ou rd (delete) seguido do nome da tabela: 

rs_processo  
ri_processo  
ru_processo  
rd_processo 

Para cada rule, se existir uma stored procedure associada utilizar:

sp_rs_processo  
sp_ri_processo  
sp_ru_processo  
sp_rd_processo

Observação: O uso deste recurso não é recomendado pois afeta negativamente a portabilidade do sistema.

ri_processo  
ru_processo  
rd_processo 

Para cada rule, se existir uma stored procedure associada utilizar:

Observação: O uso deste recurso não é recomendado pois afeta negativamente a
portabilidade do sistema.

 <-- Voltar

 


Essa comunidade não possui posts nesse blog