Você está na página 1de 17

Traduzido do Inglês para o Português - www.onlinedoctranslator.

com

Nota D0 3782
13 de outubro de 2009

Tutorial do Oracle Designer:

Criando um banco de dados Oracle

Elizabeth Galas
Laboratório Nacional do Acelerador Fermi

O Oracle Designer (OD) deve ser usado para projetar os bancos de dados que serão usados para D0 na
Run II. Este documento é um tutorial que mostra como utilizar o Oracle Designer para gerar o código
necessário para produzir um banco de dados na plataforma de desenvolvimento. Ele mostra como usar o
Oracle Designer para

• criar tabelas, relações e visualizações,

• atribuir e conceder funções,

• especificar gatilhos e restrições e


• gerar requisitos de armazenamento precisos.

Todo design deve conter muitos, senão todos, desses elementos. Com as ferramentas básicas
descritas neste documento, um designer de banco de dados estará familiarizado o suficiente com OD
para desenvolver aplicações maiores com recursos mais complexos. O autor enfatiza que o
aconselhamento e assistência do grupo do Projeto Fermilab Support DB são inestimáveis neste
processo. Mantê-los informados aumentará o sucesso do seu projeto de banco de dados.

1
Conteúdo
1 Introdução 3

2 Lista de itens essenciais 4

3 Usando o Oracle Designer 5


3.1 Diagramador ER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Informações resumidas. . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2 Crie suas Entidades (Tabelas) . . . . . . . . . . . . . . . . . . . . . 5
3.1.3 Adicionar colunas, estimar registros . . . . . . . . . . . . . . . . . . . 6
3.1.4 Domínios (opcional) . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.5 Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.6 Identificadores Únicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.7 O Diagrama ER. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.8 DDT - Transformador de Design de Banco de Dados . . . . . . . . . . . . . . . . . 8
3.2 RON - Navegador de Objetos de Repositório . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Sinônimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 Visualizações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.3 Sequências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.4 Gatilhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.5 Defina sua aplicação ........................ 12
3.2.6 Funções e contas d0db ....................... 12
3.2.7 Definições de Armazenamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.8 Verificações Finais: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 DE - Editor de Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 Gerar o DDL. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4 Criando o banco de dados 15

5 Cortando Scripts 16

6 Entrada de dados 17

7 MISWEB 17

8 Colocando seu banco de dados online 17

2
1. Introdução
Oracle Designer (OD) deve ser usado para projetar bancos de dados usados em D0 para Run II. Usado corretamente,
facilitará sua vida, e não mais, para levar seu banco de dados para o ambiente de produção com mais rapidez e
eficiência.
Neste tutorial, descrevo como usar o OD para definir (depois o OD cria):

Tabelas e relacionamentos (*.tab e arquivos *.ind)


Os atributos [colunas] das entidades [tabelas] e os relacionamentos das entidades entre si são representados
no diagrama ER [Entidade Relacional]. Umentidadeno diagrama se torna ummesaem seu banco de dados. O
atributosem cada entidade se torna ocolunasem suas mesas.
Ressalta-se que o desenho do banco de dados está todo no diagrama ER: a coleta das informações
armazenadas em cada tabela e o relacionamento entre as tabelas. Você voltará e renovará este Diagrama ER
muitas vezes à medida que seu banco de dados evoluir até sua forma final. Lembre-se: tabelas são entidades,
entidades são como tabelas. Como sou um amador, frequentemente uso os termos 'tabela' ou 'coluna' neste
documento, onde tecnicamente no diagramador ER eu deveria dizer 'entidade' ou 'atributo', respectivamente!

Subsídios ou Funções (*.grande)

• quem [quais usuários do banco de dados d0db] receberá

• que tipo [selecionar, atualizar, inserir, excluir] de acesso


• para cada tabela, visualização ou sequência.

Requisitos de armazenamento (*.guia e *.ind)


São gerados para todas as tabelas, chaves e índices em um relatório que exige apenas que você insira para cada
tabela o número inicial de registros e o número máximo de registros para aquela tabela.

Gatilhos (*.trg)
Os gatilhos de banco de dados são scripts PL/SQL executados automaticamente quando uma condição lógica é
satisfeita.

Restrições (*.vigarista)
As restrições são necessárias para promover a integridade do banco de dados (evitar entradas inadequadas em uma
tabela, por exemplo). Muitos saem do design naturalmente do Diagrama ER. As restrições podem ser impostas no
banco de dados e/ou no nível da interface.

Sequências (*.m²)
Tabelas com colunas destinadas a ter valores integrais ascendentes podem usar sequências para gerar o valor atual
ou o próximo valor na sequência.

Visualizações (*.vw)
Uma visualização é um objeto especial semelhante a uma tabela que você pode definir e que disponibiliza os dados em
diversas tabelas a partir de aplicativos cliente ou SQLPlus como se estivessem na mesma tabela.

Sinônimos (*.sin)
Os sinônimos globais permitem que outros usuários do d0db vejam seus objetos (tabelas, visualizações, sequências, por exemplo)
sem sempre prefixá-los com o proprietário da tabela. Ele economiza digitação para todos os usuários de seus objetos.

O Oracle Designer exige que você planeje todo o design antecipadamente, mas gera todo o código necessário para
construir o banco de dados com todos os recursos especificados nas máquinas UNIX. Esse código, chamado
coletivamente de 'DDL' (Linguagem de definição de banco de dados), é um conjunto de arquivos com extensões
como .con, .grt, . ind, .sql, .syn, .tab, .trg e .vw conforme descrito acima. Esta não é uma lista abrangente de todos os
recursos/extensões, mas os descritos acima são alguns recursos comumente usados. Utilizar o Oracle Designer para
criar o diagrama ER e criar esses arquivos são os primeiros passos que devem ser cumpridos para colocar seu banco de
dados na plataforma de produção. O conjunto completo de padrões está atualmente listado em http://
fncduh.fnal.gov:80/supportdb/working/run2 standards.html e
http://fncduh.fnal.gov:80/supportdb/working/designer report checklist.html .

3
Este documento NÃO é um tutorial sobre a linguagem SQL, scripts PL/SQL, como usar SQLPlus ou como projetar
bancos de dados usando o modelo de banco de dados Entidade Relacional (ER). Se você é novo no mundo dos bancos de
dados, precisará aprender elementos de cada um desses conceitos para se tornar proficiente em design e
gerenciamento de bancos de dados. Os conceitos de design de banco de dados relacional e sua aplicação a uma
aplicação mais complexa são descritos na nota D0 710 [1]. A documentação do Oracle pode ser encontrada na página
inicial do banco de dados D0 http://d0db.fnal.gov/d0db , que inclui Guias de Referência e do Usuário para Oracle 8,
SQLPlus e PL/SQL.
Este documento descreve passo a passo como implementar um projeto de banco de dados utilizando Oracle
Designer e criá-lo na plataforma de desenvolvimento offline D0 (d0ora1). Há seções no final deste documento sobre
entrada de dados e uma maneira fácil de fazer consultas dinâmicas ao banco de dados a partir de páginas da web. O
banco de dados usado como exemplo neste tutorial é um banco de dados real usado para armazenar as informações
coletadas em uma pesquisa da colaboração baseada na Web (D0 Authorlist Survey Project). Doravante neste documento,
ele será referido como “o projeto de pesquisa”.

2 Lista de itens essenciais


A primeira etapa para iniciar seu projeto de aplicação de banco de dados é obter o seguinte:

