// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Criando uma Aplicação Orientada pelo Banco de Dados com o PHP
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Criando uma Aplicação Orientada pelo Banco de Dados com o PHP - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Criando uma Aplicação Orientada pelo Banco de Dados com o PHP

= Lição 1b: Criando Tabelas do Banco de Dados Oracle
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Lição 1b: Criando Tabelas do Banco de Dados Oracle - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Lição 1b: Criando Tabelas do Banco de Dados Oracle



1. link:wish-list-tutorial-main-page.html[+Criando uma Aplicação CRUD com PHP - Página Principal+]
2. 
Criando o Banco de Dados

1. link:wish-list-lesson1.html[+Criando um Banco de Dados MySQL+]
2. 
*=> Criando Tabelas do Banco de Dados Oracle*

3. link:wish-list-lesson2.html[+Projetando a Aplicação. Lendo do Banco de Dados+]
4. link:wish-list-lesson3.html[+Criando um Novo Usuário da Aplicação+]
5. link:wish-list-lesson4.html[+Otimizando o Código+]
6. link:wish-list-lesson5.html[+Adicionando Segurança. Implementando o Log-in de Usuário da Aplicação+]
7. link:wish-list-lesson6.html[+Adicionando um Novo Desejo ao Banco de Dados+]
8. link:wish-list-lesson7.html[+Atualizando e Deletando Entradas no Banco de Dados+]
9. link:wish-list-lesson8.html[+Melhorando a Aparência da Aplicação Usando a Tecnologia CSS+]
10. link:wish-list-lesson9.html[+Implantando a Aplicação em um Servidor Web Remoto+]

image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]

Esta lição descreve a última etapa preliminar no desenvolvimento da aplicação da Lista de Desejos: a criação de um banco de dados de amostra com dados de teste. Para concluir as etapas deste tutorial, você precisará de um banco de dados para armazenar os dados dos wishers. Com o NetBeans IDE, você pode realizar todas essas atividades usando a interface do IDE. 
Antes de começar, veja os requisitos do tutorial descritos em link:wish-list-tutorial-main-page.html[+Criando uma Aplicação CRUD com PHP - Página Principal+].

O documento atual é uma parte do tutorial Criando uma Aplicação CRUD no NetBeans IDE para PHP.



== Criando o Usuário do Banco de Dados

Nesse procedimento, primeiro você cria um usuário e, em seguida, cria as tabelas como aquele usuário.

Você pode criar um usuário com as ferramentas do Oracle ou conetando o NetBeans IDE ao banco de dados e usando o editor SQL do IDE. O NetBeans 7.0, atualmente disponível apenas como buids beta ou de desenvolvimento, fornece conexão aprimorada a bancos de dados Oracle. Para saber como conectar o NetBeans IDE ao Banco de Dados Oracle e como criar um usuário naquele banco de dados, consulte o tutorial link:../ide/oracle-db.html[+Conectando-se a um Banco de Dados Oracle+].

Usando a ferramenta de sua preferência, crie o seguinte usuário:

|===
|Nome do Usuário |phpuser 

|Password |phpuserpw 

|Privilégios do Sistema |CREATE TABLE 

|CREATE VIEW 

|CREATE SEQUENCE 

|CREATE TRIGGER 

|Atribuições (Banco de Dados Oracle 10.x) |CONNECT 

|RESOURCE 
|===

Segue um exemplo de conjunto de comandos SQL para criar esst usuário. Esses comandos presumem que o banco de dados tem os espaços de tabela USERS e TEMP.


[source,java]
----

drop user phpuser cascade;create user phpuser identified by phpuserpw;grant connect, resource to phpuser;alter user phpuser default tablespace users temporary tablespace temp account unlock; 
----


== Criando a Estrutura do Banco de Dados de Amostra

Para organizar e armazenar todos os dados necessários, você precisa de duas tabelas:

* Uma tabela de wishers para armazenar nomes e senhas de usuários registrados
* Uma tabela de desejos para armazenar descrições de desejos

image::images/wishlist-db.png[]

A tabela de wishers contém três campos:

1. id - a identificação exclusiva de um wisher. Este campo é usado como a Chave Primária
2. nome
3. senha

A tabela de desejos contém quatro campos:

1. id - a identificação exclusiva de um desejo. O campo é usado como a Chave Primária
2. wisher_id - a identificação do wisher a quem o desejo pertence. O campo é usado como a Chave Estrangeira.
3. descrição
4. due_date - a data para a qual o desejo foi solicitado

As tabelas são relacionadas por meio do wisher ID. Todos os campos são obrigatórios, exceto due_date em desejos.


== Criando o Esquema do Banco de Dados Oracle

1. Faça log-in no banco de dados como o usuário que você criou.

