artigo SQL Magazine 04 - SQL Server – Primeiros Passos

Veremos neste artigo como construir um banco de dados no SQL Server 2000 através do Enterprise Manager.

Veremos neste artigo como construir um banco de dados no SQL Server 2000 através do Enterprise Manager. Mostraremos em algumas etapas a criação do banco e de seus componentes mais essenciais, como tabelas, índices e relacionamentos. Nosso banco de dados será chamado MiniNegocio, e será composto de duas tabelas: Clientes e Pedidos.

Introdução às ferramentas do SQL Server

O SQL Server é um sistema de gerenciamento de banco de dados cliente/servidor da Microsoft. Das principais ferramentas visuais de administração, destacaremos duas: o Enterprise Manager (Figura 1) e o Query Analyzer (Figura 2):

Enterprise Manager: Funciona como um painel de controle dos objetos, serviços e operações do SQL Server. É dividido em três seções:

Figura 1. Enterprise Manager

Figura 2. Query Analyzer

Query Analyser: É uma ferramenta gráfica para execução de comandos SQL e Transact-SQL (uma extensão da SQL, contendo rotinas procedurais). O Query Analyzer também fornece alguns serviços, como plano de execução de queries (fornecendo o tempo de CPU, leitura de disco rígido, entre outras informações), XX e YYY.

Consideração sobre Bancos de Dados no SQL Server

Além dos bancos criados pelo administrador, o SQL Server contém quatro bancos de dados de sistema: (master, model, tempdb, msdb), que são criados durante a instalação. Vejamos o papel de cada um:

Existem também tabelas do sistema que são armazenadas no banco de dados master e em cada banco de dados de usuário. Elas contêm informações sobre o SQL Server e sobre cada banco de dados de usuário. Existem 17 tabelas em cada banco de dados que formam o catálogo do banco de dados.e que começam com o prefixo sys.

Um banco pode ser composto de diferentes tipos de arquivos físicos:

Os objetos do banco de dados são armazenados em unidades básicas conhecidas como páginas e extents:

Para maiores informações a respeito de páginas, confira o artigo “Otimização e Tuninng”, de Paulo Ribeiro, publicado na SQL Magazine 3.

Criando um banco de dados

Para iniciar a construção do banco, o primeiro passo é verificar se o SQL Server está rodando. Para isso, basta verificar o ícone do aplicativo Service Manager, na barra de XXXXX. Se estiver em play, o SQL Server está em execução. Se estiver parado , devemos iniciar o serviço. Nesse caso, clique com o botão inverso do mouse sobre o ícone do Service Manager e selecione a opção MSSQLServer-Start, no menu flutuante.

Nota: Nesse caso, usaremos a máquina local, ou seja, o mesmo computador onde o SQL Server foi instalado. Nada impede que o Enterprise Manager seja utilizado a partir de outra máquina, desde que a mesma esteja conectada com o servidor.

O próximo passo é abrir o Enterprise Manager. No menu de programas, selecione o item Enterprise Manager, dentro da pasta Microsoft SQL Server. A tela principal do aplicativo será exibida.

Expanda o item Microsoft SQL Servers, no painel esquerdo da tela principal. Clique duas vezes sobre o subitem SQL Server Group, para exibir todos os servidores registrados no Enterprise Manager. Como estamos utilizando o aplicativo em modo local, apenas o nome LOCAL será exibido, conforme mostra a Figura 4:

Figura 3. Exibindo servidores registrados

NOTA: O Enterprise Manager pode se conectar a diversos servidores SQL Server. Nesse caso, cada servidor será representado por um respectivo nó abaixo do item SQL Server Group.

Em seguida, expanda o servidor LOCAL. Uma lista contendo os diversos serviços e objetos disponíveis para este servidor será exibida. Para iniciar a construção de um novo banco de dados, clique com o botão inverso do mouse sobre o item Databases e selecione a opção New Database. A janela Database Properties será exibida. Nessa caixa de diálogo, temos três guias:

I) General – Informações primárias do banco de dados. Preenche o formulário de acordo com a lista abaixo:

Name: Define o nome do banco de dados. Digite MiniComercio.