• Se você ainda não os possui, consulte http://d0server1.fnal.gov/d0 account.html para obter uma
conta D0 NT e uma conta UNIX.

• Entre em contato com d0db-support@fnal.gov :

1. Solicite uma conta Oracle Designer para seu aplicativo. Inclua o nome do projeto e uma descrição do
seu projeto, seu nome completo, sua instituição e seu nome de usuário do Fermilab. O nome da conta
OD para o projeto de pesquisa é AUTHOR SURVEY DESIGN (os nomes das contas OD sempre
terminam com 'DESIGN'). Você deve indicar se está projetando um banco de dados online ou offline
porque eles usam repositórios OD diferentes: 'd0ofdev1' ou 'd0ondev1', respectivamente.
2. Solicite uma conta de banco de dados d0db (que terá o mesmo nome do seu nome de usuário). Meu nome de
usuário d0db é gallas.

3. Solicite um nome de usuário d0db para o 'proprietário das tabelas' do seu aplicativo. Você não é o
proprietário da tabela (não confunda este nome de usuário d0db com seu nome de usuário d0db). O
proprietário das tabelas do projeto de pesquisa é ALS OWNER.
4. Solicite espaço de tabela para seu aplicativo. Normalmente são atribuídos dois tablespaces, chamados *DATA para as
tabelas e *IDX para os índices, que são separados para melhorar o desempenho do banco de dados. Para o projeto
de pesquisa eles são chamados de ALS DATA e ALS IDX.

• Entre em contato com o gerente d0 CVS em d0-release-mgr@fnal.gov para solicitar nomes de pacotes CVS
para seu aplicativo. Inclua o nome sugerido do pacote CVS e uma descrição da sua aplicação e forneça os
nomes e e-mails das pessoas que terão acesso por escrito a ele. O nome do pacote CVS para o projeto de
pesquisa é Banco de dados de pesquisa do autor.

Os itens a seguir serão necessários posteriormente (descritos mais detalhadamente na Seção 3.2.5). Não os
solicite no início, pois dependerão um pouco da sua aplicação. Você entrará em contato com
d0dbsupport@fnal.gov para obter

• um ou mais nomes de usuário de conta d0db que podem ser necessários para suas interfaces (depois de
pensar em como inserir e exibir os dados em suas tabelas).

• uma ou mais funções, listando os nomes de usuário da conta d0db correspondentes.

Se há um conselho que devo lhe dar, é este: reserve um tempo para escolher seus nomes e abreviações com cuidado
e consistência e não os altere a menos que seja realmente necessário, porque embora seja possível, não é fácil. Discuta
os nomes com os especialistas do seu grupo e certifique-se de que sejam descritivos e distintos. Além disso, considere o
fato de que as tabelas de banco de dados de outras partes do experimento residirão no mesmo banco de dados online
ou offline que o seu. Portanto, é importante escolher nomes de modo a não entrar em conflito

4
ou ser confundido com a finalidade de suas tabelas. Também pode ser útil usar outros aplicativos de banco de dados como guia
para suas convenções de nomenclatura. Outra consideração é que, como você digitará esses nomes muitas vezes, nomes muito
longos rapidamente se tornarão entediantes.
A organização do banco de dados D0, a documentação e a documentação do Oracle podem ser encontradas na página
inicial do banco de dados D0 http://d0db.fnal.gov/d0db . A obtenção de muitos dos itens da lista acima e a ajuda com sua
aplicação podem ser obtidas pessoalmente através do grupo de projetos de banco de dados de suporte do Fermilab ou por e-
mail para d0db-support@fnal.gov .

3 Usando o Oracle Designer


Utilize o PC D0nt84 localizado em DAB1 (onde o Oracle Designer/2000 está instalado) e faça login usando
sua conta D0 NT. Clique em Iniciar (canto inferior esquerdo). Em 'Programas', escolha 'Oracle Designer
R6.0/Oracle Designer'. Faça login com o nome de usuário OD do seu aplicativo usando a string de conexão
“d0ofdev1” ou “d0ondev1” que conecta você ao repositório de desenvolvimento offline ou online, respectivamente,
conforme solicitado. O repositório Oracle armazena seu diagrama e faz backup dele.
O nome de usuário do OD para o projeto de pesquisa é autor de design de pesquisa em d0ofdev1. À medida que percorro as
etapas, as escolhas que faço para o projeto de pesquisa geralmente aparecem entre parênteses. Se você tiver um projeto de
banco de dados online, digite D0ONDEV1 em vez de D0OFDEV1 neste documento.
Para o projeto de pesquisa, nomeei o 'Sistema de Aplicação' ALS DIAGRAM e cliquei no botão criar.
Então esse nome aparece na caixa abaixo e é destacado. Clique em OK. O painel frontal do Oracle Designer
aparecerá. Outra observação: a execução bem-sucedida de muitas tarefas descritas neste documento
depende da execução bem-sucedida das seções anteriores.

3.1 Diagramador ER
Ressalta-se que o desenho do banco de dados está todo no diagramador ER e expresso no diagrama ER: ou seja,
a coleta de informações armazenadas em cada tabela e o relacionamento entre as tabelas. Você voltará e
retrabalhará este Diagrama ER muitas (dezenas ou centenas de!) vezes à medida que seu banco de dados evoluir
até sua forma final.
No painel frontal do Oracle Designer, escolha o ícone 'Entity Relationship Diagrammer'. Em ‘Arquivo’, selecione
‘Novo’. Seu novo diagrama é chamado por padrão de ERD1. Renomeio o meu para ALS DIAGRAM1 usando a
opção 'Salvar Diagrama como' em 'Arquivo'.

3.1.1 Informações resumidas


Em 'arquivo', seleciono 'Informações resumidas' e insiro o título do diagrama, autor e clico em qualquer outra
informação que desejo imprimir em meu Diagrama ER (veja o canto superior esquerdo do Diagrama ER na Figura 1).

3.1.2 Crie suas Entidades (Tabelas)


Clique no oval denominado 'Entidade' para criar uma nova tabela e, a seguir, clique na página para colocá-la no
diagrama. Eu crio 2 tabelas para o projeto de pesquisa chamadas ALS ENTRY (armazena todas as entradas de cada
pesquisa) e ALS ID (armazena os IDs e senhas da pesquisa para cada pesquisa). O nome da entidade deve ser singular
(ALS ENTRY e ALS ID), os nomes abreviados devem ser tão curtos quanto possível (AE e AI) e os plurais geralmente têm
apenas um 's' no nome da entidade (ALS ENTRIES e ALS IDS). Tecnicamente, a forma plural é o nome da tabela e a forma
singular é o nome da entidade.

5
3.1.3 Adicionar colunas, estimar registros
Clique duas vezes em uma tabela para editá-la (ALS ENTRY). Na aba 'Definição', estime o número de
registros iniciais na tabela ('Inicial'=100) e o número máximo de registros ('Máximo'=800 já que há
menos de 600 colaboradores).
Na guia 'Atributos':
'Nomes'das colunas da tabela devem ser tão curtas, mas tão descritivas quanto possível.

'Optar'Colunas opcionais (não obrigatórias) possuem a caixa opcionalverificado.

'Seq'é apenas a ordem em que as colunas aparecem na tabela. Coloque as colunas mais significativas no topo:
a(s) chave(s) primária(s) deve(m) ter o menor 'Seq'=1 ... Dê às colunas opcionais os números mais altos, então elas
terão armazenamento na parte inferior do registro e se não forem preenchidas, não ocuparão nenhum espaço.