Se estiver se conectando por meio do NetBeans IDE, crie uma conexão com o nome e a senha do novo usuário. Assegure-se de selecionar o esquema com o mesmo nome que o do usuário. (Consulte a seção link:../ide/oracle-db.html#connect[+Estabelecendo uma Conexão com o Banco de Dados Oracle+] do tutorial Conectando-se a um Banco de Dados Oracle.)

2. Para criar a tabela wishers, execute a seguinte consulta SQL:

[source,java]
----

create table wishers (id number not null,name varchar2(50) unique not null,password varchar2(50) not null,constraint wishers_pk primary key(id));
----
3. Para criar a tabela wishes, execute a consulta SQL a seguir. Observe que você cria uma chave estrangeira que associa wishes com um wisher.

[source,java]
----

create table wishes (id number not null,wisher_id number not null,description varchar2(255) not null,due_date date,constraint wishes_pk primary key(id),constraint wishes_fk1 foreign key(wisher_id) references wishers(id));
----
4. Verifique se as novas tabelas são adicionadas no banco de dados. Se você estiver usando o NetBeans IDE para se conetar ao banco de dados, acesse a janela Serviços do nó de conexão jdbc:oracle:thin:@localhost:1521:XE [phpuser on PHPUSER]. As novas tabelas serão listadas no nó Tabelas. (Se elas não aparecerem, clique com o botão direito do mouse na conexão e selecione Atualizar.) 
image::images/tables-in-services-window.png[]

Observação: Você pode fazer download de um conjunto de comandos SQL para criar as tabelas do Banco de Dados Oracle link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-Oracle.zip[+aqui+].


== Adicionando Sequências e triggers para Incrementar os Valores de ID

Com o Banco de Dados Oracle, você deve especificar uma sequência para incrementar um valor. Para que o valor seja incrementado quando um novo membro é adicionado a uma tabela, você adiciona um trigger.

1. Para adicionar uma sequência na tabela wishers, execute o seguinte comando SQL:

[source,java]
----

create sequence wishers_id_seq start with 1 increment by 1;
----
2. Para acionar a sequência na coluna ID da tabela wishers quando você adiciona um novo wisher, execute o seguinte comando SQL:

[source,java]
----

create or replace trigger wishers_insertbefore insert on wishersfor each rowbeginselect wishers_id_seq.nextval into :new.id from dual;end;/
----
3. Adicione uma sequência à tabela wishes.

[source,java]
----

create sequence wishes_id_seq start with 1 increment by 1;
----
4. Adicione um trigger para executar a sequência na coluna ID da tabela wishes quando você adiciona um novo wish.

[source,java]
----

create or replace trigger wishes_insertbefore insert on wishesfor each rowbeginselect wishes_id_seq.nextval into :new.id from dual;end;/
----

Observação: Você pode fazer download de um conjunto de comandos SQL para criar as tabelas do Banco de Dados Oracle, incluindo sequências e triggers, link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-Oracle.zip[+aqui+].


== Inserindo os Dados de Teste

Para testar a aplicação, você precisará de alguns dados no banco de dados. O exemplo abaixo mostra como adicionar dois wishers e quatro desejos.

1. Adicione um wisher chamado Tom com a senha "tomcat".

[source,java]
----

insert into wishers (name, password) values ('Tom','tomcat');
----
2. Adicione um wisher chamado Jerry com a senha "jerrymouse".

[source,java]
----

insert into wishers (name, password) values ('Jerry', 'jerrymouse');commit;
----
3. Adicione os wishes.

[source,java]
----

insert into wishes (wisher_id, description, due_date) values (1, 'Sausage', to_date('2008-04-01', 'YYYY-MM-DD'));insert into wishes (wisher_id, description) values (1, 'Icecream');insert into wishes (wisher_id, description, due_date) values (2, 'Cheese', to_date('2008-05-01', 'YYYY-MM-DD'));insert into wishes (wisher_id, description)values (2, 'Candle');commit;
----
4. Verifique se você adicionou dados de teste. Se você estiver usando o NetBeans IDE para exibir os dados de teste, clique com o botão direito do mouse na tabela relevante e, no menu de contexto, selecione Exibir Dados. 
image::images/view-test-data.png[]

Para obter um entendimento geral dos princípios de bancos de dados e padrões de design, consulte o tutorial: link:http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1[+http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1+].

Para obter mais informações sobre a sintaxe das instruções  ``CREATE TABLE``  do Oracle, consulte link:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm[+http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm+].

Observação: Você pode fazer download de um conjunto de comandos SQL para criar as tabelas do Banco de Dados Oracle link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-Oracle.zip[+aqui+].


== Próxima Etapa

link:wish-list-lesson2.html[+Próxima Lição >>+]

link:wish-list-tutorial-main-page.html[+Voltar à página principal do Tutorial+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%201:%20Create%20Oracle%20Database%20Tables[+Envie-nos Seu Feedback+]


Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes das funcionalidades de desenvolvimento PHP do NetBeans IDE, link:../../../community/lists/top.html[+junte-se à lista de correspondência users@php.netbeans.org+].

link:../../trails/php.html[+Voltar à Trilha de Aprendizado PHP+]

