DDL - Linguagem de Definição de Dados.

Banco de Dados: Abordagem SQL com Linguagem de Definição de Dados

Prof. Yuri Maluf

Linguagem de Definição de Dados.

Antes de iniciarmos a construção da estrutura o banco de dados do e-commerce, vamos abordar uma estrutura mais simples envolvendo uma importadora. Posteriormente, voltamos ao modelo Físico do e-commerce.

Estudo de Caso - Importadora

Uma empresa que trabalha no ramo de importação decide adquirir um sistema para auxiliar em suas operações. O futuro sistema da empresa precisa conter algumas informações geográficas de diversos países ao qual a importadora mantém negócios. A equipe contratada para desenvolver o banco de dados após toda a análise de requisitos chega ao modelo conceitual. O modelo obtido apresenta as seguintes entidades:

  1. Estatística: ano e PIB

  2. País: nome, área, moeda, capital, localização da capital

  3. Língua: língua ou idioma

  4. Produto: nome, tipo, ativo

  5. Continente: nome do continente

Modelo Conceitual - Importadora

Modelo Conceitual - Importadora

Modelo Conceitual - Importadora

Modelo Lógico - Importadora

erDiagram
    p[Pais] {
        int id PK
        int id_continente FK
        string nome
        int area 
        string moeda
        string capital
        point localizacao 
    }
    ex[Exporta] {
        int id PK
        int id_pais FK
        int id_produto FK
        decimal preco
        bool seguro
    }
    pr[Produto] {
        int id PK
        string nome
        string tipo
        bool ativo
    }
    c[Continente] {
        int id PK
        string nome
    }
    pl[Pais_Lingua] {
        int id PK
        int id_pais FK
        int id_lingua FK
        bit oficial 
    }
    l[Lingua] {
        int id PK
        string lingua 
    }
    e[Estatistica] {
        int id PK
        int id_pais FK
        year ano
        int PIB
    }


p ||--|{ ex : Exporta
l ||--|{ pl : Falam
c ||--|{ p : Localiza
p ||--|{ pl : Falam
pr ||--|{ ex : Exporta
p ||--o{ e : Divulga 

Tipos de Dados Numéricos

Tipos de dados Descrição
BIT Usado para armazenar sequências de bits.
TINYINT Esses são os inteiros de 1 byte.
INT Este é o inteiro padrão de 4 bytes.
BIGINT Esses são os inteiros grandes de 8 bytes.
FLOAT Números de ponto flutuante de precisão simples de 32 bits.
DOUBLE Armazena números de ponto flutuante de precisão dupla de 64 bits.
DECIMAL Usado com 2 parâmetros, o primeiro é o total de dígitos e o segundo o número após o ponto decimal.

Tipos de Dados Textuais

Tipos de dados Faixa Descrição
CHAR 255 caracteres Dado do tipo string de comprimento fixo. Seu valor padrão é 1.
VARCHAR 255 caracteres Dado do tipo string de comprimento variável. Pode conter letras, números e caracteres especiais.
BLOB 65.535 caracteres Dado do tipo string binária de comprimento variável com um comprimento máximo de tamanho.
TEXTO 65.535 caracteres Representa a string de comprimento variável com um comprimento máximo de tamanho.
ENUM varia Usado para armazenar um conjunto de valores predefinidos.
SET varia Semelhante ao ENUM, mas permite que vários valores sejam selecionados.

Tipos de Dados Temporais

Tipos de dados Formato
DATE AAAA-MM-DD
TIME HH:MM:SS
DATETIME AAAA-MM-DD HH:MM:SS
TIMESTAMP AAAA-MM-DD HH:MM:SS
YEAR Formato de 4 dígitos.

Criação de Tabela e Relacionamento

  • Chave Primária PK: Pelo modelo lógico, foi fixado nas tabelas uma chave primária PK. Para permitir que o SGBD administre as chaves identificadoras, definimos o campo (id) com valor inteiro e com a opção de incrementos +1 para cada novo registro (nova linha).

  • Chave Estrangeira FK: Nas tabelas com chaves estrangeiras FK executamos o comando foreign key(campo) para decretar o respectivo campo. Na sequência, realizamos a vinculação da chave estrangeira com o campo da chave primária localizada na tabela que participa do relacionamento. Isso é feito pelo comando reference tabela(chave primaria).

  • Retrições: Para cada campo das tabelas do diagrama, precisamos ficar atentos para seu tipo de dado e as suas restrições impostas pela situação tais como not null, unique, default value, unsigned etc.

  • Ordem: É recomendado iniciar a criação das tabelas por ordem crescente do número de chaves estrangeiras.

  • Evite Point Click: É extremamente importante, ao iniciar seus estudos em modelagem de dados, executar manualmente todos os comandos para desenvolver o modelo físico. Evite o uso de softwares point click, pois o apelo visual para realização de tarefas suprime virtualmente o entendimento da sua estrutura lógica.

Criação de Tabela e Relacionamento

create table continente(
-- id: opcao auto_increment add +1 a cada registro  
    id int auto_increment,
    nome varchar(30) not null,
    primary key (id)
);

create table produto(
    id int auto_increment,
    nome varchar(40) not null,
    tipo varchar(40) not null,
-- ativo: dado equivalente TINYINT(1) e representa VERDADEIRO ou FALSO
    ativo boolean not null default 1,
    primary key (id)
);

create table lingua(
    id int auto_increment,
    nome varchar(30) not null,
-- definicao do campo chave primária
    primary key (id)
);

Criação de Tabela e Relacionamento


create table pais (
    id int auto_increment,
    fk_continente int,
    nome varchar(30),
    -- unsigned: valores somente positivo 
    area int unsigned not null,
    moeda varchar(15),
    capital varchar(30),
    -- point: tipo de dado geoespacial 
    localizacao point,
    primary key(id),
    -- definicao campo como chave estrangeira e apontamento para a chave primária   
    foreign key(fk_continente) references continente(id)
);

Criação de Tabela e Relacionamento

create table exporta(
    id int auto_increment,
    fk_pais int,
    fk_produto int,
    preco decimal(9,2) not null,
    seguro tinyint(1) not null default 1,
    primary key (id),
    foreign key(fk_pais) references pais(id),
    foreign key(fk_produto) references produto(id)
);

create table estatistica(
    id int auto_increment,
    fk_pais int,
    ano year(4),
    PIB int not null default 0,
    primary key (id),
    foreign key(fk_pais) references pais(id)
);

Criação de Tabela e Relacionamento

create table idioma(
    id int auto_increment,
    fk_pais int,
    fk_lingua int,
    oficial boolean not null,
    primary key (id),
    foreign key(fk_pais) references pais(id),
    foreign key(fk_lingua) references lingua(id)
);

Banco Dados SQLite - 1

.tables

Banco Dados SQLite - 2

select * from employees;