'Formato' (tipo de dados) é obrigatório para todas as colunas. Os tipos de dados que usei são INTEGER (para número inteiro verdadeiro
colunas), NUMBER (para colunas de números com sinal verdadeiro que exigem casas 'Dec' após o ponto decimal),
VARCHAR2 (pode armazenar até 4.000 caracteres de qualquer tipo), TIMESTAMP (armazena data/hora no formato de
data/hora Oracle). Todos esses tipos possuem um 'MaxLen', exceto o TIMESTAMP.

'Comente' -Todas as colunas devem ter uma descrição inserida aqui. Aqui
está uma tabela de colunas em ALS ENTRY:
IDNUM Eu defino uma coluna do tipo INTEGER(MaxLen=10) chamada IDNUM como a chave
primária (clique na caixa 'primária') com 'Seq' = 1, portanto é a primeira coluna
listada na tabela no diagrama ER.
IDNUM2 Eu defino uma segunda coluna inteira chamada IDNUM2. Esta coluna obrigatória é
necessária para a interface (os motivos não são relevantes aqui).
CRIAR DATA Use domínios com os mesmos nomes descritos na próxima subseção.
e
CRIAR USUÁRIO
M01 - M08 Oito colunas denominadas M01 - M08 armazenarão os resultados das
questões sim/não da pesquisa (aqui utilizo o domínio SIM NÃO definido na
próxima seção). Portanto, essas colunas terão 'Format'=VARCHAR2 com
'MaxLen'=30 e os possíveis valores especificados abaixo.
Q01 Esta coluna armazena o conteúdo de uma pergunta dissertativa da pesquisa para que as
pessoas possam inserir comentários ou sugestões. Dou a esta coluna o número 'Seq'
mais alto, torno-a opcional e atribuo-lhe um 'Format'=VARCHAR2 ('MaxLen'=2000). Isto
dá bastante espaço para uma entrada de texto, mas o coloca na parte inferior do
registro, portanto, se não for preenchido, não ocupará espaço.
MODIFICAR DATA Use os domínios com os mesmos nomes descritos na próxima subseção.
e
MODIFICAR USUÁRIO

Quando terminar com uma tabela, clique em OK.


O conteúdo da tabela ALS ID é mais simples: ela contém uma chave primária INTEGER(10) chamada
IDNUMC. Ele também contém uma coluna opcional chamada PSSCODE com tipo VARCHAR2(30) que a
interface usa para evitar vários envios da mesma pesquisa. Esta tabela também contém CREATE e MODIFY
a DATE e USER.
A chave primária para ALS ID será na verdade uma combinação de IDNUMC junto com IDNUM de ALS ENTRY (será
trazida como uma chave estrangeira quando o relacionamento for definido nas subseções 'Relacionamentos' e
'Identificadores Únicos' abaixo). Utilizo isso como exemplo para enfatizar: Não insira nenhuma chave estrangeira em
uma tabela em 'Atributos', pois elas serão incluídas automaticamente quando os relacionamentos forem feitos.

Como existe um relacionamento um-para-um entre as tabelas, você pode perguntar por que não coloquei
tudo na mesma tabela! O motivo é: as funções (quem terá permissão para selecionar, atualizar, inserir e excluir
registros) para a tabela ALS ENTRY serão diferentes das da tabela ALS ID. Isso será descrito na seção Funções
deste documento.
Quando terminar com uma tabela, clique em OK.

6
3.1.4 Domínios (opcional)
O uso de domínios é opcional, mas pode ser útil quando

1. colunas com as mesmas definições aparecem em mais de uma tabela ou

2. quando várias colunas na mesma tabela possuem as mesmas características.

Um exemplo do primeiro caso é: gosto de registrar a data de criação e o usuário de cada registro em
cada tabela. Em 'Editar', selecione 'Domínios...'. Eu crio um domínio chamado CREATE DATE com 'Format' e
'Datatype' = TIMESTAMP e uma coluna chamada CREATE USER com 'Format' e 'Datatype' = VARCHAR2
('MaxLen'=30) e forneço a ambos uma descrição apropriada. Da mesma forma, defino MODIFY DATE e
MODIFY USER.
Um exemplo deste último caso é: A tabela ALS ENTRY contém respostas para oito perguntas “sim
ou não”. Portanto, crio um domínio chamado YESNO com 'Format' e 'Datatype' = VARCHAR2
('MaxLen'=30). Na aba 'Valor', dou ao domínio SIM NÃO 3 valores possíveis de “SIM”, “NÃO” ou
“NA” (para não resposta).
Depois de fazer isso, posso usar esses domínios para criar rapidamente colunas em minhas tabelas com nomes de colunas
diferentes, mas com as mesmas características (usadas na subseção anterior).

3.1.5 Relacionamentos

Agora defina os relacionamentos entre as tabelas (as linhas do Diagrama ER). Minha tabela ALS ENTRY contém
todos os dados de entrada da pesquisa. A tabela ALS ID permite um registro para cada pesquisa enviada que a
interface da web usa para evitar vários envios da mesma pesquisa.
A relação entre a tabela ALS ENTRY e ALS ID é: Existe uma entrada em ALS ENTRY para cada entrada em
ALS ID, ou seja, uma correspondência um-para-um. Além disso, o relacionamento é obrigatório (M) no final
do ALS ID e opcional (O) no final do ALS ENTRY. Obrigatório significa que cada entrada na tabela ALS ID
DEVE ter uma entrada correspondente na tabela ALS ENTRY, mas não vice-versa. Portanto, clico no ícone de
linha sólida para tracejada [rotulado “Relacionamento 1:1 M para O”], coloco a primeira extremidade da
linha na tabela ALS ID (clique) e a outra extremidade da linha no ALS ENTRY tabela (clique). Digite 'de' e
'para' na caixa 'Criar relacionamento' que aparece até você pensar em palavras melhores para descrever o
relacionamento.
Este relacionamento um-para-um é simples e não é usado com frequência, mas as mesmas etapas podem ser aplicadas para
relacionamentos um-para-um que são mais comuns: No OD, os ícones de 'Relacionamento' são ordenados da esquerda para a
direita na ordem de frequência com que ocorrem. geralmente são usados. Provavelmente, você usará o relacionamento um
(opcional) para muitos (obrigatório) [M:1 (M para O)] 99% das vezes. Peça ajuda/conselho para relacionamentos mais complexos
(como muitos para muitos) do Grupo de Projetos do Banco de Dados de Suporte porque frequentemente, quando eles são
usados, há uma falha na sua lógica!

3.1.6 Identificadores Únicos

Conforme mencionado nas últimas seções, a chave primária (identificador exclusivo para cada registro) para a tabela ALS
ID é uma combinação de IDNUMC junto com IDNUM de ALS ENTRY (trazida como uma chave estrangeira)
Para fazer esta associação, clique duas vezes no relacionamento (linha entre as tabelas). Marque a caixa 'UID
primário' para 'Fim do relacionamento'. Ao clicar em 'OK', você deverá ver uma marca de seleção na linha próxima
à caixa que adota a(s) chave(s) primária(s).
Verifique as chaves primárias dessa tabela clicando duas vezes nessa tabela (ALS ID). O conjunto de colunas usado
como chave primária para qualquer tabela está listado na caixa 'Conteúdo do identificador exclusivo' na parte inferior
desta tela. Se você quiser adicionar mais colunas à chave primária dessa tabela, destaque os 'Atributos do Candidato' ou
'Relacionamentos do Candidato' e clique na seta para baixo. Clique em OK. Verifique os UIDs de todas as suas tabelas.

