1. O que é um banco de dados?

Muitos utilizam o termo banco de dados para fazer referência para um SGBD (Sistema Gerenciador de Banco de Dados). Pode ser definido como um programa que se propõe em fornecer os serviços para atender à necessidade de armazenamento, processamento, controle de acesso, segurança e integridade de dados.

A modelagem de um SGBD pode ser relacional, baseada em documentos, chave-valor, orientado à objetos, grafos, baseado em colunas, etc. Enfim, existe muitas opções, cada um apresenta características específicas que apresentam vantagens em determinados cenários e desvantagens em outros.

O ranking dos principais SGBD, fornecido pelo site DB-engine, traz Oracle e SQL Server entre os três primeiros, conforme visto na Figura 1.

Figura 1: estrutura de um banco de dados SQL Server.

O modelo relacional, baseado na relação entre as tabelas através de chaves (constraint foreign key) ainda é o mais utilizado nos sistemas corporativos, em especial o Oracle e SQL Server, nas suas edições não-gratuítas.

1.1 Características

A linguagem de programação utilizada para trabalhar com os bancos de dados relacionais, na grande maioria é o SQL. Cada fabricante utiliza sua linguagem proprietária para isso, sempre derivando do SQL-ANSI.

SGBD Linguagem proprietária de SQL
Oracle PL/SQL
SQL Server T-SQL (Transaction-SQL)

As principais caracteristicas que define e distingue um SGBD de um Sistema de Arquivo são:

  • Integridade dos dados;
  • Visões consistentes;
  • Acessos simultâneos;
  • Controle de acessos;
  • Transações.

O termo Object não deve ser confundido com Orientação à Objetos.

1.2 Arquitetura física

Dentro da arquitetura física do SQL Server, além do serviço principal, existem outros serviços. Entre as tarefas de um SGBD está a responsabilidade de abstrair a camada física dos arquivos, porém permitindo o gerenciamento destes.

1.3 Arquitetura lógica (SQL Server)

Importante destacar que um banco de dados pode ter muitas bases de dados. A Figura 2 exemplifica a arquitetura no SQL Server.

Figura 2: estrutura de um banco de dados SQL Server.

Normalmente, uma aplicação está relacionada com UMA database apenas. Sendo que dentro de uma instância podem existir muitas databases.

Dentro da estrutura lógica do SQL Server ainda pode ser definido um outro nível, abaixo de database, chamado de schema. É opcional, caso não seja informado é adotado o padrão, denominado dbo.

1.4 Tipos de objetos

Um SGBD permite a definição de vários tipos de objetos. O termo Object não deve ser confundido com Orientação à Objetos. Onde uma tabela é apenas um deles, abaixo uma lista dos principais:

Tipo Descrição
Table Estrutura definida em coluna fortemente tipada utilizada para armazenamento de registros.
Sequence Sequencial numérico utilizado para definição de ID's.
Index Estrutura de apoio utilizada para acessar registros em uma tabela.
Procedure Procedimento que executa rotinas na linguagem proprietária do SGBD.
Function Semelhante à procedure, porém sempre retornará um valor.
Package Estrutura que permite agrupar e organizar procedures e functions num determinado contexto (apenas Oracle).
Trigger Um gatilho vinculado à um evento (insert, update ou delete) de uma tabela, o qual permite executar uma rotina/procedure.
View Comando SQL salvo dentro do dicionário de dados do SGBD.

Esses objetos após serem criados serão salvos dentro do dicionário de dados do SGBD, também conhecido como metadata.

2. Criando uma tabela

Um exemplo prático de criação de uma tabela, semelhante a uma planilha, que é composta por colunas e linhas é o caso à seguir:

2.1 Caso de uso: estacionamento

O exemplo seria o cenário de uma empresa que deseja criar uma aplicação para salvar os dados dos veículos de seus colaboradores, objetivando um controle de acesso à garagem. Como salvar estas informações?

