Banco de Dados SQL em C#: Um Olhar Mais Profundo Através da Lição de Tim Corey
No mundo do desenvolvimento de aplicações C#, trabalhar com um banco de dados SQL é uma das habilidades mais importantes que você pode aprender. Em seu vídeo "C# App Start To Finish Lesson 08 – SQL Database Design", Tim Corey percorre o processo de projetar um banco de dados relacional, criar tabelas, definir relacionamentos e escrever procedimentos armazenados.
Neste artigo, iremos dar uma olhada mais profunda na lição de Tim e explicar as ideias exatamente como ele as apresenta. Se você quer um melhor entendimento de como uma aplicação C# se conecta ao SQL Server e como estruturar seu banco de dados corretamente, o vídeo de Tim oferece um excelente guia.
Introdução ao Design de Banco de Dados
Aos 1:00, Tim começa lembrando os espectadores que eles receberão todos os scripts e arquivos no pacote, incluindo os scripts do banco de dados. Ele enfatiza que o objetivo não é se tornar um especialista completo em SQL Server em uma lição, mas entender o design e como pensar na estruturação de dados. Tim então passa diretamente para o diagrama do banco de dados.
Entendendo o Diagrama do Banco de Dados
Aos 1:52, Tim destaca a tabela de membros da equipe e explica que ela não armazena diretamente o nome ou sobrenome de uma pessoa. Em vez disso, ela armazena um ID de Pessoa que se liga de volta à tabela de Pessoas. Este é um exemplo de um relacionamento um-para-muitos em um banco de dados relacional, onde uma pessoa pode pertencer a várias equipes.
Tim dá um exemplo prático: uma pessoa pode fazer parte de mais de uma equipe se vários torneios acontecerem simultaneamente. Isso evita duplicação e mostra como usar uma chave primária ajuda você a consultar dados de forma eficiente. Tim enfatiza que dados duplicados são prejudiciais porque levam a informações conflitantes, como endereços de e-mail inconsistentes.
Ele explica que a abordagem de design é usar IDs em vez de armazenar dados duplicados completos. Esse é o fundamento de um bom design de banco de dados SQL Server.
Evitando Colunas Duplicadas
Aos 4:48, Tim fala sobre por que você deve evitar armazenar múltiplos endereços de e-mail em colunas separadas como Email2 ou Email3. Em vez disso, ele sugere criar uma tabela de endereços de e-mail separada que inclui colunas para Person ID e Email Address. Isso permite que uma pessoa tenha múltiplos endereços de e-mail sem complicar a tabela de Pessoas.
Tim explica que o design do banco de dados é um equilíbrio entre simplicidade e flexibilidade. Para este tutorial, ele decide armazenar apenas um e-mail e um número de telefone, mantendo o design limpo e prático.
Criando um Banco de Dados no SQL Server Management Studio
Às 6:44, Tim muda para o SQL Server Management Studio e explica que está usando o SQL Server 2016 Developer Edition, que é gratuito e tem as mesmas funcionalidades da Enterprise Edition. Ele observa que não pode ser usado em produção, mas é perfeito para desenvolvimento em uma máquina local.
Tim explica duas maneiras de criar um banco de dados SQL Server: através do diálogo do SSMS ou usando uma consulta SQL. Ele prefere o método de consulta porque é mais rápido. O comando que ele usa é:
create database tournaments;
Ele explica que o ponto e vírgula é importante e deve ser usado no final de cada instrução SQL. Após criar o banco de dados, Tim mostra como atualizar a janela do SSMS para ver o novo banco de dados aparecer.
Visualizando Tabelas e Design de Tabelas
Às 12:06, Tim menciona que já criou todas as tabelas usando scripts. Em seguida, demonstra como abrir o designer de tabelas no SSMS. Tim explica que scripts SQL podem ser intimidantes para desenvolvedores C#, e o designer ajuda a editar tabelas visualmente sem precisar memorizar a sintaxe SQL.
Tim usa a tabela Prizes como exemplo. Ele explica como definir a chave primária, escolher tipos de dados e gerenciar valores nulos. Ele também observa que a chave primária ajuda o SQL a otimizar o armazenamento e a recuperação de dados da tabela. Sem uma chave primária, o SQL cria um "heap", o que torna as consultas mais lentas.
IDs de Auto-Incremento
Às 15:36, Tim explica como fazer a coluna de ID auto-incrementar usando a Especificação de Identidade. Ele define o incremento e a semente para 1. Tim enfatiza que isso dá a cada linha um identificador único e ajuda o SQL a organizar os dados de maneira eficiente.
Ele aponta que essa abordagem oferece um design altamente otimizado com esforço mínimo, o que é perfeito para desenvolvedores C# que querem um banco de dados SQL Server sólido sem ajustes complexos.
Entendendo Tipos de Dados
Às 18:09, Tim explica os diferentes tipos de string SQL: varchar, nvarchar e nvarchar(max). Ele descreve:
-
Char: armazena caracteres
-
Var: comprimento variável (até um número máximo)
- N: suporte Unicode para caracteres internacionais
Tim explica que nvarchar usa mais espaço de armazenamento, mas oferece suporte a idiomas globais, enquanto varchar é ideal para texto apenas em inglês. Ele também explica que nvarchar(max) é usado para strings muito grandes como JSON, que podem ser armazenadas e posteriormente recuperadas por um aplicativo.
Tipos de Dados Money e Float
Às 24:00, Tim compara tipos de dados SQL com tipos C#. Ele usa money para valores monetários (semelhante a decimal em C#) e float para percentuais (semelhante a double). Isso ajuda desenvolvedores C# a associar tipos SQL com seus tipos de programação.
Relacionamentos entre Tabelas
Às 25:04, Tim demonstra como criar relacionamentos usando chaves estrangeiras. Ele abre o editor de Relacionamentos e explica que a tabela primária contém o ID real, enquanto a tabela estrangeira referencia esse ID.
Ele também explica a ideia de exclusão em cascata, que remove automaticamente registros relacionados quando o registro pai é excluído. Tim adverte que os IDs devem ser tratados como imutáveis, o que significa que você nunca deve alterá-los uma vez criados.
Criando uma Nova Tabela
Às 29:30, Tim demonstra a criação de uma nova tabela usando o editor do SSMS. Ele constrói uma tabela de teste de pessoa com colunas como:
-
Primeiro nome
-
Sobrenome
-
Endereço de Email
-
Número de Telefone
-
Número de Filhos
- Data de Criação
Tim mostra como definir valores padrão, como definir Número de Filhos como 0, e usar getdate() para definir o horário atual. Ele explica que getutcdate() é melhor para aplicações que abrangem fusos horários.
Editando Dados na Tabela
Às 39:39, Tim mostra como editar linhas diretamente no SSMS. Ele adiciona registros de exemplo e explica que mesmo inserções falhas ainda consomem valores de ID. Ele aconselha deixar o SQL continuar a sequência de auto-incremento e não se preocupar com IDs faltantes.
Consultas SQL Básicas
Às 44:23, Tim ensina a sintaxe básica de consulta:
-
SELECT * FROM table
-
WHERE
-
LIKE
-
ORDER BY
- Alias de Coluna usando AS
Ele observa que SELECT * é bom para aprender, mas em aplicativos reais você deve especificar colunas para desempenho e clareza.
Procedures Armazenadas
Às 50:33, Tim introduz stored procedures. Ele explica que stored procedures permitem acessar a lógica do banco de dados de forma segura e prevenir ataques de injeção SQL. Tim prefere stored procedures ao acesso direto à tabela ou views porque fornecem melhor segurança.
Ele mostra como criar uma stored procedure que recupera prêmios pelo ID do torneio. Ele explica parâmetros, blocos BEGIN e END, e a instrução NOCOUNT ON.
Executando Procedures Armazenadas
Às 58:04, Tim cria uma stored procedure para obter pessoas de teste pelo sobrenome e demonstra como executá-la usando:
EXEC dbo.SP_TestPerson_GetByLastName 'Corey'
Ele explica que o esquema dbo é o padrão e que o SQL Server não diferencia maiúsculas de minúsculas para nomes de procedures.
Considerações finais
Tim em seu vídeo, conclui que o design do banco de dados SQL pode parecer complicado, mas os conceitos principais são simples. Ele encoraja os espectadores a praticar e explorar, e dá uma prévia da próxima lição onde ele conectará o banco de dados ao código C#.