3.1.7 O Diagrama ER
O diagrama ER para a pesquisa é mostrado na Figura 3.1.7. A caixa no canto superior esquerdo contém as
informações resumidas que selecionei na subseção 3.1.1. Existem 2 tabelas (entidades) chamadas ALS ID

7
Figura 1: Diagrama ER (Entidade Relacional) para o banco de dados do projeto de pesquisa D0 Authorlist.

e ENTRADA DE ALS. As colunas de chave primária são indicadas com o símbolo '#'. Colunas com '*' indicam
colunas obrigatórias. As colunas com o símbolo 'o' são opcionais e devem estar sempre no final da tabela.

Uma linha sólida na tabela ALS ID indica um relacionamento obrigatório. A marca indica que uma ou mais chaves
estrangeiras do ALS ENTRY compreendem todas/parte das chaves primárias no ALS ID. A linha tracejada para a tabela
ALS ENTRY significa que esse relacionamento é opcional para esta tabela.
Eventualmente, você precisará enviar uma cópia impressa do seu diagrama ER para o grupo de suporte do
banco de dados, um requisito da revisão de código quando quiser sair do ambiente de desenvolvimento (para
integração e produção).

3.1.8 DDT - Transformador de Design de Banco de Dados

A Fase 1 do seu projeto está concluída (conclusão do Diagrama ER). Em 'Utilitários' escolha 'Database Design
Transformer' (DDT). A execução do DDT passa todas as informações do Diagramador ER para o RON, o Navegador
de Objetos do Repositório (próxima seção).
No DDT, escolha Executar o Transformer no modo padrão para 'Todas as entidades'. Clique em ‘Configurações’. Na guia
'Outras configurações', você NÃO deseja que prefixos sejam gerados para 'Colunas de chave estrangeira' ou 'Colunas de chave
substituta' ou 'Colunas' (desmarque qualquer uma dessas caixas se estiverem marcadas). Em 'Prioridade do componente da
coluna', marque todas essas caixas (por padrão elas estão marcadas). Uma caixa de mensagem aparece informando que 'As
configurações não serão armazenadas até que o botão Executar seja pressionado'. Clique em 'OK'. De volta à tela principal do
DDT, clique em ‘Executar’. A 'Janela de saída DDT' pode ou não mostrar mensagens que sejam significativas para você (a
princípio), mas às vezes indicam erros. É sempre bom dar uma olhada antes de fechar esta janela.
Você pode fechar o Entity Relationship Diagrammer agora.

8
3.2 RON - Navegador de Objetos de Repositório
No Painel Frontal do Oracle Designer, escolha o ícone Repository Object Navigator Utility. Feche a pasta 'Enterprise Modeling'
sempre que ela aparecer. Começaremos na pasta 'Server Model Definition' para definir Sinônimos, Visualizações, Sequências e
Triggers. Em seguida, nos certificaremos de que o banco de dados esteja conectado corretamente ao espaço de tabela,
nomearemos o proprietário da tabela e conectaremos todas as implementações de tabela, visualização, sequência e gatilho em
'Database and Network Design'. Em seguida, retornaremos brevemente ao Diagramador ER para executar novamente o DDT.
Depois podemos voltar ao RON, onde as definições de armazenamento são definidas na pasta 'Definição de dados de referência'.
Finalmente, as funções são definidas em 'Database and Network Design' e então as verificações finais podem ser feitas.

3.2.1 Sinônimos
Os sinônimos globais permitem que outros usuários do d0db vejam seus objetos (tabelas, visualizações, sequências, por
exemplo) sem sempre prefixá-los com o proprietário da tabela. Ele economiza digitação para todos os usuários de seus objetos.
Eu defino as formas plural e singular dos nomes de minhas tabelas/entidades como sinônimos globais para minhas tabelas, para
que qualquer um dos nomes possa ser usado no SQLPlus por qualquer usuário d0db. Tecnicamente, a forma plural é o nome da
tabela e a forma singular é o nome da entidade. Sinônimos também podem ser usados para outros objetos, como sequências e
visualizações, e definirei esses sinônimos quando definir esses objetos.
Para sinônimos de nomes de tabelas, abra a pasta 'Definição de modelo de servidor'. Aqui, abra a pasta
‘Definições de tabela’. Para cada uma das pastas da sua tabela (como ALS ENTRY), abra a pasta e destaque
'Sinônimos' (clique único). Em seguida, clique no ícone ‘verde +’ que aparece à esquerda. Insira seus dois nomes
de sinônimos para essa tabela: o próprio nome da entidade (ALS ENTRY) e seu plural (ALS ENTRIES) (o nome da
tabela).
Para confirmar suas alterações, escolha 'Requery All' no menu 'Edit' ou clique no ícone 'Requery All' à
esquerda.

3.2.2 Visualizações

Uma visualização é um objeto especial semelhante a uma tabela que você pode definir e que pode disponibilizar os dados em
várias tabelas a partir de aplicativos cliente ou SQLPlus como se estivessem em uma única tabela. Devido à restrição de função
que estou definindo na tabela de ID do ALS, uma visualização de múltiplas tabelas não é muito útil para o exemplo do projeto de
pesquisa. Mas definirei aqui como exemplo uma visão que inclui as chaves primárias e colunas de ambas as tabelas como
exemplo.
As visualizações são definidas em RON na pasta 'Definição de modelo de servidor', subpasta 'Definições de tabela'.
Destaque 'Exibir definições' e clique no ícone 'verde +' à esquerda. Uma paleta de propriedades 'Propriedades de
definição de visualização' deve aparecer à direita. Clique no ícone do gráfico para obter a 'visualização padrão' (em vez
da 'Visualização SpreadTable', onde apenas algumas colunas são visíveis). Chamarei minha visão de 'Nome' = ALS VIEW.
'Selecionar texto em formato livre?' = SIM. Clique duas vezes no balão 'Selecionar texto' e um 'Padrão de texto'
aparecerá, no qual digito um texto semelhante a SQL que lista as tabelas.colunas que serão incluídas, uma cláusula 'de' e
uma cláusula 'onde' .

ae.idnum,ae.idnum2,ae.create date,ae.create user,ai.idnumc,ai.psscode de


als entradas ae,als ids ai
onde ae.idnum=ai.idnum e ae.idnum2=ai.idnumc

Após definir as propriedades (acima), abra a pasta de visualização que você acabou de criar em ‘Ver
Definições’. Clique em 'Tabelas Base' e depois clique no ícone 'verde +' à esquerda. Destaque todas as tabelas que
você usa nessa visualização e clique em 'OK'. Clique em ‘Colunas’ e depois clique no ícone ‘verde +’ à esquerda.
Insira os nomes de todas as colunas que você usa nessa visualização e clique em 'OK'.
Depois que uma visualização é definida, as consultas SQL SELECT dessa visualização podem retornar registros do banco de dados
como se essa visualização fosse uma tabela. Outros usuários do d0db poderão usar sua visualização com mais facilidade se você definir
um sinônimo global para ela: Destaque 'Sinônimos', clique no ícone 'verde +' e insira o nome da visualização como nome de sinônimo para
essa visualização. Clique no ícone 'Requery All'.