placa cor marca modelo proprietario email telefone
ABC-3401 branco fiat palio carlos da silva [email protected] 9987-0102
ITR-1304 preto citroen C4 maria ribeiro [email protected] 9764-1325
IAB-0101 preto honda civic julia de souza [email protected] 9660-0669
MMA-9876 prata fiat siena antonio silveira [email protected] 9495-2597
JIR-4576 branco volkswagem gol pedro paulo de almeida [email protected] 8446-1332
POT-0660 amarelo chevrolet monza alfredo silveira da silva [email protected] 8669-0909

Tudo bem, este controle pode ser feito facilmente no Excel, mas ainda assim será criada uma tabela para tal tarefa. Seguindo os seguintes passos:

1) Criando uma base de dados:

  • Utilize a ferramenta client para acessar o SQL Server local, SQL Server Management Studio 2014.
  • Utilize o modo de autenticação SQL Server Authentication, informe o usuário sa (Super Admin).
  • Crie uma database chamada Estacionamento.

2) Criando uma tabela:

   create table Carro (
        placa           varchar(7) ,
        cor             varchar(20),
        marca           varchar(30),
        modelo          varchar(30),
        proprietario    varchar(150),
        email           varchar(100),
        telefone        varchar(100)
    );

O tipo de dados varchar permite armazenar caracteres numéricos de forma variável.

Para mais informações consulte o site da Microsoft: https://msdn.microsoft.com/pt-br/library/ms187752.aspx

3) Inserindo os registros: para adicionar dados (linhas) é necessário utilizar do comando SQL Insert, conforme o exemplo abaixo:

insert into Carro 
      (placa, 
       cor, 
       marca,
       modelo,
       proprietario,
       email,
       telefone) 
   values
      ('ABC-3401', 
       'branco',
       'fiat', 
       'palio',
       'carlos da silva', 
       '[email protected]', 
       '9987-0102');

Para inserir todos os registros utilize o arquivo insere-carros.sql

2.2 Consultando um registro

Para consultar registros de uma tabela é utilizado o comando select. Por exemplo, para verificar qual é o carro da Julia:

Pode-se utilizar do comando que seleciona todas as colunas e todas as linhas:

-- retornando todos os registros
Select * From Carro;

Pode-se aplicar um filtro (where) para restringir o resultado:

-- retornando apenas linhas onde o valor da coluna "proprietario" seja igual à 'julia de souza'
Select * 
  From Carro 
 Where proprietario = 'julia de souza';

2.2.1 Adicionando um novo registro

Considere um cenário onde Julia vende seu carro para Augusta, que trabalha na mesma empresa, essa transação nem sempre será atualizada de forma rápida dentro da aplicação.

Porém a nova proprietária precisará fazer o cadastro.

-- retornando apenas linhas onde o valor da coluna "proprietario" seja igual à 'julia de souza'
insert into carro 
   (placa, cor, marca, modelo, proprietario, email, telefone) 
  values 
   ('IAB-0101', 'preto', 'honda', 'civic', 'augusta cavalcante', '[email protected]', '8778-4556');

Neste momento Julia solicita o registro de seu novo veículo, um Passat:

-- retornando apenas linhas onde o valor da coluna "proprietario" seja igual à 'julia de souza'
insert into carro
     (placa, cor, marca, modelo, proprietario, email, telefone) 
   values
     ('IXT-7181', 'cinza', 'volkswagen', 'passat', 'julia de souza', '[email protected]', '9660-0669');

2.2.2 Consulta com filtro

Neste cenário, um cliente da empresa oferece um convênio para revisões de veículos da marca Volkswagen, e para isso pede a relação de veículos de seus colaboradores. Considere que todos permitiram que essa informação fosse divulgada.

-- retornando todas as linhas onde a marca seja Volkswagen
Select modelo, marca, placa
  From Carro 
 Where marca = 'volkswagen';

3. Comandos DDL

Os comandos DDL (Data Definition Language) são comandos que permitem alterar a estrutura de um objeto no banco de dados. Exemplos de ações são: criação de tabela, alterações de tabelas, criação de procedimentos.

