Cursos / Informática para Internet / Banco de dados / Aula

arrow_back Aula 12 - Linguagem SQL – Alteração da estrutura de tabelas e ambientes de múltiplas tabelas

Ambientes multitabelas

A natureza do projeto de um banco de dados relacional significa que, muitas vezes, dispomos de dados relacionados que são armazenados em tabelas diferentes. Até agora, trabalhamos com tabelas não relacionadas, chegou a hora de aprendermos a trabalhar em banco de dados com várias tabelas relacionadas entre si.

Para realizarmos os nossos estudos em um banco de dados multitabelas, vamos implementar um novo banco de dados que representa um sistema de venda de ingressos para filmes em uma cadeia de cinemas. Nesse banco, temos as seguintes tabelas:

  • Cinema (codigo_Cinema [chave primária], nome, sala, capacidade, cidade);
  • Filmes (codigo_Filme [chave primária], titulo, genero, censura);
  • Sessao (codigo_Sessao [chave primária], codigo_Filme [chave estrangeira], codigo_Cinema [chave estrangeira], dataHora, preco);
  • Clientes (codigo_Clientes [chave primária], nome, CPF, sexo, dataNascimento);
  • Compras (codigo_Compra [chave primária], codigo_Clientes [chave estrangeira], codigo_Sessao [chave estrangeira], quantidadeInteira, quantidadeMeia, formaPagamento [dinheiro, crédito ou débito]).

Vamos aproveitar a oportunidade para revisar os conceitos aprendidos?

Inicialmente, devemos criar o banco de dados chamado cineOnline no qual posteriormente vamos criar nossas tabelas. Para criarmos o banco de dados chamado cineOnline, digitamos o comando a seguir:

O passo seguinte é dizer ao sistema que você quer utilizar o banco de dados cineOnline, através do comando:

A seguir, podemos criar as nossas tabelas. Observe, que além de definir os atributos e seus tipos é necessário, neste projeto, identificar os atributos que serão chaves primárias e chaves estrangeiras. Mas, como definir um atributo como sendo chave primária ou como chave estrangeira?

A especificação de uma chave primária de uma tabela tem sintaxe bem simples:

Para entendermos melhor a utilização do comando CREATE TABLE com a restrição PRIMARY KEY, analise o seguinte exemplo de criação da tabela cinema no nosso banco de dados cineOnline.

Nessa tabela, o atributo cinema_codigo foi definido como sendo uma chave primária. Observe que todos os atributos da tabela cinema foram definidos com a restrição NOT NULL, que especifica que essas colunas não podem ser deixadas em branco. Essa restrição é especificamente útil para o atributo cinema_codigo, visto que se a chave primária contém um valor NULL, ou nenhum valor, não se pode garantir que ele (atributo) identificará de forma única cada linha da tabela. O MySQL, como a maioria dos SGBDs, implicitamente já gerenciam as colunas de chave primária como NOT NULL, não sendo obrigatório explicitamente identificar o campo com este atributo.

A criação de uma chave estrangeira tem procedimento similar à criação de uma chave primária. A especificação formal de uma chave estrangeira possui a seguinte sintaxe:

A linha REFERENCE (nome_da_tabela_origem nome_da_chave_primaria_na_tabela_origem) especifica de onde a chave estrangeira veio e como ela é chamada na tabela de origem.

Agora, estamos aptos a criar as tabelas filmes, sessão, clientes e compras do nosso banco de dados de vendas de ingressos, no cineOnline. Examine com cuidado e não deixe de praticar em seu banco de dados. Lembre-se de que a prática leva à perfeição!

Criação da tabela filmes:

Nessa tabela, o atributo fil_censura foi declarado como tendo as restrições NOT NULL e DEFAULT ‘Livre’. O valor ‘Livre’ é automaticamente atribuído à coluna fil_censura cada vez que um registro é inserido sem que nenhum valor seja informado.

Criação da tabela sessao:

Observe que o atributo ses_codcinema foi definido como uma chave estrangeira, ele faz referência ao atributo cinema_codigo da tabela cinema, linha de baixo.

A criação do banco de dados cineOnline e das tabelas cinema, filmes e sessao utilizando os comandos CREATE DATABASE, USE e CREATE TABLE estão ilustradas na Figura 6.

Tela do <span class='italico'>My</span>SQL após os comandos CREATE DATABASE, USE e CREATE TABLE.

Versão 5.3 - Todos os Direitos reservados