9
3.2.3 Sequências
Tenho 2 identificadores inteiros exclusivos em minhas tabelas, IDNUM e IDNUMC, para os quais preciso de geradores de
números de sequência. Esses geradores saberão os números atuais e os próximos na sequência.
Para definir esses geradores de sequência, abro a pasta 'Server Model Definition'. Destaco 'Definições de sequência'
e clico no ícone 'verde +' à esquerda. Defino uma sequência chamada IDNUM SEQ para a coluna IDNUM e uma
sequência chamada IDNUMC SEQ para a coluna IDNUMC. É melhor definir um sinônimo global para todas as suas
sequências: destaque 'Sinônimos', clique no ícone 'verde +' e insira o nome da sequência como nome de sinônimo para
cada uma de suas sequências. Clique em 'Salvar' ou no ícone 'Repetir consulta a todos'.

10
3.2.4 Gatilhos
Os gatilhos de banco de dados são scripts PL/SQL executados automaticamente quando uma condição lógica é
satisfeita. Por exemplo, ambas as tabelas no banco de dados do projeto de pesquisa contêm os campos CREATE
DATE, CREATE USER, MODIFY DATE e MODIFY USER. Criarei um gatilho para preencher automaticamente MODIFY
DATE e MODIFY USER sempre que uma solicitação UPDATE for executada. Criarei outro gatilho para preencher
automaticamente CREATE DATE, CREATE USER e as chaves primárias de sequência inteira IDNUM e IDNUMC
usando suas respectivas sequências sempre que uma solicitação INSERT for executada.

Abra a pasta ‘Definição de modelo de servidor’. Clique em Definições PL/SQL e, em seguida, clique no botão 'verde
+ 'ícone à esquerda. Eu nomeio meu primeiro gatilho MODIFY BEF U (preenche as colunas MODIFY antes de um
UPDATE). Se uma paleta de propriedades não aparecer à direita, escolha 'Palate de propriedades' no menu
'Ferramentas'. Clique no ícone do gráfico para obter a 'visualização padrão' (em vez da 'Visualização SpreadTable', onde
apenas algumas colunas são visíveis).
Para este gatilho: 'ShortName'=MBU, 'Name'=MODIFY BEF U, 'Purpose' = preencher a data de modificação e
as colunas do usuário, 'Type' = Trg-Logic, 'Status'=Completed, 'Scope'=Public e 'Candidato'=Sim. Clique duas
vezes no bloco PL/SQL. Um 'Text Pad' aparecerá, no qual você deve digitar algum PL/SQL.

:new.modify data:=sysdate; :new.modify


usuário:=lower(usuário);

Posso definir outro gatilho que preencherá automaticamente as colunas CREATE DATE e CREATE USER,
bem como gerará o identificador inteiro exclusivo IDNUM na tabela para que quando um INSERT for
iniciado na tabela ALS ENTRY, o próximo IDNUM na sequência IDNUM SEQ seja gerado automaticamente.
As sequências definidas acima, IDNUM SEQ e IDNUMC SEQ, serão necessárias. Eu chamo esse gatilho de
IDNUM SEQ BEF I (nome abreviado ISBI). O bloco PL/SQL aqui é mais complexo:

declarar
número seq temporário (38);
começar
selecione idnum seq.nextval em temp seq de dual;
:new.idnum:=temp seq;
:nova.data de criação:=sysdate; :new.create
usuário:=lower(usuário);
fim;
Defino uma definição PL/SQL semelhante chamada ICSBI para o preenchimento de CREATE DATE, CREATE USER e
IDNUMC na tabela ALS ID (usando a sequência IDNUMC SEQ).
Para ativar os gatilhos, essas definições PL/SQL devem estar associadas às tabelas nas quais operam.
Na pasta 'Definição de modelo de servidor', abra a subpasta 'Definições de tabela'. Para cada uma das
pastas da sua tabela (como ALS ID), abra a pasta e destaque 'Triggers' (clique único) e clique no ícone 'verde
+'. Eu faço do nome do gatilho uma concatenação do nome abreviado da tabela com o nome abreviado do
gatilho com TRIG no final: AI MBU TRIG para o gatilho de modificação. Eu faço isso 'Completo' = Sim,
'Ativado' = Sim, 'Tempo' = Antes de acionar a instrução, 'Atualização' = Sim. Este gatilho preencherá MOD-
IFY DATE e MODIFY USER sempre que uma instrução UPDATE for executada na tabela ALS ID. Da mesma
forma, faço um gatilho chamado AE MBU TRIG para preencher MODIFY DATE e MODIFY USER sempre que
uma instrução UPDATE é executada na tabela ALS ENTRY.
Da mesma forma, faço gatilhos chamados AE ISBI TRIG e AI ICSBI TRIG usando as definições PL/SQL ISBI e
ICSBI para operar nas tabelas ALS ENTRY e ALS ID, respectivamente para preencher CREATE DATE e CREATE USER
e seus respectivos identificadores inteiros sempre que uma instrução INSERT for executado naquela mesa. Uma
observação: você não pode definir vários gatilhos para atuarem simultaneamente na mesma tabela.

11
3.2.5 Defina sua aplicação
No RON, em 'Database and Network Design' na pasta 'Databases (Oracle)', adicione um novo banco de
dados chamado D0OFDEV1 (ou D0ONDEV1 para online) se não estiver lá, clicando no ícone 'verde +'. Nesta
nova pasta ('D0OFDEV1'), adicione um 'User'=proprietário das tabelas (ALS OWNER). Abra esta nova pasta
(ALS OWNER). Abaixo dela: Abra a subpasta 'Schema Objects'.

• Destaque 'Implementações de tabela' e clique no ícone 'verde +' para adicionar todas as suas tabelas (ALS ENTRY e
ALS ID).

• Destaque 'Visualizar Implementações' e adicione todas as suas visualizações (ALS VIEW).

• Destaque 'Implementações de Sequência' e adicione quaisquer sequências que você definiu (IDNUM SEQ e
IDNUMC SEQ).

• Destaque 'Implementações PL/SQL” e adicione qualquer PL/SQL necessário para seus gatilhos (CBI, ISBI e
MBU).

Também em 'Database and Network Design'/ 'Databases (Oracle)'/ 'D0OFDEV1', abra a pasta 'Storage'.
Adicione os nomes dos seus tablespaces na pasta 'Tablespaces' (os nomes dos tablespaces são ALS DATA e
ALS IDX para o projeto de pesquisa).
Volte e execute novamente o DDT conforme descrito na Seção 3.1.8, mas agora, ao clicar em 'Configurações', você pode
escolher 'Banco de dados', 'Proprietário do banco de dados' e 'Definições de armazenamento padrão' na guia 'Banco de dados'.
Certifique-se de usar seu espaço de tabela DATA para suas tabelas e seu espaço de tabela IDX para seus índices.

3.2.6 Funções e contas d0db


As funções permitem que usuários específicos do banco de dados tenham acesso bem definido a cada um de seus
objetos (tabelas, sequências e visualizações). Consulte o grupo de banco de dados de suporte se precisar de ajuda para
avaliar o número de funções necessárias para seu aplicativo. O grupo d0db-support cria as funções para seu aplicativo
no banco de dados, cria quaisquer contas d0db especiais necessárias e associa cada função a um ou mais usuários d0db.
Envie-lhes um e-mail contendo o nome do seu aplicativo de banco de dados, suas funções e os usuários que
devem receber essas funções.
Aqui está uma tabela de funções e suas contas de banco de dados d0db associadas e como elas são usadas para o
projeto de pesquisa. Observe que as funções e as contas d0db que as utilizam não podem ter nomes idênticos.

Papel d0db objetos Propósito