Para mais informações consulte os seguintes materiais:

  • PDF disponibilizado no github.
  • Site com explicações mais detalhadas.

Geralmente são definidos pelos comandos iniciais de create (criação), alter (alteração) ou drop (eliminação).

3.1 Exemplos

1) Criando uma tabela para armazenar um cadastro de nome de países e suas siglas, por exemplo, Brasil e BRA, respectivamente. A coluna IDPais é o identificador de cada registro.

Create table Pais
    ( IDPais   int         not null,
      Nome     varchar(50) not null,
      Sigla    varchar(3),
         constraint PK_Pais primary key (IDPais)
    )

2) Alterando uma tabela, no exemplo à seguir é adicionado uma coluna (atributo) chamada de DDI na tabela Pais:

Alter table Pais add DDI varchar(5);

3) Criando uma sequência, no exemplo à seguir é criada uma sequência, um tipo de objeto que possibilita a geração de um sequencial.

Create sequence SEQ_PAIS;

4) Eliminando uma tabela, importante lembrar que este comando, drop não oferece a possibilidade de se arrepender. No caso de eliminar uma tabela, todos os registros também são eliminados

Drop table Pais;

3.2 Tabelas

As tabelas permitem que sejam criadas constraints, que representam regras utilizadas para garantir a integridade dos dados e desempenho. Os tipos existentes são: primary key, unique, foreign key e check.

3.2.1 Primary key

A primary key (PK) indica o identificador único de um registro na tabela. Como boa prática é ALTAMENTE recomendado que TODA a tabela tenha.

Alter table Pais add constraint PK_Pais primary key (IDPais);

Não é obrigatório, porém fortemente recomendado que se utilize um padrão de nomenclatura, por exemplo, PK_[Nome da tabela].

3.2.2 Unique

Permite garantir que uma coluna (ou várias) tenha uma combinação única, um exemplo clássico é em relação ao CPF. É diferente da chave primária porque permite que tenham valores nulos, e possibilita que uma tabela mais de uma.

Alter table Pessoa add constraint UK_Pessoa_CPF unique (CPF);

Como padrão de nomenclatura PK_[Nome da tabela]_[Coluna].

3.2.3 Foreign Key

Permite criar uma referência para outra tabela, garantindo integridade dos dados. Para mais informações consulte o PDF referente à DDL.

3.2.4 Check

Permite criar regras simples de validação, como restringir que uma determina coluna tenha apenas alguns valores, ou definir regras envolvendo mais de uma coluna.

-- neste exemplo apenas 3 valores são aceitos para a coluna Situacao da tabela Pessoa.
Alter table Pessoa add constraint CC_Pessoa_Situacao check (situacao in('A', 'I', 'C'));

4. Modelo Entidade-Relacionamento (ER)

O modelo Entidade-Relacionamento, ou modelo ER, é representado por um diagrama que explica qual é a relação das tabelas de uma determinado base, ou schema. Pode ser comparado à planta de uma casa na engenharia civil.

Geralmente é o primeiro passo antes de iniciar um projeto de software que utiliza banco de dados.

  • Entidade: representa uma tabela;

  • Atributos: representa as colunas de uma tabela;

  • Relacionamentos: explica a relação entre as entidades;

    • Cardinalidade: ajuda a explicar um relacionamento e também a obrigatoriedade.

5. Comandos DML

Os comandos DML (Data Manipulation Languagem) são os comandos mais utilizados em SGBD relacionais.

São basicamente 4 tipos:

  • INSERT: utilizado para criar linhas em uma tabela;
  • UPDATE: utilizado para alterar valores de colunas (atributos) de um registro (ou mais);
  • DELETE: utilizado para excluir linhas de uma tabela;
  • SELECT: apesar de não realizar alteração, é considerado DML, aplicado para retornar linhas de uma tabela.

Para utilização desses comandos, em especial os três primeiros, é altamente recomendado conhecer o conceito de transação.

Material de referência:

03 - SQL Server - Comandos SQL - parte 2 - DML.pdf

results matching ""

    No results matching ""