Collation Name: A especificação de Collation Name muda a forma como o SQL Server armazena os caracteres nas tabelas. Deixaremos a opção Server default.

II) Data Files – Configurações principais do banco

Location: Localização do arquivo primário. Por default, é indicado o diretório DATA dentro da pasta do SQL Server, embora outro local pode ser selecionado.

Initial Size: Indica o tamanho inicial, em megabytes, do arquivo primário. O arquivo de dados, mesmo vazio, será criado com o valor indicado nessa caixa. Por exemplo, se for especificado 50, um arquivo .MDF de 50mbs será criado no disco. O motivo é a performance: alocando previamente um espaço determinado, o SQL Server garante que os dados sofrerão menos fragmentação física no disco. Se o banco crescesse conforme a inserção dos dados, a distribuição física das páginas de dados seria aleatória, a mercê do sistema operacional. O valor adequado para este campo dependerá da aplicação que está sendo desenvolvida. Uma boa medida é sempre deixar um bom espaço disponível, para que o sistema rode durante um bom tempo sem a necessidade de alocar novo espaço em disco. É importante notar que o SQL Server possui diversos mecanismos para distribuição de dados em mais de um disco ou em até mesmo mais de um computador, mas esse não é o foco deste artigo.

Ao ser criado, o banco possui um tamanho default de 1 Mb. Como esse valor é insuficiente para armazenar a quantidade de dados prevista, aumentaremos-o para 15 Mb.

Automatic Grow File: Essa opção, quando selecionada, permite o crescimento automático do tamanho do arquivo primário do banco quando este se encontrar cheio. Caso o tamanho seja mantido, nenhuma inclusão será mais possível e a seguinte mensagem de erro aparecerá: “Could not allocate space for object 'tabela' in database 'BANCO' because the 'PRIMARY' filegroup is full”.

A seleção dessa opção habilita duas subopções que determinam como será feito o crescimento:

O banco por default cresce automaticamente de 10% e sem limite. Se ele crescer indefinidamente, poderá ocupar o disco rígido inteiro e travar o sistema operacional. Determinaremos então um tamanho limite de 18 Mb e um crescimento de 1 Mb.

Transaction Logs – Informações sobre o arquivo de log

Essa guia possui as mesmas propriedades da guia Data Files, só que elas se aplicam ao arquivo de log (que aparece com o nome do banco seguido de _log). É indicado armazenar os arquivos de log (assim que os arquivos de backup) em um outro dispositivo de armazenamento para melhorar a perfomance.

O arquivo primário é gravado com a extensão .mdf. Se houver um arquivo secundário, este terá a extensão .ndf. O arquivo de log possui a extensão .ldf.

Terminada a configuração do banco, pressione Ok. Observe como o Enterprise Manager representa o novo banco na Figura 4.

Figura 4. Representação do novo banco

É possível aumentar ou diminuir o tamanho de um banco. Isso se justifica por exemplo devido ao um importante aumento ou declínio das atividades.

Para incrementar um banco, clique o banco com o botão direito do mouse e selecione Properties, o que fará aparecer a janela MiniComercio Properties (Figura 4).

Temos duas opções:

a) Expandir o arquivo primário: Selecione a guia Data Files e digite um novo valor na coluna Space Allocated.

b) Adicionar arquivos secundários. Na guia Data Files, digite os dados do novo arquivo na segunda linha da seção Database files.

Os mesmos procedimentos são feitos na guia Transaction Logs para arquivos de log.

Aperte OK em seguida para confirmar a opção escolhida.

Para diminuir um Banco, de um clique com o botão direito e escolhe Alltasks e em seguida Shrink Database. Aparecerá uma caixa de diálogo que permite reorganizar os arquivos e compacta-los.

.

Analisaremos os componentes da caixa de dialogo:

Escolhe seu modo de redução e clique em Ok.

Para remover um Banco, seleciona o banco, pressiona a tecla Delete (ou clique com o lado direito do mouse e seleciona Delete). Em seguida, confirma as opções e clique no botão OK.

Figura 5. Confirmando configurações

Criação de Tabelas