conta(s) (privilégios)
COMO LIDO Gerber, Duflot, ENTRADA ALS (S) Esta função é usada pela interface de relatórios para relatar
barberis, diehl os resultados da pesquisa (somente leitura) aos membros do
Comitê da Lista de Autores D0 (nomeados aqui). Esta função
não terá privilégio INSERT, UPDATE ou DELETE.
COMO ATUALIZAÇÃO ATUALIZAÇÃO DE SAV ENTRADA DE ALS (I) Esta função está associada à conta d0db que é usada pela
ID ALS (SUI) interface de entrada da pesquisa para ser usada pela
IDNUM SEQ(S) colaboração para inserir suas respostas à pesquisa. Requer
IDNUMC SEQ(S) privilégio SELECT para ambas as sequências, pois o usuário
pode INSERT em ambas as tabelas. A interface será
executada a partir de uma área privada d0 no mundo D0, que
exige que os usuários tenham uma senha web d0.
COMO MESTRE galas (SUID) Recebo todos os privilégios: SELECT, UPDATE, INSERT e
DELETE

Não se esqueça de atribuir a si mesmo (sua conta d0db) algumas funções. O proprietário das tabelas (ALS OWNER) possui
automaticamente todos os privilégios, portanto não precisa ser incluído na lista acima. Mas os dados nunca devem ser inseridos,
modificados ou excluídos pelo proprietário das tabelas. A conta d0db do proprietário da tabela serve para criar o banco de dados
e fazer alterações nele, mas nunca para entrada de dados.
Uma vez que os Roles são criados no banco de dados pelo grupo DB Support, você precisa defini-los em
sua aplicação, associá-los aos objetos apropriados e definir quais privilégios aquele role tem para cada
objeto (S:Select, I:Insert, U: Atualizar, D:Excluir). Isso é feito em RON na seção 'Banco de dados e rede

12
Pasta de design. Na pasta 'Databases (Oracle)' abra a subpasta 'D0OFDEV1'. Abra a pasta ‘Funções’. Você verá uma
pasta de função 'Pública' (uma função atribuída por padrão a todos os aplicativos). Apenas deixe esta pasta como
está (você pode adicionar objetos aqui se for apropriado que os objetos sejam públicos para sua aplicação).

Cada aplicativo deve ter uma função de leitura. A função de leitura para o projeto de pesquisa é AS READ. Para
defini-lo, destaco ‘Funções’ e clico no ícone ‘verde +’. Eu nomeio a função como lida e clico em 'Salvar' ou 'Repetir
consulta a todos'. Abra a pasta 'AS READ' e destaque 'Database Object Privileges' e clique no ícone 'verde +'. Uma
lista de todas as tabelas, visualizações, sequências e scripts PL/SQL disponíveis é apresentada. Destaco a tabela
ALS ENTRY e clico em 'OK'. No painel 'Database Object Grant Properties' à direita, defino 'Select'=YES e todos os
outros privilégios=NO.
Uma segunda função chamada AS UPDATE permitirá que a conta d0db ALS UPDATE (o usuário da interface
web) envie uma pesquisa. Destaque 'Funções' e clique no ícone 'verde +'. Defino a função AS UPDATE e clico em
'Salvar' ou 'Repetir consulta a todos'. Em seguida, abro a pasta 'AS UPDATE', realço 'Database Object Privileges' e
clico no ícone 'verde +'. Eu adiciono a tabela ALS ENTRY com 'Insert'=YES e todos os outros privilégios=NO. Da
mesma forma, em 'Privilégios do objeto de banco de dados', adiciono o ID ALS da tabela com
'Select'='Update'='Insert'=YES, e todos os outros privilégios=NO.
O usuário da interface web (usando Role AS UPDATE) faz entradas em ambas as tabelas e, portanto, precisa
do privilégio 'Select' nas sequências dessas tabelas. Novamente, destaque 'Privilégios de objeto de banco de
dados' e clique no ícone 'verde +'. Escolha as sequências necessárias (neste exemplo IDNUM SEQ e IDNUMC SEQ)
e clique em 'OK'. Para essas sequências, conceda privilégios 'Select'=YES a todos os outros privilégios = NO.
Finalmente e da mesma forma, defino a função chamada AS MASTER para ter 'Select', 'Update', 'Insert' e 'Delete'=YES
para todas as tabelas e visualizações no projeto de pesquisa.
Clique no ícone 'Salvar' ou 'Repetir consulta a todos'.

3.2.7 Definições de armazenamento

Definições de armazenamento adequadas são um requisito para colocar seu banco de dados corretamente no ambiente de
desenvolvimento. Você precisa criar uma 'Definição de armazenamento' para cada tabela, chave primária e índice de chave
estrangeira no relatório. Sugere-se que você não faça definições de armazenamento até que seu design esteja estável. O DB
Support Group pode ajudá-lo a avaliar se você deve prosseguir com a criação das definições de armazenamento.
No RON, abra a pasta 'Definição de dados de referência'. Destaque 'Definições de armazenamento'. Nomeie suas definições
de armazenamento da mesma forma que os nomes de suas tabelas, chaves primárias e índices de chave estrangeira listados
para todas as suas tabelas na subpasta 'Definições de tabela' da pasta 'Definição de modelo de servidor' (você reconhecerá como
os nomes abreviados de suas tabelas são usados para compor os nomes). Tenho 5 definições de armazenamento para o projeto
de pesquisa: ALS ENTRIES, ALS IDS (observe o uso de nomes de tabelas no plural), AE PK, AI PK (PK significa Chave Primária) e AI
AE FK I (o Índice para a Chave Estrangeira entre as mesas).
Agora associe cada uma das definições de armazenamento que você fez ao objeto de mesmo nome em seu
banco de dados: No RON, na pasta 'Database and Network Design', abra a série de pastas 'Databases (Oracle)',
'D0OFDEV1', ' Usuários', 'ALS OWNER', 'Objetos de esquema', 'Implementações de tabela'.
Para cada tabela, destaque o nome de cada tabela (por exemplo, ALS ENTRIES). Se um 'Palate de propriedades
de implementação de tabela' não aparecer à direita, escolha 'Palate de propriedades' no menu 'Ferramentas' na
parte superior. No 'Property Palate', 'Table'=ALS ENTRIES, 'Complete'=YES, 'Scope'=Database, 'Tablespace'=ALS
DATA e 'Storage Definition'=ALS ENTRIES. Da mesma forma, associo a definição de armazenamento ALS IDS à
tabela ALS IDS.
Para chaves primárias, na pasta de cada nome de tabela (por exemplo, ALS ENTRIES), destaque 'User Object Index Storage' e
adicione a definição de armazenamento para a chave primária, fornecendo-lhe 'Table'=ALS ENTRIES, 'Primary key'=AE PK, 'Tipo de
índice'=Global, 'Tablespace'=ALS IDX e 'Definição de armazenamento''=AE PK. Da mesma forma, associo a definição de
armazenamento AI PK à sua chave primária AI PK. Observe que as definições de armazenamento de chave primária vão para o
espaço de tabela de índice (IDX) e não para o espaço de tabela DATA!
A tabela ALS IDS também possui um índice de chave estrangeira, portanto, na pasta dessa tabela (ALS IDS), destaco 'User
Object Index Storage' e adiciono a definição de armazenamento para o índice, fornecendo-lhe 'Table'=ALS IDS, 'Index'=AI AE FK I,
'Tipo de índice'=Global, 'Tablespace'=ALS IDX e 'Definição de armazenamento'=AI AE FK I. Observe que as definições de
armazenamento de índice de chave estrangeira vão para seu espaço de tabela de índice (IDX) e não para o espaço de tabela
DATA!
Clique no ícone 'Requery All'.

