Jump to content

EDIT: Dúvidas em MySQL


Nuno_Martins

Recommended Posts

Obrigado bruno1234, foi uma boa ajuda  😉

Entretanto comecei a fazer uma BD. Esta BD tem o objectivo de inserir todos os livros que tenho cá em casa. É coisa simples (penso eu). Decidi dividir a coisa em duas tabelas, uma para os livros de informática, outra para os livros de literatura.

Tabela de livros de informática:

CREATE TABLE livros_inf
(
inf_id TINYINT AUTO_INCREMENT PRIMARY KEY,
inf_titulo VARCHAR(50) NOT NULL,
inf_categoria VARCHAR(20) NOT NULL,
inf_autor VARCHAR(50) NOT NULL,
inf_coleccao VARCHAR(20),
inf_edicao TINYINT,
inf_ano YEAR NOT NULL,
inf_isbn VARCHAR(20) NOT NULL UNIQUE,
inf_n_paginas INT NOT NULL,
inf_tipo_capa VARCHAR(15) NOT NULL,
inf_descricao TEXT
);

Tabela de livros de literatura:

CREATE TABLE livros_lit
(
lit_id TINYINT PRIMARY KEY AUTO_INCREMENT,
lit_titulo VARCHAR(50) NOT NULL,
lit_categoria VARCHAR(20) NOT NULL,
lit_autor VARCHAR(50) NOT NULL,
lit_coleccao VARCHAR(20),
lit_edicao TINYINT,
lit_ano YEAR NOT NULL,
lit_isbn VARCHAR(20) NOT NULL UNIQUE,
lit_n_paginas INT NOT NULL,
lit_tipo_capa VARCHAR(15) NOT NULL,
lit_descricao TEXT
);

Ainda só fiz um insert:

INSERT INTO livros_inf (inf_titulo, inf_categoria, inf_autor, inf_coleccao, inf_edicao, inf_ano, inf_isbn, 
inf_n_paginas, inf_tipo_capa)
VALUES ('LINUX', 'Sistemas Operativos', 'Fernando Pereira', 'Curso Completo', 5, '2005', '978-972-722-489-0', 
611, 'Capa Mole');

1 - Gostava que no geral comentassem e criticassem as tabelas;

2 - Como podem ver nesse insert eu preenchi todos os campos à excepção do inf_descricao, como é que eu agora posso editar de modo a só preencher este que falta?;

3 - No tipo YEAR quando se insere valores usa-se plicas ou não?

4 - Andei a pesquisar mas fiquei sem entender na mesma. Qual é a diferença entre o TEXT e o BLOB? Ou melhor, para este caso qual se adequa mais? (pretendo adicionar aquelas descrições que vêm na capa de trás dos livros)

Link to comment
Share on other sites

1- Quanto às tabelas, eu n criava 2 em separado. Criava uma tabela livros com uma coluna q era uma chave estrangeira para uma tabela de tipos de livros.

Nessa tabela de tipos de livros tinha 2 campos: PK_Id, Descricao.

2- Podes fazer um update.

update tabela set campo = 'novo valor' where id=numero

3- Em MySql n tenho a certeza, mas é capaz de aceitar das 2 maneiras, é uma questão de experimentares.

4- Texto é apenas texto, BLOB é formato binário. Para o caso da descrição dos livros até podes usar varchar com um limite conhecido (5000 ou 6000, depende do tamanho das descrições). Assim controlas melhor a dimensão da coluna.

Caso precises de ter mm uma dimensão maior, então podes usar texto.

O BLOB poderias utilizar se tiveres a pensar ter quantidades de texto enormes, e nesse caso utilizavas compressão, e guardavas os bytes resultantes.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

A tabela Livros ficava:

        id TINYINT PRIMARY KEY AUTO_INCREMENT,

        tipo_id TINYINT,

        titulo VARCHAR(50) NOT NULL,

        categoria VARCHAR(20) NOT NULL,

        autor VARCHAR(50) NOT NULL,

        coleccao VARCHAR(20),

        edicao TINYINT,

        ano YEAR NOT NULL,

        isbn VARCHAR(20) NOT NULL UNIQUE,

        n_paginas INT NOT NULL,

        tipo_capa VARCHAR(15) NOT NULL,

        descricao TEXT

A tabela tipos de livro ficava:

tipo_id tinyint PK

descricao varchar(20)

depois relacionavas o tipo_id como chave estrangeira da 1ª tabela.

Só uma obversão: O tinyint vai até 255 pode ser um range insuficiente para a quantidade de livros q tens.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

  • 2 weeks later...

Olá, peço desculpa por só agora poder vir dar algum feedback...

Muito sinceramente não consigo entender a situação que propuseste. Não percebo bem o que são as chaves estrangeiras, ou melhor, não percebo qual iria ser a sua funcionalidade neste caso.

Se pudesses esclarecer um pouco melhor... ou até mesmo dando um exemplo prático agradecia.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.