Como criar o bd baseado nesta classe

9 respostas
d34d_d3v1l

O Vinny tava me ajudando em um topico anterior, mas continuo confuso.. tenho a seguinte classe
que controla os produtos adicionados a mesa...

public class Mesa {

    Produto[] prod = new Produto[10000];
    Produto aux;
    private double total;
    private int i,j,count=0;
    private int numero_Mesa;

    public Mesa(int num){
        numero_Mesa=num;
    }

    public void zerarMesa(){
        this.prod = new Produto[10000];
        this.aux = null;
        this.total = 0;
        this.count = 0;


    }
    public int getNum(){
        return numero_Mesa;
    }
    public void addProd(Produto p){
        prod[count] = p;
        count++;
    }

    public void retProd(Produto p){
        boolean achou = false;


        for(i=0; prod[i] != null && achou == false; i++){
            if(prod[i].getNome().equals(p.getNome())){
                achou = true;
            }
        }


        if (achou == true && i != 0){
            for(j=i;prod[j+1] != null;j++ ){
                aux = prod[j+1];
                prod[j] = aux;
            }
        }

        if(achou == true){
             count--;
        }
    }

    public double calcTot(){
        total = 0;
        for(i=0;i < count;i++){
            total+= prod[i].getPreco();
        }

        return total;
    }

    public Produto[] getLista(){
        return prod;
    }


}

Como foi notado, tudo está baseado no vetor Produtos prod[] dentro de cada objeto de mesa... Mas quando eu transformar tudo isso em tabelas do meu banco, como vou gerenciar ?

9 Respostas

drsmachado
Banco de dados tem algumas regras, chamadas normalizações. Estas regras definem, por exemplo, quais dados serão inseridos em uma tabela e quais devem ser inseridos em outra, que tipos de relacionamento será possível e tudo mais.

Bem, não é uma boa prática pensar em um banco de dados a partir de uma classe, afinal, são paradigmas diferentes (classes são OO e tabelas de banco de dados comuns, são estruturadas).

Sugiro:

1 - Faça uma lista com todos os atributos e dados que precisa no banco de dados.

2 - Separe por relevância (produto, por exemplo, qual é o atributo que pode ser referenciado como PK no banco de dados - este deve ser único)

3 - A partir daí, identifique os atributos cujo acesso poderá ser feito apenas a partir da PK, no banco de dados (preço, por exemplo, embora haja produtos com preços iguais, o preço de um produto somente pode ser conhecido através da identificação do mesmo, por meio do código respectivo)

4 - Os atributos que possam ser acessados independente da PK devem ser colocados em uma tabela separada e, a relação das duas (produto e pedido, por exemplo) deve ser feita respeitando o tipo de relacionamento, a saber:

a - 1 : 1 - Relacionamento entre duas tabelas cuja possibilidade é de existir 1 registro na tabela A para cada registro da tabela B. Referenciados por FK diretamente;

b - 1 : n - Relacionamento em que cada registro da tabela A pode ser associado a mais de 1 (ou n) na tabela B. Neste caso, a tabela A conterá uma coluna sendo a FK da tabela B;

c - n : m - Quando cada registro da tabela A pode ser referenciado por mais de 1 da B e vice-versa. É criada uma classe de relacionamento para ajustar, ficando 1 : n : 1, ou seja, cada registro de A e B tem N correspondentes em AB (tabela associativa);
javer

Quais são os requisitos desse sistema? (o que ele tem que fazer exatamente).

d34d_d3v1l

Esse sistema é este:

http://dl.dropbox.com/u/15625458/BarButeco.jar

abrazz

CintiaDR

d34d_d3v1l,

Deixa eu te fazer uma pergunta, o BD já existe? Se não, se você puder criar o banco a partir do zero, te recomendo essa propriedade no seu hibernate.cfg ou persistence.xml:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Essa opção cria o banco ‘sozinha’.

d34d_d3v1l

Cintia,

obrigado pela resposta…
Mas eu não queria usar hibernate,
quero usar o HSQLDB

obrigado

CintiaDR

HSQLDB é o banco, correto? Bom, se você fosse utilizar HSQLDB ou Oracle ou MySQL ou SQL-Server tanto faz.
Usando JDBC ou Hibernate/JPA, é praticamente igual e não interessa muito o banco.

Se for JDBC, vc cria o banco como vc estiver afim rs.
Se for Hibernate/JPA, tem que ter uma correspondência com o xml ou anotações.

d34d_d3v1l

CintiaDR:
HSQLDB é o banco, correto? Bom, se você fosse utilizar HSQLDB ou Oracle ou MySQL ou SQL-Server tanto faz.
Usando JDBC ou Hibernate/JPA, é praticamente igual e não interessa muito o banco.

Se for JDBC, vc cria o banco como vc estiver afim rs.
Se for Hibernate/JPA, tem que ter uma correspondência com o xml ou anotações.

minha dúvida é como "modelar’ o banco baseado nessa classe… Usando mysql…

como seria o create table etc…

entendeu?
obrigado

CintiaDR
d34d_d3v1l:
minha dúvida é como "modelar' o banco baseado nessa classe... Usando mysql... como seria o create table etc...

entendeu?
obrigado

create table mesa ( id, campos bonitinhos);

create table produto ( id, campos bonitinhos, mesa_id);

Isso, não? (Obviamente não é o sql pronto - mesa_id tem que ser FK)

d34d_d3v1l

eu sei usar a linha de comando…

mas é pq minha classe Mesa, tem uma lista de produtos, que são objetos…
por isso eu perguntei: como criar o bd baseado nesta classe
obrigado

Criado 12 de fevereiro de 2011
Ultima resposta 14 de fev. de 2011
Respostas 9
Participantes 4