13
Agora, você precisa gerar um ‘Relatório de Repositório’: Em ‘Ferramentas’, selecione ‘Relatórios de Repositório’. Abra
a pasta 'Banco de dados e design de rede'. Destaque 'Tabela de banco de dados e estimativas de tamanho de índice',
escolha o nome do banco de dados (d0ofdev1), usuário do banco de dados (ALS OWNER), tamanho do bloco do banco de
dados (8192) e clique no ícone de luz verde. Uma tela de 'Visualizador' aparecerá após um pouco de espera. Se você
imprimir, sugiro que imprima em retrato, frente e verso e reduza para cerca de 90%, caso contrário, parte do documento
sairá da página.
Com o Relatório de Armazenamento em mãos, volte para a pasta ‘Definição de Dados de Referência’. Na subpasta 'Definição de
armazenamento', edite cada uma das definições de armazenamento destacando-as e adicionando 'Aumento percentual' (sempre = 0),
'Extensão inicial', 'Próxima extensão', 'Mínimo' e 'Extensões máximas' de acordo com o 'Parâmetros de armazenamento sugeridos' no
relatório de armazenamento. Você pode optar por arredondar as extensões para um número inteiro mais alto e conveniente.

Você precisará enviar o relatório de armazenamento ao grupo de suporte do banco de dados.

3.2.8 Verificações Finais:

Abra a pasta 'Definição de modelo de servidor', depois a pasta 'Definições de tabela' e, para cada um dos nomes de tabela, abra a
subpasta 'Colunas'. Verifique a ordem das colunas em cada tabela para que as colunas de chave primária fiquem no topo, as
colunas opcionais estejam na parte inferior e as colunas opcionais maiores e/ou com menor probabilidade de serem preenchidas
sejam as mais baixas. Isso economiza espaço e melhora o desempenho do banco de dados. Verifique também se há alguma
coluna em sua tabela que você não reconhece, o que deve ser relatado ao Grupo de Suporte do Banco de Dados.

Clique no ícone 'Requery All'. Você pode fechar o RON agora.

3.3 DE - Editor de Design


No painel frontal do Oracle Designer, escolha o ícone 'Design Editor'. Sempre que o 'Guia do Administrador de
Banco de Dados' aparecer, feche-o.

3.3.1 Gerar o DDL


No painel frontal 'Bem-vindo ao Design Editor', escolha 'Database Administration' e clique em OK (ou no Navigator,
escolha a aba 'DB Admin'). Na pasta com o nome do seu diagrama ER, abra a seguinte sequência de pastas aninhadas:
'D0OFDEV1' (use D0ONDEV1 para aplicativos on-line), 'Usuários', 'ALS OWNER' (este é o proprietário das tabelas do meu
relatório de pesquisa – o nome de o proprietário da sua tabela deve ser uma pasta aqui), 'Objetos de esquema', 'Tabela',
'Visualização' e 'Implementações de sequência'. Destaque todas as instâncias de implementação (neste caso, minhas
tabelas, visualizações e sequências) clicando com o botão esquerdo do mouse na parte superior e, em seguida, clicando
com o botão esquerdo do mouse na parte inferior. Em seguida, clique no símbolo 'Gerar DDL' (bloco amarelo com seta
preta na pilha de disco branca).
Uma janela 'Gerar banco de dados a partir do modelo de servidor' aparecerá.

• Na aba 'Objetos', clique na seta dupla para a direita para que todas as suas implementações sejam
destacadas no lado direito (rotulada 'Gerar').

• Na guia 'Destino', selecione 'Somente arquivos DDL' de 'Tipo'=Oracle8. Os arquivos DDL criados pelo
OD são gravados por padrão na unidade C: do PC em que você está trabalhando, no diretório orant/
BIN/. Os nomes de arquivo por padrão são cdsddl.*, onde * é um ou mais dos seguintes: con, grt, ind,
sql, syn, tab, trg e vw (extensões adicionais também podem ser produzidas). Eu nomeio os arquivos
do projeto de pesquisa 'File Prefix'=cdsddl auth para distingui-los de outros projetos de OD gravados
neste PC.

Clique no botão 'Iniciar'. Se houver erros, consulte o grupo de suporte do banco de dados se precisar de ajuda para
interpretá-los. Se não houver erros, você encontrará os arquivos DDL no diretório e com os nomes de arquivos
especificados. Você deve copiá-los para as máquinas Unix para executá-los.
Você pode fechar o Editor de Design agora e também o Painel Frontal do OD.

14
4 Criando o banco de dados
No D0ora1 (ou D0mino), crie a estrutura de diretórios que conterá seu banco de dados, dados e código de
interface. O diretório principal para a versão de desenvolvimento do projeto de pesquisa está em D0ora1 em ∼
gallas/auth1/.Este é meu diretório de trabalho para a versão de desenvolvimento.
Abaixo deste diretório, crio os seguintes subdiretórios, que organizam o código-fonte conforme descrito aqui.

cgi/ -Código-fonte python-cgi para a interface web (isso pode ser documentado em uma nota separada)

www/ -código-fonte html para a interface web (isso pode ser documentado em uma nota separada)

cortador/ -armazena scripts para gerar automaticamente os cortes do banco de dados (criação e alterações posteriores)
que podem ser feitas ao longo da história do projeto

dados/ -armazena quaisquer dados que possam precisar ser carregados no banco de dados para um corte específico

ddl/ -armazena o DDL (Linguagem de Definição de Banco de Dados) usado para definir as tabelas do banco de dados, etc., para o primeiro
corta e modifica as tabelas durante os cortes subsequentes.

documento/ -documentação da loja (este documento, por exemplo)

Esta estrutura também pode ser usada para arquivar esses arquivos em um pacote CVS (substituindo o diretório head
pelo nome do pacote CVS).
Para sua aplicação, solicite um nome de pacote CVS para armazenar todo o código (ou um pacote para definição de
banco de dados e pacotes adicionais para código de interface). O nome do pacote CVS para o projeto de pesquisa é
Banco de dados de pesquisa do autor. Copie os arquivos DDL do PC em seu diretório ddl/ de trabalho nas máquinas
unix. Coloque também uma cópia no diretório ddl do seu pacote CVS verificado e verifique esses arquivos no CVS.

Há um bug atualmente no Oracle Designer 6.0 que coloca o nome do proprietário da tabela nas
definições de sinônimos públicos no arquivo *.syn. É necessário remover isso do arquivo DDL antes de ir
para integração e produção (não parece ser um problema no desenvolvimento). Para corrigir isso, edite seu
* . syn, removendo todas as instâncias do nome do proprietário da tabela desse arquivo (incluindo o ponto). Por
exemplo, um dos meus sinônimos é criado com a instrução SQL:

CRIAR ID DE ALS DE SINÔNIMO PÚBLICO PARA IDS DE ALS OWNER.ALS

Eu mudo este comando para ser:

CRIAR ID DE ALS DE SINÔNIMO PÚBLICO PARA IDS DE ALS

Agora você pode executar o DDL no SQLPlus (SQLPlus é o interpretador online do Oracle). Em
D0ora1:

! vá até o diretório onde você colocou os arquivos DDL (*.sql...)


> cd auth1/ddl/
! configure o Oracle e entre no SQLPlus (faça login como proprietário das tabelas da sua aplicação)
> configurar o Oracle
> SQLPlus
! faça login como proprietário de suas tabelas (no meu caso, também proprietário)
! execute o script sql principal que executa todo o DDL (para projeto de pesquisa: cdsddl auth.sql)
SQL>@autenticação cdsddl
! o arquivo de log é gravado em cdsddl auth.lst. SQL>
comprometer-se;
SQL>saída
! observe o arquivo de log, procurando por erros:
> erro grep cdsddl auth.lst

