Ajuda

3 respostas
D

Galera, estou fazendo um comercio eletronico, mais ou menos como o submarino…no meu sistema eu quero que busque na categoria livros por isbn, autor, editora e nome do livro, na categoria cds por artista, album e nome do cd, na categoria dvds por ator, diretor, distribuidora, nome do filme, nome original do filme…blz…mas ate agora, estou com muitas tabelas…gostaria de saber se alguem tem uma ideia d como sao as tabelas que o submarino deve ter…ow se alguem sabe como otimizar essas minhas tabelas…ow se n tem problema eu ter muitas tabelas assim…Gostaria da opiniao de vcs…de como vcs fariam isso!!!

Categorias

CREATE TABLE CATEGORIAS (
    COD_CATEGORIA   INTEGER NOT NULL,
    NOME_CATEGORIA  VARCHAR(30)
);

Secoes

CREATE TABLE SECOES (
    COD_SECAO      INTEGER NOT NULL,
    NOME_SECAO     VARCHAR(50),
    COD_CATEGORIA  INTEGER NOT NULL
);

Livros

CREATE TABLE AUTOR (
    COD_AUTOR   INTEGER NOT NULL,
    NOME_AUTOR  VARCHAR(40)
);

CREATE TABLE AUTOR_LIVROS (
    COD_AUTOR   INTEGER NOT NULL,
    ISBN_LIVRO  VARCHAR(10)
);
CREATE TABLE EDITORA (
    COD_EDITORA   INTEGER NOT NULL,
    NOME_EDITORA  VARCHAR(30)
);
CREATE TABLE LIVROS (
    ISBN_LIVRO         VARCHAR(10) NOT NULL,
    TITULO_LIVRO       VARCHAR(60),
    NUM_EDICAO_LIVRO   INTEGER,
    ANO_LIVRO          INTEGER,
    COD_EDITORA        INTEGER,
    ACABAMENTO_LIVRO   VARCHAR(15),
    PRECO_LIVRO        FLOAT,
    NUM_PAGINA_LIVRO   INTEGER,
    TOT_PARCELA_LIVRO  INTEGER,
    COD_SECAO          INTEGER,
    LANCAMENTO         CHAR(1)
);

Cds

CREATE TABLE GRAVADORA (
    COD_GRAVADORA   INTEGER NOT NULL,
    NOME_GRAVADORA  VARCHAR(40)
);

CREATE TABLE GRAVADORA_CDS (
    COD_GRAVADORA  INTEGER NOT NULL,
    COD_CD         INTEGER NOT NULL
);
CREATE TABLE CDS (
    COD_CD          VARCHAR(10) NOT NULL,
    TITULO_CD       VARCHAR(40),
    ANO_CD          INTEGER,
    PRECO_CD        FLOAT,
    TOT_PARCELA_CD  INTEGER,
    COD_SECAO       INTEGER NOT NULL, 
    LANCAMENTO      CHAR(1)
);
CREATE TABLE ARTISTA (
    COD_ARTISTA   INTEGER NOT NULL,
    NOME_ARTISTA  VARCHAR(40)
);

CREATE TABLE ARTISTA_CDS (
    COD_ARTISTA  INTEGER NOT NULL,
    COD_CD       INTEGER NOT NULL
);

Dvds

CREATE TABLE ATOR (
    COD_ATOR   INTEGER NOT NULL,
    NOME_ATOR  VARCHAR(40)
);

CREATE TABLE ATOR_DVDS (
    COD_ATOR  INTEGER,
    COD_DVD   INTEGER
);
CREATE TABLE DIRETOR (
    COD_DIRETOR   INTEGER NOT NULL,
    NOME_DIRETOR  VARCHAR(40)
);

CREATE TABLE DIRETOR_DVDS (
    COD_DIRETOR  INTEGER,
    COD_DVD      INTEGER
);

CREATE TABLE DISTRIBUIDORA (
    COD_DISTRIBUIDORA   INTEGER NOT NULL,
    NOME_DISTRIBUIDORA  VARCHAR(20)
);

CREATE TABLE DVDS (
    COD_DVD            INTEGER NOT NULL,
    TITULO_DVD         VARCHAR(40),
    TITULO_ORIGINAL    VARCHAR(40),
    ANO_DVD            INTEGER,
    COD_DISTRIBUIDORA  INTEGER,
    PRECO_DVD          FLOAT, 
    DURACAO_DVD        INTEGER,
    COR_DVD            VARCHAR(20),
    LEGENDA_DVD        VARCHAR(50),
    CENSURA_DVD        VARCHAR(10),
    TOT_PARCELA_DVD    INTEGER,
    COD_SECAO          INTEGER,
    LANCAMENTO         CHAR(1)
);

3 Respostas

A

A modelagem me parece bem coerente, só tem umas observações:

  • A finalidade da tabela AUTOR_LIVROS é possibilitar mais de um autor para um livro? Se for isto esta tabela faz sentido;

  • Não entendi a idéia por trás da tabela GRAVADORA_CDS. Se um CD só pode ser gravado por uma única gravadora, então você poderia por um campo COD_GRAVADORA na tabela CDS e isto já resolveria o caso. Manter a tabela ARTISTA_CDS faz sentido se a intenção for a mesma que na tabela AUTOR_LIVROS;

  • Pense um pouco mais na parte de DVDs. Uma tabela só para Atores e outra só para Diretores vai fazer você ter que repetir o mesmo cara nas duas tabelas - pense no Mel Gibson em “Coração Valente”. Talvez você pudesse até aproveitar a tabela ARTISTAS, olha só: o Seu Jorge é cantor (é isso aí…) e foi ator principal no filme “Cidade de Deus”… Cria uma tabela pra papéis - Ator Principal, Ator Coadjuvante, Diretor, etc… Aí cria uma tabela ELENCO e nela você põe o código do artista, o código do papel e o código do filme.

D

Eu me deparei com o cd do jota quest…que é gravado pela Sony & BMG…
Por isso que eu criei essa tabela…mas o que vc achou…por enquanto so tenho livros, cds e dvds…será q n tem problema meu sistema ficar com umas 30 tabelas?

E

Como o ADEMILTON a modelagem parece bastante coerente, e concordo com ele também quando ele fala sobre a parte dos DVDs, poderia dar uma ajeitada nisso aí pra melhorar. Um sistema grande tem várias tabelas mesmo, não tem problema n. É bom você utilizar um programa pra fazer a modelagem porque a medida que vai crescendo o número de tabelas vai ficando difícil de memorizar os relacionamentos, com a modelagem ajuda (e muito). E outra coisa, quanto mais específico você for, mais tabelas você vai ter que criar, então isso é normal.

Criado 12 de setembro de 2006
Ultima resposta 15 de set. de 2006
Respostas 3
Participantes 3