Vamos iniciar criando a tabela Clientes. No painel esquerdo do Enterprise Manager, selecione o item Tables, dentro do banco MiniComercio, e clique com o botão inverso. No menu flutuante, selecione New Table, para abrir a caixa de diálogo correspondente. Nesta janela podemos criar, visualmente, todos os campos da nova tabela. Observe na lista abaixo o significado de cada item solicitado:

Começaremos com a tabela de clientes. Preencha a grade conforme a tabela abaixo:

Nome Tipo Tamanho AllowNulls

CódigoCli int 4

Nome char 20

MarcaCarro char 20 X

Em seguida, clique no botão Save e, na janela seguinte, digite Clientes e Pressione Ok. Nossa primeira tabela acaba de ser criada. Antes de fechar o editor de tabelas, vamos definir uma chave primária.

A chave primária dessa tabela será formada pelo campo código. Selecione esse campo, clique com o botão inverso do mouse e clique na opção Set Primary Key. Observe que o ícone de uma chave aparece automaticamente ao lado do campo escolhido (Figura 6).

Figura 6. ícone da chave

NOTA: Para criar uma chave primária composta, basta selecionar os campos correspondentes e repetir a operação.

Feche a janela de criação de tabelas. Observe que o nome da nova tabela é exibida no painel direito do Enterprise Manager, juntamente com as tabelas de sistema. Para criar uma nova tabela, clique novamente com o botão inverso do mouse sobre o item Database, no painel esquerdo, e selecione a opção New Table. Os campos da nova tabela devem ser criados conforme a tabela a seguir:

Nome Tipo Tamanho AllowNulls

CódigoPed int 4

Mercadoria char 30

DataPedido date 8

CodigoCli int 4

Defina o campo CódigoPed como chave primária. A tabela pedidos possuirá também uma chave estrangeira (CodigoCli). Veremos a criação dessa chave mais adiante. Salve a tabela com o nome Pedidos e feche a janela.

Para alterar a estrutura de uma tabela, clique com o botão inverso do mouse sobre o nome da tabela e, no menu flutuante, selecione Design Table. A mesma tela utilizada para criação será exibida, com as definições de campos preenchidas. O SQL Server permite que muitas alterações na estrutura sejam feitas sem a necessidade de reconstruir a tabela, limitação imposta por diversos bancos de dados.

Para excluir uma tabela, clique com o botão inverso do mouse sobre o nome da tabela e, no menu flutuante, selecione a opção Delete.

Nota: Um Banco de Dados no SQL Server 2000 pode conter no máximo dois bilhões de tabelas e cada tabela pode ter no máximo 1024 colunas.

Índices

Existem dois tipos de índices no SQL Server:

  • Clustered (agrupado): A ordem física das páginas dos dados segue a mesma ordem dos índices. Pode haver somente um único índice agrupado por tabela, sendo geralmente usado em uma chave primária. Quando modificações são feitas em uma tabela, o índice agrupado ajuda a reorganizar fisicamente as linhas e a reconstruir os outros índices.
  • Non-clustered (não-agrupado): É o índice padrão, desvinculado da tabela física.

O SQL Server dispõe de um componente chamado otimizador que analisa as consultas e decide se vale utilizar ou não um índice.

Construção dos índices

No painel esquerdo do Enterprise Manager, selecione o item Tables. Em seguida, selecione a tabela Clientes no painel direito, clique com o botão inverso do mouse e selecione a opção Design Table.

Na lista de campos, clique com o botão inverso do mouse e selecione a opção Indexes/Keys. A caixa de diálogo Properties será exibida (Figura 7). Vejamos a descrição dos principais componentes desta janela:

Index Name: IdNome Column Name: Nome (o índice será formado apenas por este campo) Order: Ascending Create Unique: Não Fill Factor: 70% Create as Clustered: Não Do not recomputed stats: Não.

Figura 7. Propriedades

Criar Relacionamentos

Os relacionamentos no SQL Server são representados através de diagramas. Criaremos um relacionamento entre as tabelas Cliente e Pedidos. Como um cliente pode ter um ou vários pedidos, esse relacionamento será de 1:N e a chave primaria de Clientes será definida com chave estrangeira em Pedidos.