15
Eventualmente, você precisará enviar uma cópia impressa do DDL ao Grupo de Suporte do Banco de Dados, um
requisito da revisão de código quando quiser sair do ambiente de desenvolvimento (para integração e produção).

Esta é a maneira mais simples de criar o banco de dados, mas eventualmente você precisará de um script para fazer
isso porque pode estar carregando dados. Ao executar um script, você e o grupo de suporte do banco de dados verão
tudo funcionando perfeitamente, o que permitirá que você passe pela integração e entre no ambiente de produção. Um
exemplo desse script é descrito na próxima seção.

5 scripts de corte
Um 'corte' de banco de dados é qualquer operação que altera a estrutura das tabelas de banco de dados de seu aplicativo,
incluindo a criação inicial do banco de dados. Como estou criando o banco de dados pela primeira vez, estou na versão cortada
v0 1. As alterações subsequentes no banco de dados após entrar em produção podem ser a versão v0 2 ou de acordo com
qualquer esquema de numeração que você escolher. Os cortes são executados a partir do diretório head, onde o Makefile
aponta para o diretório cutver/ que contém todos os scripts para fazer um 'corte' do banco de dados e o Makefile.def faz
algumas atribuições de variáveis de ambiente. No diretório cutver/, o Makefile aponta para v0 1 como o corte atual. Os arquivos
convert.* abaixo especificam quais arquivos DDL serão executados para o corte atual e também podem incluir a execução de
arquivos adicionais que manipulam dados existentes ou carregam novos dados.
Uma vez que todos os arquivos de script estejam no lugar, o banco de dados pode ser construído e carregado executando o conjunto
de scripts verificados diretamente do cvs com um único comando make (depois que as variáveis de ambiente apropriadas forem
definidas). A configuração que descobri que funciona é executar a seguinte sequência de comandos (seus resultados podem variar):

! Este procedimento executará o conjunto de scripts para transferir a versão v0 1 do banco


! de dados de pesquisa do Autor para a plataforma de desenvolvimento offline. Comece no
! diretório inicial, crie um subdiretório de lixo eletrônico e vá até lá
> lixo mkdir
> lixo de CD
! você deve estar no grupo de produtos
> produtos newgrp
! configure o d0cvs e finalize a compra do seu pacote
> configurar d0cvs
> cvs co Autor banco de dados de pesquisa
> banco de dados de pesquisa do autor do cd

! irritante, mas necessário, você precisará tornar seus scripts executáveis


> cortador de CD
> chmod +x converter.*
> disco v0 1
> chmod +x converter.* ! volte
para o diretório principal
> acima

> acima

! certifique-se de que essas variáveis de ambiente estejam definidas como d0ofdev1 , d0ofint1 ...
> ambiente|organizar

> echo $TWO TAREFA


> echo $ORACLE SID
! se suas variáveis de ambiente não estiverem definidas como d0ofdev1 , d0ofint1 ...
> setenv DUAS TAREFA d0ofdev1
> setenv ORACLE SID d0ofdev1
! faça isso SE você esqueceu de alterar o grupo para produtos antes de finalizar a compra
> chgrp -R produtos * ! mais uma
variável de ambiente
> setenv ALS DB DIR /junk/Banco de dados de pesquisa do autor
> make convert version=v0 1 user=als proprietário/'seu pw aqui'@d0ofdev1|camiseta dev1.lis

16
Verifique se há erros no arquivo de log gravado em dev1.lis. Seus scripts devem estar funcionando perfeitamente e sem
erros antes que você possa passar para a integração ou produção. Ao passar para integração ou produção, você
executará os mesmos scripts, substituindo ‘dev’ por ‘int’ ou ‘prd’, respectivamente.

6 Entrada de Dados
Há muitas maneiras de inserir dados nas tabelas do banco de dados. Os modos de entrada se enquadram em três categorias

1. Transferência de dados (cópia) de outro banco de dados Oracle.

2. SQLLoader - um utilitário para carregamento em massa de dados usando arquivos delimitados de forma plana.

3. Instruções SQL INSERT ou UPDATE.


O modo de entrada de dados que você deve usar depende muito da sua aplicação e de quem está inserindo seus dados.
Interfaces amigáveis, como interfaces web, podem ocultar o mecanismo real de inserção de dados do usuário
(geralmente feito por instruções INSERT ou UPDATE). As interfaces de nível superior também fornecem outra camada de
verificação de erros e restrições que melhora a integridade dos dados. Consulte o Grupo de Projetos de Banco de Dados
de Suporte para decidir sobre o melhor modo de entrada de dados para seu aplicativo.
Uma observação sobre a entrada de dados: os dados nunca devem ser inseridos pelo proprietário das tabelas. Esta conta
d0db serve para criar o banco de dados e fazer alterações nele, mas nunca para entrada de dados.

7 MIS WEB
MISWEB é um conjunto de ferramentas que facilita a consulta dinâmica de tabelas de banco de dados Oracle a partir de uma
página da web. A documentação do MISWEB pode ser encontrada em http://miscomp.fnal.gov/misweb/.
Para usar o MISWEB, você só precisa escrever HTML básico em uma página web. Ao incluir variáveis e tags SQL especiais,
sua página funcionará como um iniciador de consulta.
Um exemplo de aplicação MISWEB para o projeto de pesquisa de autores pode ser encontrado em http://
wwwd0.fnal.gov/gallas/d0 private/als/als misweb.html. O mesmo html pode ser encontrado no subdiretório www/
do pacote CVS Author Survey Database.

8 Colocando seu banco de dados online


As etapas neste documento descrevem muitos dos procedimentos para fornecer ao seu banco de dados os recursos necessários.
Você passará por essas etapas diversas vezes à medida que o design do seu banco de dados cresce e toma forma. Infelizmente,
este documento não enfatiza o processo de design o suficiente, então devo enfatizar novamente que o grupo de suporte ao
banco de dados deve ser consultado com a maior frequência possível para que você possa explorar totalmente os recursos que
um banco de dados Oracle pode fornecer. Um design deficiente simplesmente não será implementado.
Depois de ter o design final e a implementação na plataforma de desenvolvimento, você trará uma cópia do seu Diagrama
ER, seu DDL e seu relatório de armazenamento (gerado pelo OD) para o grupo de suporte do banco de dados para uma revisão
de código. O atual processo de revisão está descrito em
http://fncduh.fnal.gov:80/supportdb/working/run2 standards.html e http://
fncduh.fnal.gov:80/supportdb/working/designer report checklist.html .

Referências
[1] Elizabeth Gallas, “Lab8 Board Production Database”, nota D0 710, 7 de junho de 1988. Este era um banco de dados
relacional construído usando RDB, um produto de banco de dados relacional nos sistemas VAX/VMS. O diagrama
ER utiliza símbolos diferentes, mas os conceitos de relacionamento são os mesmos. Outra diferença neste
diagrama (do diagrama OD ER) é que apenas as chaves primária e estrangeira são mostradas nas tabelas para
enfatizar as colunas que são compartilhadas (as colunas não-chave são listadas separadamente). Há uma diferença
no idioma também. Tabelas (ou Entidades) são chamadas de Relações aqui. Colunas (atributos) são chamadas de
campos neste documento.

17

Você também pode gostar