Dentro do banco MiniNegocio, selecione Diagrams, clique com o botão direito e selecione New Database Diagram. Na primeira tela do assistente, clique em Next, pois não há nada a ser configurado. Em seguida, devemos indicar quais tabelas farão parte do relacionamento. Selecione Clientes e clique no botão Add. Repita a operação para a tabela Pedidos e clique em Next. Por último, clique em Finish para fechar o assistente (Figura 8).

No diagrama, selecione a chave estrangeira CodigoCli em Pedidos e arraste ate a tabela Clientes onde se encontra a chave primaria. Aparecerá uma tela contendo as propriedades dos relacionamentos (Figura 9):

Figura 8. Assistente de criação

As opções dessa caixa de diálogo possuem o significado abaixo:

Relationship Name: Nome do relacionamento. O nome default aparece como PK_Clientes_Pedidos.

Primary Key Table: Nome da tabela (Clientes) que possui a chave primaria usada.

Foreign Key Table: Nome da tabela (Pedidos) que possui a chave estrangeira.

As opções seguintes verificam se o relacionamento entre as tabelas Clientes e Pedidos tem toda sua integridade.

Check existing data on creation: Verifica a relação existente em uma chave estrangeira durante a criação de um relacionamento.

Enforce relationship for replication: A integridade é imposta na replicação de uma tabela na qual se encontra uma chave estrangeira em um banco diferente.

Enforce relationship for INSERTs and UPDATEs: A integridade é imposta quando dados são adicionados ou atualizados. Essa opção, quando selecionada, habilita as duas subopções seguintes:

Selecionaremos aqui todas as opções.

Figura 9. Relacionamentos

Usando o Query Analyzer

Mostraremos como utilizar o Query Analyzer para criar um banco novo e suas tabelas. Criaremos um banco chamado MiniNegocio com um tamanho de 10 Mb junto com um arquivo de log de 2 Mb. Se o nome do banco criado anteriormente MiniComercio fosse usado novamente, o SQL Server acusaria o erro seguinte “Error 1801: Database ’MiniComercio’ already exists”.

Para entrar no Query Analyzer, selecione no menu a opção Tools e clique em SQL Server Query Analyzer.

Aparecera a janela do Query Analyzer contendo uma tela vazia onde serão inseridos os comandos T-SQL.

Digite o seguinte comando para criar o banco:

CREATE DATABASE MiniNegocio ON PRIMARY (name = MiniNegocio1, filename=‘c:\Arquivos de Programas\Microsoft SQL Server\data\MiniNegocio1.mdf’, size = 10 MB, maxsize = 15 MB, filegrowth = 1 MB) LOG ON (name = MiniNegocioLog, filename =’c:\ arquivos de programas\Microsoft SQL Server\data\MiniNegocioLog.ldf’, size = 2 MB, maxsize = 3 MB, filegrowth = 10%)

Explicaremos os itens usados:

As mesmas tabelas Clientes e Pedidos serão criadas. Devemos primeiro selecionar o banco com o qual trabalharemos. Uma caixa de listagem localizada na parte de cima do Query Analyzer contém os nomes de todos os bancos presentes no SQL Server. Selecione o banco MiniNegocio.

Os comandos abaixo criarão as tabelas Clientes e Pedidos junto com suas chaves e relacionamento.

CREATE TABLE Clientes ( CodigoCli int PRIMARY KEY CLUSTERED, Nome char(20) NOT NULL Carro char (20) NULL ) CREATE TABLE Pedidos ( CodigoPed int PRIMARY KEY CLUSTERED, mercadoria char(30) NOT NULL, DataPedido date NOT NULL, CodigoCli int NOT NULL REFERENCES Clientes(CodigoCli) )

Esses comandos dispensam maiores explicações. REFERENCES faz a ligação entre a chave estrangeira de Pedidos e a chave primaria de Clientes.

Conclusão

Vimos como o Enterprise Manager fornece uma interface bastante interativa para criação e manipulação de bancos de dados e de seus objetos. O Query Analyzer constitui uma ferramenta menos amigável, entretanto, ele permite um maior controle e será certamente de maior utilidade em situações delicadas que exigem ajustes finos.

Artigos relacionados