fala pessoal aqui é o Fábio da boson Treinamentos e neste vídeo eu trago o nosso curso de modelagem de dados completo modelagem de banco de dados na verdade esse curso já existe no canal na forma de vários vídeos separados e como muita gente me pede para criar vídeos únicos mais fáceis de encontrar eu resolvi pegar todos esses vídeos que são mais de 40 e compil todos no único vídeo grandão esse vídeo ficou com quase 10 horas de duração e aqui então vocês vão ter acesso a todo o conteúdo de modelagem de dados do e mais
alguns B especiais que eu inseri no meio legal então curso de modelagem de dados que já existe no canal porém compado em um únic vdeo grand que Facita você assistir eso que vocês consigam aproveitar esse vídeo que goem desse formato e deixem seus comentos aqui embai queiram ver outos tipos de cursos naárea de banc de dados out outos assuntos de tecnologia aqui no canal então gente sem mais delongas vamos estudar modelagem de dados Olá pessoal aqui é o Fábio da boson Treinamentos e Este vídeo é o primeiro vídeo do nosso curso de modelagem de dados
nesse curso eu vou mostrar como você deve proceder para modelar e eventualmente criar um banco de dados a partir do zero nós já temos aqui no canal da boson alguns cursos específicos de SQL para banco de dados Microsoft por exemplo SQL server MySQL nós temos post gret também inicializando vamos ter bancos de dados Oracle mas esses cursos todos eles têm em comum o fato de serem cursos voltados para implementação física do banco de dados né escrever os códigos e criar o banco de dados efetivamente só que para chegar nesse nesse passo né nessa etapa de
implementar o banco físico Primeiramente você precisa ter o seu banco modelado certo você precisa saber quais serão as tabelas que serão utilizadas quais os atributos os relacionamentos como ser esses relacionamentos você precisa saber como limpar essas tabelas né para eliminar por exemplo redundâncias duplicações etc e esse é o propósito desse curso de modelagem de dados tá Então nesse primeiro vídeo eu vou apresentar alguns conceitos básicos de bancos de dados em si tá coisas bem simples mas que são importantes pra gente começar essa jornada aí de criação de bancos de dados legal bom primeiramente o primeiro
conceito que eu quero falar nesse curso é a ideia de dado e informação tá ã a gente sempre ouve falar em dados e informações Será que são a mesma coisa tem alguma diferença entre esses conceitos na verdade que os dados eles são fatos numa forma primária tá e a gente armazena esses dados em algum meio o banco de dados serve para isso para armazenar dados Então como exemplo eu tenho aqui o CPF o nome de uma pessoa né o uma data qualquer a gente considera esses elementos como dados por si só o dado não tem
uma significância muito grande por exemplo uma data jogada ao ar não significa grande coisa 8 de julho de 2017 O que que significa isso né José que que significa isso né o dado sozinho ele não tem tanto significado mas o dado pode ser associado com outros dados tá e eventualmente D origem a informação a informação diz respeito aos fatos no caso os dados organizados tá de modo que Produza significado para alguém tá então são os dados colocados em contexto por exemplo eu posso ter uma lista de clientes dos nomes dos clientes com os números de
CPF em ordem de cadastro né Por data no meu banco de dados então tô pegando essas informações esses dados que eu citei anteriormente e agora colocando em contexto de modo que me traga uma informação que pode ter alguma utilidade para mim legal então a ideia do banco de dados é essa é organizar esses dados para que a gente possa eventualmente extrair informação da desse conjunto de dados no banco de dados você também vai ver um conceito chamado de metadados tá que que são metadados basicamente dados sobre os dados tá são dados e eventualmente informações que
dizem respeito aos próprios dados armazenados no banco a gente costuma utilizar os metadados para efetuar a representação dos dados né como os dados vão ser representados como é que eu classifico a representação dos dados como é que eu identifico a representação dos dados no banco utilizando metadados tá eles são usados para garantir consistência né para que os dados não tenha nenhum tipo de problema de corrupção de informação e persistência para que eles possam efetivamente ser armazenados e não perdidos posteriormente tá e a gente costuma manter o metadados num num lugar chamado dicionário de dados ou
catálogo de dados e a gente vai falar em outros vídeos mais para frente exatamente do que se trata o dicionário de dados legal então esse é um outro conceito importante pra gente ter em M mente para poder entender direitinho como é que funcionam os bancos de dados então a gente pode definir agora o banco de dados né agora que a gente já sabe o que são Dados informações metadados então o que que é um banco de dados é uma coleção organizada de dados então coleção é um conjunto organizada então tem um uma organização específica os
dados não ficam jogados ali a esmo tá e do quê de dados tá E os dados são organizados para modelar ou seja representar de forma abstrata os aspectos do mundo real por exemplo se eu quiser criar um banco de dados para armazenar os os nomes dos meus amigos e os telefones deles uma agenda Tá eu vou modelar via software no computador um aspecto do mundo real a agenda existe no mundo real os telefones Existem os amigos existem E aí vou representá-los dentro do computador usando um banco de dados e assim eu posso efetuar processamento em
cima desses dados por exemplo procurar o telefone de um amigo específico tá ou então pesquisar o endereço daquela pessoa a partir do telefone se eu tiver também essa informação armazenada tá E os dados são armazenados do banco de dados e organizados utilizando-se vários tipos de objetos específicos então o banco de dados ele vai ter as tabelas a tá ele vai ter esquemas ele vai ter visões ele vai ter procedimentos armazenados ele vai vai ter gatilhos os triggers e outros elementos tá ao longo do curso a gente vai falar e vai explicar exatamente do que se
trata cada um desses itens tá sendo que provavelmente os itens mais importantes aqui pra gente serão as tabelas e os relacionamentos legal então esse é um conceito geralzão do que são os bancos de dados aqui a gente tem um símbolo do banco de dados um símbolo que a gente costuma usar muito quando vai criar alguns diagramas tá então sempre que tiver esse cilindro basicamente significa armazenamento de alguma coisa geralmente a gente usa para banco de dados mas veja que esse não é um símbolo oficial é um símbolo que a gente vai usar aqui no curso
eventualmente legal vai ter vários símbolos oficiais que a gente vai ver posteriormente quando a gente for tratar de por exemplo diagrama entidade e relacionamento nos próximos vídeos bom e para que que servem os bancos de dados então o que que eu posso fazer com banco de dados a gente tem inúmeras um monte de aplicações a para bancos de dados por exemplo eu posso utilizar para criar um sistema bancário né então lá no banco tem o banco de dados que armazena os dados dos Correntistas por exemplo né o saldo da conta do cidadão as movimentações o
dinheiro que ele tem na poupança os investimentos tá tudo fica armazenado em bancos de dados sistema de reserva em hotéis banco de dados não só para você pesquisar o hotel mas também para realizar a sua reserva tá controle de estoque em supermercado ou qualquer outro tipo de controle de estoque é informação armazenada catálogo de livro na biblioteca sem dúvida e-commerce você vai comprar um produto numa loja virtual esse produto ele vai ser consultado no site da loja e os dados do produto que são exibidos estão em bancos de dados o nome do produto preço quantidade
em estoque e assim por diante Receita Federal utiliza bancos de dados por exemplo para armazenar os dados dos cidadãos tá e dados do impsto de renda YouTube olha só totalmente diferente dos outros sistemas que eu citei o YouTube também utiliza bancos de dados bancos de dados específicos mas utiliza tá para armazenar os dados sobre os vídeos por exemplo como esse que você tá assistindo tá ele também tá indexado em bancos de dados e muitas Outras aplicações então bancos de dados são uma das tecnologias em ti mais importantes que existem tá praticamente tudo que você faz
tem em algum momento banco de dados Ass ados legal por isso é importante aprender a trabalhar com Essas tecnologias e um outro conceito importante é o conceito de sgbd ou sistema de gerenciamento de bancos de dados tá que que é o sgbd o sgbd é um conjunto de softwares são programas de computador tá que permitem aos usuários criar ou alterar os bancos de dados então quando eu quero criar um banco de dados o que que eu posso utilizar tá porque o banco de dados em si geralmente é um arquivo ou um pequeno conjunto de arquivos
às vezes não é pequeno mas são conjuntos de arquivos que tem os dados mas como é que eu manipulo esses arquivos como é que eu crio como é que eu acesso para isso eu utilizo programas específicos chamados de sgbds sistemas de gerenciamento de bancos de dados legal e eles também geralmente permitem proteger o banco tá e manter o banco ao longo do tempo tá então eu posso ter um banco de dados aí sendo utilizado a 20 30 40 anos sendo mantidos por um sgbd Como existe na verdade na prática legal hã por exemplo o SQL
server é o sgbd a gente tem curso de SQL server aqui na boson Treinamentos e outros exemplos de sgbds estão aqui nessa pequena lista Oracle Database o SQL server Microsoft MySQL o db2 da IBM cbase mongo Deb também é um sistema de gerenciamento de bancos de dados teradata post GR que a gente vai também trabalhar aqui na bos eslite e assim por diante Então tem um monte deles tem muitos outros além desses eles funcionam com tecnologias diversas Às vezes as tecnologias são parecidas às vezes não tá mas a ideia é esse sistemas são usados para
gerenciar os bancos de dados Como por exemplo o SQL server que eu citei aqui eu tenho uma captura de tela do de um dos programas que fazem parte desse pacotão tá que é o SQL server Management Studio Então esse programa eu utilizo por exemplo para visualizar os bancos de dados os objetos dentro dos bancos de dados a tabelas exibições a programação armazenamento segurança e executar códigos em SQL que é a linguagem desse tipo de banco de dados né para criação e manipulação de dados tá então esse aqui é um exemplo de um sgbdr veja que
eu coloquei a letra R no final aqui porque esse aqui é um sistema de gerenciamento de bancos de dados do tipo relacional ou seja modelo relacional porque existem vários modelos de bancos de dados o mais usado atualmente para bancos de pequeno médio e até grande porte são os bancos de dados relacionais tá existem outros modelos como a gente vai ver posteriormente certo e o que que é um sistema de banco de dados outro conceito importante sistema completo aí sem se o sistema de gerenciamento em si um sistema de bancos de dados é um sistema que
contém o sgbd mais o banco de dados e veja o banco de dados é uma coisa o sgbd é outra tá e aplicativos de acesso então você vai ter um programa de acesso um sgbd para manipular as consultas e as inserções de dados etc e o banco de dados com seus metadados e vai ter Claro os usuários fazendo acesso então por exemplo aqui no canal a gente tem um curso de PHP com MySQL nesse curso você aprende a manipular e o sgbd MySQL a criar o banco de dados MySQL e a criar aplicativos de acesso
a esses dados usando a linguagem PHP né linguagem de script PHP de modo que o usuário possa utilizar o sistema legal então o sistema de banco de dados é isso aqui tá esse conjunto desses elementos todos interconectados que permitem a manipulação e o uso dos dados em si muito bom e quando a gente fala em usuários ah na verdade existem vários tipos de usuários o usuário ele pode ser o usuário final que é esse do exemplo que eu dei do PHP né o cidadão que vai acessar o Website lá e e fazer o cadastro efetuar
compra etc mas ele também pode ser um administrador um dba n um Database administrator que é o cara que eventualmente cria o banco de dados efetua backup do banco de dados gerencia o banco de dados né faz a manutenção no banco de dados entre outras tarefas e o usuário também pode ser o projetista ou desenvolvedor tá o cara que faz uma programação no banco de dados tá ele pode ser o cara que faz a modelagem do banco de dados projeta esse banco de dados é o que esse curso aqui se propõe ensinar e depois do
banco de dados pronto e implementado alguém administra esse banco de dados no dia a dia legal e o usuário final é o cara que utiliza então basicamente algumas categorias de de usuários do banco de dados tá é muito comum a gente a gente tá englobado nas três né a gente que trabalha nessa área você é o cara que projeta depois você mesmo administra e você mesmo acaba usando o banco de dados no dia a dia é muito comum isso legal muito bom então algumas características e funcionalidades que os bancos de dados vão ter tá ou
vão oferecer então geralmente o banco de dados ele tem algum tipo de controle de redundância que significa basicamente assim bem bem de forma bem suscinta evitar duplicidade dos dados evitar de armazenar a mesma informação várias vezes no mesmo banco tá múltiplas visões dos dados basicamente e exibir pros usuários os dados né as informações de formas distintas Dependendo de quem e de como se quer ver aquela informação então ele permite geralmente ter múltiplas visões fazer controle de concorrência que que é o controle de concorrência vamos supor que eu tenho dois usuários tentando acessar o mesmo registro
no banco de dados ao mesmo tempo para fazer uma alteração tá banco de dados eventualmente tem que tem que gerenciar esse acesso para evitar que um cara sobrescrevendo então a gente chama isso de controle de concorrência tá backup e restauração importantíssimo que o banco de dados tenha algum tipo de técnica para fazer backup e restaurar né caso os dados sejam perdidos autenticação e autorização de acesso para que só as pessoas autorizadas tenham acesso aos dados e para que você possa ter algum tipo de granularidade nisso né Para que um usuário tem acesso a determinadas tabelas
outro usuário determinadas rotinas e assim por diante tá restrições de integridade tá coisas do tipo ah eu não posso cadastrar um produto se eu não tiver o fornecedor dele né garan a integridade dos dados né eu não posso cadastrar o usuário se ele não fornecer o CPF para que eu escreva na tabela e assim por diante Então são algumas das características e funcionalidades que geralmente a gente encontra em bancos de dados Tá eu vou falar mais a respeito delas mais a fundo ao longo do curso inclusive mostrando como é que a gente modela algumas coisinhas
tá bom legal a gente viu então alguns conceitos bices para começar a falar de bancos de dados vamos ver um um histórico resumido de alguns modelos de bancos de dados que já foram usados no passado e o que a gente vai trabalhar aqui no curso Então antigamente até antes de de mostrar o primeiro modelo antigamente a gente armazenava dados em fichas né cartãozinho de papel escrevia informação e guardava ali numa caixinha numa pasta alguma coisa do gênero quando era moleque quando era ança eu ia na biblioteca e a biblioteca não tinha computador então para você
encontrar um livro lá você tinha que ir num armário grandão que tinha ali no meio da perto da entrada da biblioteca tinha um monte de gavetinhas nesse armário com com as letras né da ordem alfabética você ia até a gavetinha puxava e procurava lá dentro a ficha correspondente ao livro que você queria aí você Puxava a ficha e lá tinha as informações do livro incluindo a localização do livro dentro da biblioteca o corredor a Prat a estante e assim por diante e assim você conseguir acessar aquele livro tá então esse é um um modo de
se armazenar dados e utilizá-los sem computador com computador a gente teve alguns modelos no passado Como por exemplo o modelo hierárquico isso aí anos 70 provavelmente né ã no qual os dados são organizados como o nome diz de forma hierárquica né lembrando um pouquinho um organograma por assim dizer tá E os registros São interconectados ligações tá a ligação representa relações de dois tipos básicos de registros que a gente tem aqui registro pai e Registro filho tá Ah é como se fosse um diagrama de estrutura de árvore tem aqui uma ilustração que mostra como é que
era a cara de um modelo hierárquico então aqui a gente tem a cara de um modelo hierárquico tá aqui é um banco de dados de uma empresa com com dados sobre um departamento os departamentos em si né RH financeira Engenharia e os usuários que na verdade os funcionários que trabalham nesses departamentos a ano Jorge Paulo Fábio a Mônica etc então se eu quisesse ter acesso por exemplo aos dados da Paula Eu precisaria primeiro acessar o departamento depois acessar ao financeiro depois acessar o usuário o funcionário Paula para ter os acesso aos dados dela esse é
um modelo que foi usado antigamente e hoje a gente não vai trabalhar mais basicamente com esse modelo tá H depois surgiu também um modelo chamado de modelo em no qual os dados eles são organizados em ligações entre registros Tá mas não de forma hierárquica tá ou seja não tem a restrição hierárquica e a gente na prática a gente tem as ocorrências de dados visualizados como se fosse uma exp de um grafo que é um tipo de estrutura de dados então Model rede seria mais ou menos isso que por exemplo uma escola modelando uma escola onde
eu tenho o departamento tenho professor o curso e o estudante o aluno né o cara que faz o curso veja que essas linhas azuis conectam esses elementos do modelo em rede então o curso pert a um departamento O curso tem um professor O curso tem os estudantes O Estudante tem aula com o professor tá Professor Ministro o curso e pertence a um departamento e assim por diante veja que não tem a ligação direta entre departamento e estudante estudante não tem ligação com departamento esse também é um modelo antigo que a gente não vai mais utilizar
e o que interessa mesmo pra gente gente isso aqui é só histórico só pra gente se situar Tá mas o que interessa mesmo pra gente é o modelo relacional nesse modelo a gente separa os dados em entidades tá de acordo com o assunto basicamente e depois essas entidades elas são relacionadas entre si e as entidades Elas têm atributos né que descrevem os dados em si e aí as entidades se relaciona entre si e permite que o usuário tenha acesso aos dados inclusive de de tabelas seadas né os dados são armazenados em tabelas nesse modelo relacional
tabelas separadas de acordo com o assunto que são as entidades e depois você interconecta todo mundo e consegue ter acesso a esses dados um exemplo clássico seria isso aqui tá modelo relacional aqui modelando a escola né aluno professor e curso veja que a gente só tem essa linhazinha aqui interconectando os elementos aqui eu tenho ã os os dados que eu armazeno né o RA do aluno o nome o curso o ID do professor o nome do professor o código do curso o nome e a duração do curso também tem aqui descrições de tipos de dados
que a gente vai aprender mais para frente como é que funciona legal beleza e é isso aí bom então esse vídeo aqui eu dei uma introdução básica ao que são bancos de dados sgbd modelos de dados falei um pouco sobre dado informação e agora a gente tá encaminhado para poder começar a trabalhar e entender como é que se faz a Model de dados como é que a gente cria isso daqui que o modelo relacional é o modelo de nossa escolha que é o modelo mais usado atualmente existem outros modelos né Você pode ter banco orientado
a objetos Você pode ter banco não relacional tá mas para esse curso a gente vai trabalhar com relacional Então como é que a gente chega nisso aqui como é que a gente determina quais são essas tabelinhas né como é que a gente determina quais são essas colunas os tipos de dados como é que a gente faz as ligações entre elas o que pode o que não pode e isso a gente vai aprender ao longo dos próximos vídeos Olá pessoal aqui é o Fábio da boson Treinamentos e nesse vídeo vamos continuar com o nosso curso de
modelagem de dados desta vez vamos falar um pouco sobre modelos de dados bom então qual que é a ideia aqui primeiramente a gente vai definir o que que é um modelo tá para entender ã o que que é uma modelagem de dados basicamente o modelo é uma estrutura que ajuda o projet comunic os conceitos que estão na sua mente então o projetista a pessoa que vai projetar o banco de dados tem determinadas ideias na mente e precisa passar isso pro papel ou para um software tá para fazer a modelagem então para isso ele cria um
modelo e o modelo é utilizado basicamente para descrever analisar especificar e comunicar essas ideias por isso que é muito importante a gente ter sempre um modelo criado e no modelo a gente deve colocar sempre detalhes que sejam suficientes para que o desenvolvedor do banco de dados consiga criar o banco em si tá de acordo com a necessidade do projeto que você tá criando então e é muito comum que você tenha esses papéis separados né a pessoa que projeta o banco de dados o projetista criando os modelos e um desenvolvedor de posse desse modelo implementando o
banco e às vezes pode ser que a mesma pessoa faça as duas tarefas mas é importante que o modelo esteja criado e com esses detalhes que a gente tá citando aqui certo e aí vem então a ideia de modelagem de dados tá o que que é modelagem de dados é criar um modelo de dados para um sistema de informação certo aplicando técnicas que são específicas para esse processo Então a gente vai aprender essas técnicas específicas ao longo dos próximos vídeos tá ã esses processos são usados para analisar e definir os requisitos de dados que são
necessários para paraas regras do negócio né Para que você possa criar o banco de dados de acordo com o negócio que o seu cliente precisa tá e o modelo de dados fornece sempre a estrutura pros dados usados no sistema de informação por exemplo definições e formatos de dados específicos então é muito importante que você crie o modelo de dados quando vai criar um banco de dados às vezes quando o banco de dados não é tão complexo eu vejo pessoas tentando criar o banco de dados direto né direto no sistema de gerenciamento de banco de dados
já criando tabelas relacionamentos de cabeça o que geralmente causa problemas depois tá como por exemplo esquecer de incluir atributos criar relacionamento errado criar redundância de dados por isso é muito importante você sempre pensar em fazer A modelagem previamente tá bom existem vários tipos de modelos de dados a gente já viu no outro vídeo no nosso primeiro vídeo ã um pouquinho a respeito do modelo hierárquico do modelo em rede que são modelos históricos na verdade e a gente vai trabalhar nesse curso com o modelo relacional que é o nosso nosso objetivo existem outros modelos também como
modelo orientado objeto e modelos não relacionais tá ess nesse vídeo como eu disse a gente vai trabalhar com modelo relacional que tá até ressaltado aqui certo e o que que é esse modelo relacional tá o modelo relacional é um modelo antigo de dados tá ele foi ele foi esboçado pela primeira vez pelo Dr cod na IBM num artigo que foi publicado em junho de 19 T né eu não tinha nem nascido ainda o nome do artigo é irr relational irr relational Model of data for large shared dat Banks é um modelo relacional de dados para
grandes bancos de dados compartilhados tá Então nesse modelo o Dr code Ele propôs o modelo relacional para sistemas de bancos de dados que anteriormente e seguiam modelos como por exemplo modelo de rede ou o modelo hierárquico esse documento você encontra com facilidade na internet só escrever esse nome botar lá PDF F E você vai encontrar ele para baixar na íntegra para você ler e ele não é complicado de de seguir tá eh eu até recomendo se você tiver um tempo baixar e dar uma estudada nesse modelo um pouquinho mais paraa frente do curso aí vai
ficar mais interessante para você e mais fácil para entender também tá no modelo relacional a gente organiza os dados em coleções de tabelas bidimensionais tá essas tabelas elas recebem o nome de relações aí o nome relacional na verdade relacional é porque existem relacionamentos mas os relacionamentos são entre relações Então quando você Ouvi falar nesse termo relação você já sabe na verdade é uma tabela dentro do modelo relacional então se eu disser relação eu disser tabela são basicamente a mesma coisa não são exatamente a mesma coisa porque esses termos são usados emem momentos diferentes mas eles
se referem basicamente a mesma estrutura tá então a relação é uma forma de você organizar os dados em linhas e colunas ou seja uma tabela tá e o modelo relacional ele foi criado com base na lógica e teoria de conjuntos que é muito comum a gente a gente trabalhar né quando a gente aprend SQL por exemplo a gente relembra bastante teoria de conjuntos porque se aplica bastante esse conceito matemático aqui tá bom o que que a gente tem no modelo relacional Quais são os seus principais componentes Então a gente tem as coleções de objetos ou
as relações vou Google tabelas que vão armazenar os dados em si mas não tem só isso tá você também vai ter operadores que agem nas relações produzindo outras relações né comandos por exemplo E você tem mecanismos para criar integridade garantir integridade de dados precisão e consistência para que os dados sejam armazenados eh permaneçam armazenados íntegros sem perda de informações tá então são são todas eh itens que você vai ter dentro de um banco de dados relacional de acordo com o modelo relacional e tem mecanismos para você garantir tudo isso e a gente vai aprender ao
longo das aulas e o banco de dados relacional que é o banco de dados criado a partir de um modelo relacional é portanto uma coleção de relações assim como o modelo relacional prega né que são essas tabelas bidimensionais aqui eu tenho um exemplo vamos supor que eu queira armazenar dados dos clientes de uma loja então uma lojinha qualquer né uma papelaria por exemplo me contrata para criar um banco de dados para ele para eles armazenarem os dados dos seus clientes então o que que eu preciso para isso eu vou criar tabelas para armazenar essas diferentes
informações sobre os clientes tá por exemplo dados pessoais dos clientes os dados de compra dados de crédito e outras informações ã é bem é bem provável que essas informações todas esses dados né ainda são dados na verdade que eles não fiquem armazenados num único lugar numa única relação é bem provável que eles fiquem espalhados em relações distintas que depois vão ser interconectadas tá para que a gente não tenha por exemplo redundância que é repetição de dados e Garanta a integridade desses dados todos tá então banco de dados relacional é basicamente isso tá e o banco
de dados também vai ter alguns componentes específicos você vai ter as tabelas tá que a tabela é estrutura básica de armazenamento num banco de dados aqui eu tenho a sigla sgbdr sgbd Você já sabe o que é sistema de gerenciamento de bancos de dados o r é de relacional Então sempre que aparecer essa sigla você já sabe que a gente tá se referindo a um banco de dados relacional criado a partir de um modelo relacional nessa tabela você vai ter todos os dados necessários sobre as entidades do mundo real ou seja aquilo que você quer
representar e armazenar dentro desse banco tá a gente também pode chamar de relação como eu já citei um banco de dados pode ter uma ou mais tabelas geralmente mais de uma tabela tá E essas tabelas elas são compostas por tuplas que que é uma tupla tupla é um é um conceito né um termo bem específico do mundo de banco de dados que se refere basicamente a uma linha na tabela ou registro a gente também pode usar o termo Registro para se referir a uma linha tá então um registro linha ou tupla representa todos os dados
que são requeridos por uma determinada ocorrência de uma entidade em particular por exemplo um determinado cliente né ele vai ter uma série de dados armazenados no banco nome endereço telefone CP data de nascimento e assim por diante então ess esses dados todos em conjunto né que dizem respeito a um cliente em particular a gente vai dizer que é uma tupla ou uma linha ou um registro do banco de dados certo então cada linha na tabela é identificada por um Um item chamado de chave primária que eu já vou explicar o que que é tá de
modo a não haver a duplicidade ou duplicação dos dados se eu vou armazenar dados sobre um cliente na tabela num banco de dados eu vou armazenar uma vez só esses dados eu tenho que garantir de alguma forma que esses dados não se dupliquem tá para ISO que vai servir basicamente essa tal de chave primária além das tuplas que são os registros Nós também vamos ter colunas no banco de dados Tá o que que é uma coluna coluna é uma unidade que vai armazenar um tipo específico de dado ou um valor específico de dado tá ou
pode não armazenar nada dependendo n de de do tipo de informação que você tá armazenando pode ter valor nulo tá aqui eu tô me referindo a uma coluna não chave significando que o valor dela pode se repetir em outras linhas da tabela outras tuplas tá um exemplo clássico aqui seria o nome né o nome de uma pessoa o nome é uma coluna da tabela e essa coluna você vai encontrar sempre os nomes dos diversos registros que você tiver armazenados e claro esses nomes podem eventualmente se repetir eu posso ter vários Fábios por exemplo como clientes
da minha loja tá mas a ideia é nessa coluna eu vou ter apenas esse tipo de informação somente os nomes numa outra coluna eu vou ter outro tipo de informação como por exemplo sobrenomes tá e assim sucessivamente certo Além disso e um banco de dados relacional ele vai ter relacionamento que que é um relacionamento é uma associação entre as entidades entre as tabelas então exemplo clássico né Você tem uma tabela de cliente uma tabela de produtos o cliente entra na loja e compra produtos como é que eu vou representar no banco de dados esta compra
de produtos né o cliente comprando um produto eu representar através de um relaci vai ter as técnicas você como feito esse relacionamento tá mas você vai ligar as tabelas entre si de modo a posteriormente poder resgatar essa informação e saber qual cliente comprou qual produto ou quantos clientes compraram um determinado produto e assim por diante certo então relacionamento é essa associação entre as tabelas e essa Associação ela é feita eh pelo uso pelo emprego de colunas especiais que a gente vai chamar de chave primária e chave estrangeira tá Não se preocupe muito por enquanto quanto
com essa ideia toda né fazendo um parêntese aqui com essa ideia toda de chave primária chave estrangeira relacionamento porque a gente vai estudar cada item desses mais a fundo nos próximos vídeos tá a ideia desse vídeo aqui é só dar uma uma visão Geral do que é o modelo relacional e um banco de dados baseado nesse modelo certo bom o banco de dados relacional vai ter outros elementos além desses índices o SP aqui é de Storage procedure procedimentos armazenados triggers etc que você vai criar E além disso vai ter essa tal de chave primária e
chave estrangeira assim só uma um aperitivo Zinho né O que que é uma chave primária é uma coluna também chamada de atributo tá que identifica um registro de forma única tá então aquela coluna vai ter valores que nunca se repetem e ela vai garantir que os registros sejam todos diferentes entre si então por exemplo eu posso ter 10 clientes chamados Fábio mas eu vou ter uma coluna chave primária que vai ter um valor que vai diferenciar um Fábio do outro por exemplo pode ser o meu CPF ou pode ser um código de cliente cada um
vai ter seu código e eles não vão se repetir assim eu vou saber quem é o Fábio eu e quem é o Fábio outro certo então É bem interessante isso e a chave estrangeira é uma coluna que define o relacionamento entre as tabelas então numa tabela eu vou ter uma chave primária e uma outra tabela ou relação eu vou ter uma chave estrangeira que é uma coluna que vai estar conectada geralmente a uma chave primária de outra tabela ou uma chave que uma chave de valor único de outra tabela tá Depois a gente vai ver
como é que a gente determina quem vai ser a chave estrangeira e como criar essa chave estrangeira Legal muito bom são conceitos importantes aí que a gente vai aos poucos colocando na mente uma coisa importante aqui um adendo né ah na nossa aula é entender a importância da análise de requisitos Tá o que que é análise de requisitos é uma fase que você Que você realiza durante a modelagem dos dados na verdade até antes da modelagem dos dados A análise de requisitos é uma fase de coleta de informações eh como o próprio nome diz você
vai fazer a análise dos requisitos das dos das informações que são importantes para o seu banco de dados geralmente você faz a análise de requisitos se reunindo com o seu cliente conversando com ele tá Existem várias técnicas para isso que geralmente a gente estuda em análise de sistema tá Por que que eu coloquei esse slide aqui porque é muito importante você realizar essa análise de requisitos quando tiver pensando em modelar um banco de dados para um cliente ou para si próprio que seja porque é nessa fase que você vai descobrir quais dados devem ser armazenados
no banco e de que tipo são esses dados e mais importante também vai descobrir quais dados não devem ser armazenados no banco para não colocar ã informação ou dado a mais que não é necessário no banco certo então A análise é extremamente importante pro sucesso do projeto do seu banco de dados se você não faz uma análise de requisitos é bem provável que em algum momento no futuro durante o processo de desenvolvimento desse banco você encontre problemas e tenha que refazer determinadas Partes Tá então para evitar retrabalhos faço uma análise de requisitos bem feita certo
geralmente conversando com o cliente perguntando para ele que que você precisa nesse banco tá bom dito tudo isto a gente entra no conceito de modelo entidade e relacionamento a gente vai fazer uma modelagem certo e o que que essa modelagem vai dar pra gente vai trazer pra gente vai trazer um modelo entidade de relacionamento também chamado de mer modelo entidade de relacionamento o modelo entidade é um modelo que é criado a partir das especificações lá do negócio né da narrativa do usuário daquela informação que você trouxe do usuário e ele é usado para ilustrar as
diversas entidades do seu negócio tá E também os relacionamentos entre elas e a gente constrói o mer durante essa análise né do ciclo de vida do do desenvolvimento do sistema na na um pouco depois de você fazer análise de requisitos e a partir dela você vai gerar um diagrama entidade relacionamento que é uma representação gráfica desse modelo Por que que a gente cria representações gráficas porque a representação gráfica permite que você enxergue com detalhes e com facilidade como é a construção do banco de dados e como os elementos se associam entre si tá então é
muito importante criar esse tipo de diagrama o mer modelo entidade de relacionamento ajuda a separar a informação que é necessária ao negócio né informação que você vai armazenar no banco das atividades que são realizadas no negócio que que significa isso voltando no nosso exemplo do cliente do produto o modelo entidade de relacionamento vai te ajudar a discernir quais dados eu vou armazenar dos clientes dos produtos e das vendas e como esses itens se relacionam por exemplo quais atividades são são realizadas no negócio o cliente vai comprar produtos essa é uma atividade né vou dar baixa
no estoque essa é uma outra atividade eu vou fazer um pedido para um fornecedor é uma outra atividade o modelo entidade de relacionamento ele vai te ajudar a enxergar tudo isso e como essas coisas se se amarram entre si tá muito legal e o mer o modelo entidade de relacionamento ele é composto por alguns elementos os três elementos principais são entidades atributos e relacionamentos tá que tem tudo a ver com aqueles elementos que a gente viu agora a pouco né as relações tabelas Campos registros tudo aquilo é derivado do mer então o que que é
uma entidade é uma coisa que tem um significado especial sobre o qual a gente precisa armazenar dados ou informações por exemplo o cliente é uma entidade porque ele é especial no nosso sistema eu preciso dos dados desse cara armazenados tá cliente funcionrio pedido produto e assim por diante vendas e assim por diante O atributo que é um outro componente do mer é umum item que descreve ou qualifica A Entidade tá então como é que eu vou descrever um cliente nome endereço telefone sobrenome CPF e assim por diante então esses elementos são atributos do cliente tá
o atributo ele pode ser obrigatório por exemplo é obrigatório registrar o CPF do ou ele pode ser opcional não é obrigatório registrar o telefone do cliente porque ele pode não ter telefone e finalmente o relacio o que que é um relaciono é uma associação entre as entidades uma associação nomeada porque ela recebe um nome de identifica Então como é que o cliente se relaciona com produto por meio de um relacionamento que vai ter ali um nome por exemplo compra cliente compra produto o compra é o relacionamento certo então o cliente pode estar associado a um
pedido ou uma compra dessa forma tá ou um produto dessa forma então esses são os três principais componentes do mer que tem Paralelos ali com os elementos que a gente viu anteriormente na na ideia de de modelo relacional em si tá de novo não se preocupe n se tá um pouco etério se isso aqui tá muito abstrato porque nos próximos vídeos a gente vai trabalhar item por item do que eu tô citando aqui a gente vai falar a fundo sobre entidades mostrar exemplos de como descobrir o que é uma entidade falar sobre atributos falar sobre
relacionamentos a gente vai devagar porque modelagem é algo abstrato e se você não não não delinear os elementos separadamente né com cuidado é muito fácil a a gente se confundir e acabar não entendendo nada no final tá então a gente vai estudar tudo isso aí aos pouquinhos Existem algumas Convenções pra gente modelar as entidades os relacionamentos e os atributos que a gente vai aplicar nos próximos vídeos eu vou citar agora só mais por curiosidade mesmo tá então por exemplo as entidades elas vão ter sempre um nome único singular em caixa alta então quando eu quiser
no meu sistema representar uma entidade cliente eu vou escrever cliente no singular todo emcaixa alta em maiúsculas e é um nome único não vão ser duas palavras né cliente da empresa é só cliente é obrigatório seguir isso não isso não é Regra geral é uma convenção que a gente vai adotar aqui no curso tá eu trouxe essa convenção são dos treinamentos que eu participei orac skl server etc e a gente costuma trabalhar dessa forma tá pros atributos a gente também vai manter o nome no singular tá só que a gente vai usar Caixa Baixa certo
então por exemplo CPF Caixa Baixa não é cpfs é CPF os atributos obrigatórios a gente vai marcar com asterisco e o identificador único aquele atributo né aquele Campo que não se repete a gente vai utilizar o sustenido inho ali hashtag e os relacionamentos a gente vai usar como identificador sempre um verbo porque o relacionamento ele sempre identifica uma ação alguma coisa que está ocorrendo tá a gente vai também identificar a opcionalidade dele se deve ser se é obrigatório ou se pode ser e o grau ou cardinalidade do relacionamento tá a gente vai estudar cardinalidade mais
a fundo posteriormente é muito importante esse conceito mas basicamente uma colherzinha de chá finalidade significa que as entidades eh Pode Ou deve em relação de forma uma e apenas uma ou uma ou mais com outra entidade meio confuso né mas a ideia basicamente é a seguinte com exemplo fica mais fácil entender um cliente ele pode comprar um ou mais produtos dentro da da minha loja então tem uma certa cardinalidade e um produto pode por exemplo ser adquirido por um cliente ou mais clientes então tem uma cardinalidade aqui implícita certo se eu estabelecer um critério do
tipo o cliente só pode comprar um único produto a cardinalidade mudou um cliente pode comprar apenas um produto na loja tá então a cardinalidade diz respeito a isso à quantidades em que os as entidades se relacionam entre si tá na na aula específica de cardinalidade vai ficar mais claro isso com os exemplos práticos certo muito bom e aí para finalizar o identificador único eu citei que a gente tem uma tal de chave primária ou campo único ou campo chave a gente vai ter esse elemento nos bancos de dados que é uma combinação de atributos lembrando
atributo é um campo então uma combinação de atributos ou até mesmo de relacionamentos que a gente vai usar para distinguir as ocorrências da entidade ocorrência de entidade registro tá um cliente em particular um produto em particular uma venda em particular então cada ocorrência da entidade tem que ser identificável de forma exclusiva de modo que eu possa identificar um cliente específico uma venda específica um fornecedor específico e assim sucessivamente certo então a gente vai criar um elemento chamado identificador único para isso tá e a gente vai ver posteriormente as técnicas para para determinar Quem É Esse
identificador único e como trabalhar com ele Olá pessoal aqui é o Fábio da boson Treinamentos e nesse vídeo vamos continuar o nosso curso de modelagem de dados vamos falar desta vez sobre os níveis de modelagem bom a história é a seguinte a gente costuma classificar o processo de modelagem de dados em três níveis a gente vai chamar esses níveis de modelo conceitual ou nível conceitual modelo lógico e o modelo físico sendo que o modelo conceitual é o nível mais alto tá mais próximo da da abstração ã e o modelo físico é o nível mais baixo
mais próximo do projeto físico do banco de dados em si e a gente pode abreviar esses modelos como MCD modelo conceitual de dados mld modelo lógico de dados e mfd modelo físico de dados Legal vamos lá bom vamos ver agora esses modelos um a um rapidamente então modelo conceitual é a primeira fase da modelagem tá Ah você vai fazer a representação do mundo real ã ou seja do do objeto que você quer transformar em um banco de dados utilizando uma visão simplificada desses dados tá E os seus relacionamentos também então a gente vai determinar nesse
modelo Quais são as informações que vão ser armazenadas no banco de dados o que que precisa ser armazenado dentro do banco de dados nesse nível o projeto ainda é independente do sistema de gerenciamento de bancos de dados ou seja ao criar o modelo conceitual o seu modelo ele vai poder ser aplicado em qualquer software de gerenciamento de bancos de dados então eu posso utilizar esse mesmo modelo para criar o banco no SQL server no Oracle Database no MySQL no post gre e assim sucessivamente legal então tenho um exemplo aqui do modelo conceitual vamos supor que
eu precise criar um banco de dados para uma loja e nessa nesse banco de dados eu vou ter uma função para cadastrar os produtos que são vendidos na loja tá então no modelo conceitual eu vou fazer um levantamento dos dados necessários para fazer esse tipo de de cadastro né ã por exemplo eu vou perguntar pro pro meu cliente O que que você precisa armazenar a respeito desses produtos na lja ele vai me dizer ó eu preciso armazenar o nome do produto é importante a categoria né esses produtos são classificados se é um produto de limpeza
se é de higiene se é alimentício e Padaria etc um código do fornecedor para cada produto tipo de embalagem né se é pacote se é caixa se é Masco como é que tá armazenado esse esse esse produto fisicamente tamanho quantidade e outras informações tá Então nesse nível no modelo conceitual a gente vai recolher essas informações que eu vou utilizar posteriormente nos próximos níveis tá depois disso ã os os detalhes da implementação ainda não vão aparecer tá a gente então não tem como dizer o banco de dados vai ficar assim a gente só tá recolhendo os
dados e começando a montar o quebra-cabeças da da modelagem Tá mas a gente já vai ter detalhes suficientes para poder descrever os tipos de dados requeridos então aqui a gente já vai conseguir saber ã o tipo de informação que se refere o nome do produto a quantidade o preço do produto e as outras informações que a gente vai recolhendo no caso do nosso exemplo que eu acabei de falar tá Depois disso entra o modelo Lógico tá o modelo lógico ainda tem conceitos que o usuário consegue entender mesmo o usuário Lego né olhando com um pouquinho
de orientação ele consegue entender o que que tá acontecendo ali ainda tá H mas já está mais próximo do modelo físico tá o banco de dados já começa a se delinear aqui nesse nível o projeto ainda é independente do sistema de gerenciamento de banco de dados então ainda dá para você pegar esse mesmo modelo e aplicar em vários softwares de gerenciamento de bancos de dados diferentes tá e aqui a gente faz a especificação lógica tá Ah dos dados num formato que vai ser adequado posteriormente ao banco de dados a gente começa a definir os tipos
de dados aqui então aqui por exemplo a gente tem um diagrama em cima que é um diagrama que a gente chama de diagrama entidade relacionamento tá tem uma representação desse diagrama que vocês vão aprender nos próximos vídeos como fazer inclusive isso daqui aqui a gente já começa a ter informações com mais níveis de detalhe por exemplo eu tenho aqui o funcionário tem um departamento eu tenho informação de que o funcionário tem um nome uma identificação do setor onde ele trabalha um cargo eu sei que ele trabalha em um departamento específico o departamento tem nome tem
uma identificação do setor e eu também sei através dessa letrinha n desse número um que num departamento eu posso ter vários funcionários e que um funcionário só trabalha num único departamento nesta empresa modelada nesse exemplo aqui tá Então esse tipo de informação vai aparecer no modelo Lógico não se preocupe nesse momento em entender como é que se faz o modelo lógico porque a gente vai fazer isso tudo passo a passo para a partir dos próximos vídeos tá primeiro a gente tem que entender aí esses conceitos e depois a gente gera o modelo físico a partir
do modelo lógico vai ser derivado o modelo físico e aqui a gente vai detalhar a estrutura das informações que vão ser guardadas no banco de dados então toda a estrutura física tabelas Campos que são atributos os relacionamentos entre eles os tipos de dados quantidade de informação tá então aqui por exemplo eu tô fazendo a estrutura de um cadastro de com clientes de de clientes vamos supor que eu tenha que armazenar no meu banco informações sobre os clientes da minha loja no modelo físico eu teria algo parecido com isso eu teria Campos com seus respectivos nomes
com o ID do cliente o nome do cliente o endereço do cliente os tipos de dados específicos daquele campo então por exemplo o ID do cliente é um número inteiro Já o nome do cliente o endereço São Campos do tipo caracter tá alfa numérico por exemplo e os tamanhos Então o meu campo ID cliente vai ter um tamanho de quatro quatro qu pode ser bit pode ser byte Depende de como você tá lidando com os tipos de dados o campo nome do cliente 30 30 by por exemplo são caracteres endereço 40 by e assim por
diante ou 40 caracteres que dá no mesmo né caracter equivale a um byte geralmente então aqui você começa a modelar de tal forma que posteriormente isso vai se transformar Ah no banco de dados e aqui conforme você vai definindo os tipos de dados tamanhos e outras informações o modelo já vai ficando mais amarrado ao sistema de gerenciamento que você escolheu pro banco de dados tá assim você vai utilizar o sistema de gerenciamento mais adequado pro seu caso muito bom e a gente chama Então esse esse esquema desses modelos desses níveis né conceitual lógico e físico
de arquitetura de três níveis e essa essa figura aqui ilustra direitinho resume direitinho do que se trata Você tem o mundo observado mundo externo tá onde se encontra Ah o que você quer modelar e transformar em um banco de dados e a partir daqui você vai derivando os modelos nesta ordem modelo conceitual primeiro ainda bem abstrato bem com ideias modelo lógico Já podendo ser representado na forma de diagramas e ilustrando as relações entre os elementos e o modelo físico já bem detalhado Prontinho ou quase pronto para ser transformado num banco de dados real tá claro
que tem uma série de técnicas e e processos que a gente aplica em cada um deles para poder chegar no resumo correto dos dados no na informação correta que a gente vai armazenar nos bancos e aí depois de tudo isso a gente consegue gerar o esquema do banco de dados que que é o esquema do banco de dados é a definição do banco que foi especificada durante o projeto e a gente armazena toda essa definição em Um item chamado dicionário de dados e mais para na frente vocês vão aprender a fazer um dicionário de dados
também tá o esquema ou esima em inglês ele não vai mudar é muito raro ele mudar durante a vida do banco de dados uma vez que você tenha feito a arquitetura ele deve permanecer daquela forma a não ser que haja necessidade de uma mudança muito drástico ou que você tenha por exemplo cometido um erro durante a modelagem tá Ahã nesse esquema que a gente vai definir Então as tabelas os campos relacionamentos visões funções e outros elementos que vão compor o banco de dados tá e a gente vai trabalhar com esses caras todos aos poucos também
bom então Eh mais para resumir o que a gente tá falando Quais são as etapas que a gente vai vai realizar para desenvolver um banco de dados primeira etapa é especificação e análise de requisitos ou seja entender o que que o cliente precisa né e fazer uma análise para poder eh descobrir quais informações eu vou utilizar e quais eu posso descartar para esse banco de dados tá e essa é uma fase extremamente importante no vídeo passado eu falei um pouco a respeito dela tá esses requisitos têm que ser documentados inclusive depois entram os níveis de
modelagem que é o nível do nível conceitual né projeto conceitual baseando-se nesses requisitos o projeto Lógico que vai ser expresso no modelo de dados por exemplo o modelo relacional que eu também falei no vídeo passado gerando os diagramas e o e o modelo físico que é um projeto físico onde a gente vai definir especificação para armazenar acessar o banco de dados fazer a implementação do banco de dados posteriormente E aí você vai fazer a inserção de dados reais podem ser dados simulados obviamente e fazer a manutenção do banco de dados dados simulados no caso se
a gente for fazer testes nesse banco tá e a manutenção quando o banco já tá em produção e claro de vez em quando a gente precisa fazer algum tipo de manutenção nesse banco limpezas de dados baps etc tá Então essas são as etapas do desenvolvimento de um banco de dados de forma bem simplificada ã aqui no nosso curso a gente vai passar etapa por etapa E a gente vai fazer um projeto completo do começo ao fim tá nesses primeiros vídeos a gente entende essa parte teórica bem conceitual o que que é isso o que que
é aquilo tá para depois ficar mais fácil durante o o processo de modelagem do banco do nosso banco de de exemplo fica mais fácil entender o que que tá acontecendo e saber o que tá acontecendo mas a gente vai modelar o banco do começo ao fim incluindo uma análise de requisitos né vou jogar no nos próximos vídeos aí um problema pro Qual a gente precisa ter um banco de dados tá a gente vai especificar e fazer uma análise e aí mandar bala nos projetos conceitual modelo lógico e modelo físico e as tarefas que a gente
vai realizar basicamente são essas daqui tá identificar entidades atributos e relacionamentos porque a gente vai trabalhar com modelo relacional no vídeo passado também falei a respeito disso a gente vai fazer a criação e Associação de Chaves primária estrangeira e outros tipos de chaves e aplicar um processo chamado de normalização tá para reduzir redundância e também para para que o banco de dados não apresente problemas futuros a gente vai ter uns vídeos para falar sobre normalização formas normais primeira segunda terceira formas normais e depois eu vou explicar para que que serve a desnormalização também tá que
é um processo que eventualmente a gente pode realizar legal bom E para finalizar que que a gente vai gerar Então a partir do do nosso próximo vídeo a gente vai falar sobre o modelo entidade relacionamento o mer o mer é um modelo que a gente utiliza para fazer Ah o nosso projeto de banco de dados né quando a gente fala em modelagem de dados significa na verdade que a gente vai trabalhar com esse tipo de modelo que consiste nos elementos entidades relacionamentos e atributos Então no próximo vídeo a gente vai falar o que que é
o mer e depois a gente vai falar separadamente O que que é uma entidade o que que é um relacionamento e o que que é um atributo pra gente poder criar o nosso projeto esse modelo ele é refinado né usando técnicas específicas como a técnica da normalização que eu citei agora a pouco e depois a gente vai implementar no banco de dados físico aliás nesse curso a gente também vai fazer isso no final de tudo quando a gente tiver modelagem pronta a gente vai criar o banco mesmo para mostrar que ele funciona Tá eu vou
puxar aí um sistema de gerenciamento de banco de dados pode ser uma skl o skl server Depende do que tiver disponível na hora a gente vai criar o banco e vai ver ele em funcionamento beleza pessoal então é isso aí esse foi um vídeo bem simples Ah bem tranquilo mas para passar essa informação do do que são os os níveis da modelagem para você ter uma noção assim teórica um pouco melhor tá E no próximo vídeo a gente começa a falar sobre o modelo entidade de relacionamento em si bom ã essa aqui é só uma
introdução a modelo entidade de relacionamento porque nos próximos vídeos a gente vai trabalhar com esse modelo para começar a construir ã uma modelagem de um banco de dados tá bem simples o modelo entidade racionamento que também é conhecido pela sigla mer Mr é um tipo de modelo conceitual tá no vídeo passado a gente falou sobre modelo conceitual lógico e físico então o mer é um tipo de modelo conceitual que a gente vai utilizar para descrever os objetos que estão envolvidos aí no domínio do sistema que a gente quer construir então se você tem um banco
de dados que que você quer construir a primeiro Primeiro passo é Criar o seu modelo conceitual e para isso a gente pode utilizar a ferramenta modelo entidade e relacionamento com o mer a gente consegue representar de forma abstrata toda a estrutura que vai constituir o banco de dados que vai ser criado tá e o mer é bem simples ele é composto por três tipos de objetos básicos entidades atributos e relacionamentos tá Então essa é uma forma de de sistemática para descrever o processo de negócio as entidades Elas têm os atributos tá e as entidades elas
se se relacionam entre si por meio de relacionamentos Essa é a ideia básica do mer tá que as entidades possuem seus atributos que são propriedades ou características que as descrevem e elas se relacionam entre si elas se associam entre si por meio de relacionamentos e a gente representa tudo isso utilizando diagramas específicos que a gente vai chamar de diagramas entidade e relacionamento ou der de Então na verdade a gente tem duas ferramentas aqui para utilizar o mer que é o modelo em si e o dare que é a representação gráfica desse modelo tá a gente
vai aprender a criar esses dois caras ao longo do tempo e o mer o modelo A Entidade de relacionamento ele foi criado pelo Dr Peter shan em 1976 é um modelo antigo já aqui você pode ver o Dr Peter Shen que é o criador do modelo entidade de relacionamento nesse slide aqui ah eu trago a ideia de de de modelo e diagrama Qual que é a diferença a distinção entre modelo em si e diagrama mer e there o modelo é uma ideia conceitual abstrata na qual você vai listar as entidades os atributos e os relacionamentos
entre essas entidades tá com informações sobre tipos de dados restrições e e outros itens e outros parâmetros já o d é uma representação gráfica dessas ideias Então você vai ter ali elementos gráficos que vão permitir representar no papel ou na tela do computador as entidades atributos e relacionamentos do seu modelo certo há várias formas de você criar e diagramas a gente vai trabalhar com os diagramas padrão do Peter Chen tá ã e o Del ele é composto assim com uma modelagem como modelo entidade de relacionamento de retângulos elipses e losangos e também linhas para interconectar
esses elementos Então os retângulos eles representam as entidades as elipses representam atributos das entidades os losangos eles vão representar os relacionamentos entre as entidades e para conectar todo mundo a gente utiliza linhas tá as linhas linos atributos com as entidades e as entidades com outras entidades por meio de relacionamentos tá Então no próximo slide a gente tem esses elementos entidade atributo e relacionamento entidade um retângulo atributo uma elipse o relacionamento esse losângulo e dentro desses elementos a gente escreve os nomes das entidades os nomes dos atributos e os nomes dos relacionamentos Então a gente tem
que dar uma identificação para cada um desses elementos colocando o nome aqui dentro tá a gente não vai fazer isso agora nesse vídeo a gente vai fazer isso a partir do próximo vídeo quando a gente vai estudar separadamente O que são entidades atributos e relacionamentos porque na verdade não é tão simples assim quanto parece existem regras específicas para você determinar o que que é uma entidade o que que é um atributo existem tipos diferentes de de entidades tipos diferentes de atributos e relacionamentos e a gente vai descrever cada um deles a partir do próximo vídeo
tá de modo que seja possível em breve criar algo como isso aqui esse é um exemplo de um diagrama entidade de relacionamento que eu peguei na internet tá é um exemplo parece complexo mas não é muito complexo tá é possível um banco de dados Ah se modelado de forma muito mais complexa do que isso de qualquer forma esse aqui tem uma uma boa quantidade de elementos aqui você pode ver os retangulo zinhos que são as entidades então por exemplo enfermeira paciente empregado Doutor recepci ista você vê as elipses que são os atributos das entidades e
você percebe que elas estão ligadas às entidades por meio das Linhas tá então por exemplo tem endereço nome pid né Identificação do paciente conectados ao paciente você vai notar também os losangos de relacionamentos que estão interconectando as entidades então o paciente tá ligado ao doutor né o médico por meio de um relacionamento e também tá tá ligado à sala né ao quarto dele por meio de um relacionamento relacionamento com o losang inho as cores são indiferentes você pode colocar na cor que você quiser não tem regra para isso tá pode inclusive não usar Cor nenhuma
tá a cor aqui só para dar um destaque E aí uma coisa interessante que você já vai perceber aqui nesse nesse exemplo de diagrama intidade de relacionamento é que algumas pequenas diferenças entre os elementos por exemplo aqui a gente tem um atributo tá um atributo e esse atributo ele tem seus próprios sub atributos veja que temos outros atributos conectados a ele e não diretamente a entidade na aula sobre atributos a gente vai entender o que que significa isso eh algumas linhas como essa daqui ó conectando o paciente com a conta são duplas Então existe um
motivo para para essa linha dupla também alguns dos retângulos das entidades também são duplos é um retângulo dentro de outro existe um motivo para isso a gente vai entender depois direitinho as diferenças entre os diversos tipos de entidades e aqui também aparece esse elemento que é o triângulo tá a gente vai entender o que que significa esse tipo de associação entre as entidades tá então é isso pessoal nesse vídeo eu apresentei para vocês assim bem suscintamente rapidamente o modelo entidade de relacionamento criado por PET Shen em meados dos anos 70 tá 76 para ser mais
exato e mostrei que além do modelo em si existe um diagrama que representa graficamente os elementos que você tá modelando a partir desse diagrama a gente consegue depois montar o modelo modelo lógico e depois o modelo físico para implementação no banco de dados em si mas antes vai ser muito importante a gente estudar separadamente e com mais detalhes O que são as entidades os atributos e os relacionamentos entre elas isso é o assunto dos nossos próximos vídeos no vídeo passado eu expliquei o que é o modelo entidade de relacionamento e disse para você vocês que
ele é composto de três elementos principais tá que são as entidades os atributos e os relacionamentos nesse vídeo a gente vai falar brevemente sobre o que são as entidades bom o que que é uma entidade Então dentro do modelo entidade relacionamento entidade é alguma coisa ou qualquer coisa que tenha importância pro usuário ou paraa organização e que necessite ser representado dentro do banco de dados então basicamente Um item que eu preciso representar no banco de dados isso a gente vai chamar de entidade Nem tudo é entidade obviamente e a gente vai ver posteriormente alguns exemplos
de entidades tá ã as entidades elas representam temas tópicos ou ainda conceitos de negócio tá a entidade ela pode ser física ou ela pode ser abstrata Tá mas ela vai sempre decair dentro de um desses três itens um tema um tópico ou ainda um conceito de negócios a gente vai chamar cada objeto né Cada ocorrência de uma entidade de Instância de entidade eu já vou voltar nesse assunto já já e como eu citei a entidade ela pode ter existência física ou ainda abstrata aqui eu tenho alguns exemplos de entidades são muito empregados em modelagem de
dados empregados livros vendas produtos são exemplos de entidades tá então os empregados de uma empresa trata--se de um de um de um conselho importante que a gente Ger geralmente representa no banco de dados livros uma biblioteca por exemplo Ah uma livraria Ela Vai representar livros no banco de dados Esse é um conceito de negócios né um tema um tópico as vendas tá um comércio qualquer representa suas vendas do banco de dados e também representa os produtos que foram vendidos legal então a entidade ela pode ser física como por exemplo os empregados os livros ou os
produtos são itens que existem no mundo físico e você pode tocar e as vendas por exemplo a gente pode citar como exemplo de entidade abstrata ou lógica tá ã baseada na existência das outras entidades e as entidades elas recebem nomes tá você viu que no nos exemplos do slide anterior eu chamei de Empregados livros vendas etc aquelas são as ideias né O que a gente vai representar no banco de dados mas na hora de você representar as entidades dentro por exemplo de um diagrama a gente tem que seguir algumas regrinhas algumas ideias de nomes né
Para que você possa criar nomes que façam sentido e que possam depois com facilidade ser utilizado na construção do banco tá então o nome tem que ser algo que representa de forma clara e objetiva a função da entidade e a gente sempre utiliza substantivos aí a gente pode ter por exemplo entidade produto cliente venda estoque catálogo entre outras e veja que aqui os nomes estão no singular tá é uma boa prática a gente criar os nomes das entidades no singular mesmo que a entidade em si no geral ela represente várias ocorrências de um elemento por
exemplo uma entidade produto na verdade ela vai representar vários produtos né vários produtos existentes na na no estoque da empresa por exemplo mas o nome da entidade a gente coloca no singular tá daqui a pouquinho eu vou mostrar algumas regras de nomeação das entidades antes disso onde eu coloco esses nomes quando quando a gente vai representar uma entidade utilizando um diagrama a gente coloca os nomes das entidades dentro de retângulos então um retângulo com o nome escrito dentro bem simples bem fácil né Bem bem tranquilo de trabalhar Isso é uma entidade então aqui eu tenho
algumas entidades sendo representadas de forma gráfica entidade cliente produto item de venda automóvel fornecedor e outras tantas a gente sempre Vai representar assim utilizando um retângulo as cores tanto faz não tem regra para as cores você escolhe a cor que for mais adequada desde que você não transforme o seu diagrama num carnaval tá tem que ser algo que seja bastante legível Mas o importante é o nome da entidade dentro do retângulo certo aos pouquinhos a gente vai construindo diagramas de entidade de relacionamento utilizando esses elementos e você vai ver onde eles vão se encaixando tá
e com relação a esse nome que vai aqui dentro tem algumas regrinhas importantes pra gente de seguir tá algumas regrinhas de nomeação para as entidades os nomes devem começar com uma letra É Legal São Regras Gerais na verdade que tem a ver com mais com boas práticas tá não necessariamente necessariamente é obrigatório seguir tudo que tá aqui mas é é importante que você siga um padrão um modelo para que o seu banco de dados não fique disperso e difícil depois por exemplo de de de atualizar ou mesmo de fazer um troubles shooting descobrir um problema
no banco de dados então é legal você ter tudo padronizado que sempre vai acabar facilitando para você então o nome começa com uma letra a palavrinha no singular porque a entidade representa uma ideia geral tá não deve ter espaço ou caracteres especiais isso é importante mais porque na lá na frente você vai transformar essa entidade numa tabela no manco de dados e vai ter que codificar isso usando por exemplo SQL então é interessante evitar os espaços caracteres especiais em alguns casos tá a não ser que seja imprescindível utilizar Ahã alguns bancos de dados inclusive aceitam
alguns caracteres especiais como por exemplo cifrão o sustenido que é o jogo da velha o underline underline Eu costumo usar bastante tá então são permitidos e alguns bancos de dados mas alguns sistemas de gerenciamento de bancos de dados não aceitam caracteres especiais por isso é importante pensar nisso na hora que tiver modelando tá é muito comum a gente modelar um banco sem saber de antemão qual vai ser o sistema de gerenciamento de bancos de dados que vai ser utilizado e às vezes a gente sabe qual vai ser tá quando você sabe qual é o banco
que vai ser usado é mais fácil você já de início seguir as regras específicas para aquele banco tá mas se você não souber siga essas regras aqui dentro de uma tabela os nomes das colunas devem ser únicos tá que que é tabela tá tabela é uma entidade basicamente a gente vai ver mais para frente um outro vídeo a relação entre entidade a palavra relação em si e tabela né O que que um tem a ver com o outro Mas no geral A Entidade ela vai dar origem a uma tabela lá na frente e essas tabelas
elas possuem colunas que representam ã os atributos as características ou as qualidades dos dados que estão sendo armazenados e as entidades os nomes de entidades também devem ser únicos assim como os nomes das colunas dentro de uma tabela os nomes das entidades devem ser únicos dentro do esquema esquema é a estrutura do banco de dados como um todo tá tudo que é representado dentro do banco de dados a gente vai chamar isso de esquema E então a gente não pode ter entidades eh com nomes repetidos tá um outro conceito importante pra gente finalizar aqui essa
a primeira primeiro contato com entidades é o conceito de Instância de entidade tá você viu que entidade é algo genérico né cliente qual cliente qualquer cliente H automóvel qual automóvel qualquer automóvel tá que seja representado no banco de dados mas quando a gente fala de Um item né de uma ocorrência específica dentro de uma entidade a gente tá falando de uma Instância de entidade e a ideia da instância de entidade inclusive é interessante para ajudar você a determinar se determinado item é uma entidade né ou esse ou se ele é um relacionamento ou atributo que
são os outros componentes do modelo entidade de relacionamento então a entidade em é uma descrição da estrutura né do formato das ocorrências é como se fosse uma receita ou uma planta né Então vamos pensar na entidade produto é uma descrição da estrutura daquela ocorrência específica né diz respeito a todo elemento que tem características de ser um produto por isso o nome produto mas os produtos são diferentes entre si então cada produto vai ser uma deade uma ocorrência específica daquela entidade aqui eu tenho um exemplo eu tenho exemplo de uma entidade que eu chamei de carro
tá entidade carro a gente pode inclusive chamar isso de classe de entidade se a gente pegar uma abordagem mais orientado a objetos Mas vamos chamar por enquanto só de entidade então entidade carro que que representa entidade carro um carro qualquer mas um carro qualquer o que que ele possui como é que a gente pode descrever ess carro pode descrito por meio do nome do seu fabricante seu modelo sua cor a placa o ano tá eh os acessórios e inúmeros outros tipos de descrição que a gente vai chamar de atributos estudados no nos próximos vídeos então
o carro é a entidade em si agora se eu pensar um carro específico de dentro de todos os carros possíveis eu vou ter uma Instância de entidade aqui eu tenho duas instâncias para mostrar de exemplo uma instância é por ex exemplo essa primeira aqui no qual o fabricante é a Ford o modelo é um Fiesta cor azul e a placa axj 4010 essa é uma Instância da entidade a outra Instância Citroen C3 vermelho buz 3667 totalmente diferente certo porém Ambos são carros portanto Ambos são exemplos são ocorrências de uma entidade chamada carro tá acho que
deixa um pouco mais mais fácil de entender e o que que é a entidade em si e o que que são as ocorrências da entidade porque é muito comum o aluno eh se confundir na hora de determinar o que que é uma entidade e o que que não é uma entidade então uma entidade é isso aqui é todo elemento para o qual eu posso ter instâncias legal ocorrências específicas com valores de qualidades diferenciadas veja que a cor em si ou o modelo por exemplo eles não são entidades aqui eles são qualidades de uma entidade carro
eles não existem por si só tá já o carro ele existe por si só trazendo toda essa informação aqui então a gente vai chamar isso de Instância de entidade bem o que que é um atributo o atributo ele é utilizado para descrever características de uma entidade tá então a gente já estudou entidades nos vídeos anteriores e vocês já devem ter percebido em alguns dos vídeos vídeos que eu falei por exemplo sobre cor do automóvel marca do automóvel preço do produto tá essas palavrinhas marca preço cor são na verdade os atributos das entidades citadas porque eles
descrevem as características daquelas entidades então fabricante modelo cor placa etc os atributos eles têm sempre um tipo de dados que a gente chama de domínio tá que vai especificar Qual é o tipo de dados que pode ser utilizado na hora de descrever aquele atributo ã o atributo também tem um nome em si e vai ter sempre o valor específico que é o valor que você armazena efetivamente lá na relação na tabela no seu banco de dados como é que a gente representa um atributo no diagrama a gente vai representar o atributo utilizando uma elipse tá
então você vai colocar uma elipse dentro da elipse coloca o nome do atributo que você quer representar e Então essa elipse é ligada à entidade utilizando um traço uma linha Ah aqui no meu exemplo eu tenho uma entidade departamento e essa entidade departamento tem entre outros um atributo chamado função a função do empregado por exemplo dentro do departamento Esse é um atributo do departamento então a palavra função dentro da elipse ligada ao retângulo que representa a entidade departamento opcionalmente a gente pode escrever assim também só o nome do atributo ligado por uma linha ao ao
a entidade em si ao retângulo que representa a entidade ã o padrão é utilizar elipse mas as vezes o diagrama fica muito poluído com muitas elipses em volta do do nome da entidade então a gente acaba optando por não utilizá-la desde que você consiga conectar direitinho o nome do atributo até é a entidade certo Então são duas formas da gente representar os atributos a forma oficial de acordo com o modelo entidade de relacionamento é utilizando a elipse muito bom agora você já sabe o que é um atributo vamos ver os tipos de atributos os atributos
eles podem ser classificados e é importante saber como classificar os atributos Porque dependendo do tipo de atributo você vai tratar ele de uma forma diferente na hora de criar suas tabelas do banco de dados então os atributos eles podem vir em várias formas por exemplo o atributo ele pode ser um atributo simples ele pode ser composto ele pode ser multivalorado ele pode ser um atributo determinante identificador entre outros esses aqui são os mais simples que a gente vai trabalhar nesse vídeo Tá então vamos ver as a As definições dos tipos de atributos que existem começando
pelo atributo simples também chamado de atributo atômico o atributo simples ele não tem n uma característica especial tá e na na prática o atributo simples ele é um atributo que é indivisível quando você olha para aquele atributo você não consegue derivar nenhum outro atributo a partir dele exemplo nome da empresa CPF de um cidadão CNPJ de uma empresa são atributos simples não dá pra gente quebrar o CPF em várias partes por exemplo para armazenar essas partes de formma separadas dentro de um banco de dados então ele é um atributo sim Aqui nós temos o exemplo
entidade empresa conectada a um atributo chamado nome legal atributo simples é sempre onde a gente quer chegar a ideia é que a gente sempre tem Unos atributos simples exceto quando for um atributo chave por exemplo mas é sempre o atributo atômico que facilita na hora de você criar as tabelas do banco agora se o atributo for diferente for por exemplo um atributo composto ele é um atributo que pode ser H desmembrado em atributos menores ele é subdividido em outros atributos o exemplo clássico é o endereço o endereço parece ser um atributo por si só mas
se você prestar atenção você percebe que o endereço ele pode ser quebrado em várias partes menores cada uma delas um atributo simples então na minha modelagem aqui eu tenha empresa endereço da empresa que na verdade ele pode ser constituído pela rua pelo CEP pelo bairro e outras informações podia ter adicionado aqui o número também a cidade tá e outras informações então o atributo endereço ele é composto tem que ficar bem esperto quando aparecer um atributo composto na sua na sua modelagem porque via de regra você vai ter que desmembrar esse cara nos atributos simples atômicos
para poder armazenar essas informações esses dados nas tabelas do banco tá não é e ideal armazenar o atributo composto inteiro Então não é legal colocar numa coluna do banco de dados o endereço completo da empresa porque depois quando você precisar fazer consultas você vai sentir uma grande uma enorme dificuldade por exemplo para consultar empresas de uma rua específica ou que estejam num bairro específico ou em um CP específico e assim por diante então atributo quando ele aparecer composto a gente vai sempre quebrar esse atributo em em seus sub atributos certo para obtermos os atributos menores
os atributos atômicos outro tipo de atributo atuto é o multivalorado um atributo ele é multivalorado quando ele pode ter mais de um valor pro mesmo registro o exemplo clássico é o telefone tá pro mesmo registro pra mesma Instância da entidade Você pode ter mais de um telefone por exemplo eu posso ter um telefone na minha casa eu posso ter um telefone celular eu posso ter um telefone comercial e na prática eu posso ter mais de um telefone por exemplo dois telefones celulares três já vi gente com três telefones celulares tá então esse a gente chama
de atributo multivalorado porque ele tem múltiplos valores e esse também é um atributo que costuma causar problemas a gente precisa pensar posteriormente como é que você vai armazenar esses valores no banco de dados você vai criar várias colunas uma para cada tipo de telefone ou você vai colocar esses telefones no local a parte tá mais para frente a gente vai aprender técnicas para lidar com esse tipo de atributo quando a gente falar sobre normalização lá na frente legal mas é importante saber identificar quando o atributo ele é multivalorado certo outro tipo de atributo é o
determinante o atributo determinante é aquele que é utilizado para determinar de forma única e exclusiva as instâncias da entidade lembrando Instância da entidade são as linhas os registros devo ter citado já atributo determinante em outro vídeo Tá mas agora explicando um pouco mais a fundo então atributo determinante é um que garante que uma Instância de entidade não vai ser Idêntica a outra Instância Ou seja que eu não vou ter dois registros idênticos mesmo que eu tenha informações iguais em vários Campos vários atributos com o mesmo tipo de informação nesse atributo eu não vou ter repetição
Esse é o atributo cujos valores nunca se repetem de uma Instância de entidade para outra ou de um registro para outro exemplo pode ser o CNPJ da empresa tá se eu tenho ã um uma tabela de empresas por exemplo cada empresa vai ter o seu CNPJ um exemplo clássico código de produto vou cadastrar os produtos no meu banco cada produto tem o seu código e nem não existem dois produtos usando o mesmo código mesmo que os produtos sejam muito parecidos por exemplo eu posso ter caneta esferográfica da marca a e caneta esferográfica da marca B
Ambos são canetas tá só que cada uma vai ter um código diferente no banco de dados aqui eu poderia ter nesse nesse meu exemplo um cadastro de empresas tá então eu tenho uma entidade empresa e eu diferencio as empresas entre si pelo seu CNPJ esse cara aqui é um atributo determinante e uma coisa interessante quando a gente for representar o atributo determinante a gente costuma passar um traço aqui embaixo do nome do atributo veja que o CNPJ Tá grifado assim eu bato o olho e já sei aquele ali é o atributo determinante esse cara aqui
não se repete em nenhuma linha do banco de dados certo então é importante não não se esqueça desse desse detalhezinho aqui na hora de fazer o seu diagrama colocar um sublinhado no atributo que for o determinante e temos os atributos identificadores que são chamados de Chaves tá ou Chaves a chave é utilizada para identificar uma Instância específica da classe identidade Então como a gente já viu o atributo determinante por exemplo ele pode ser uma chave CPF o código do produto tá o número de matrícula de um aluno na escola identificação de um setor só que
a diferença entre uma chave e um atributo determinante é que o atributo determinante nunca se repete já um atributo chave ele pode se repetir dependendo do tipo de chave que a gente tá tratando então existem as chaves únicas no qual o valor da chave é único pra entidade ela não se repete é determinante CPF por exemplo mas a gente também pode ser ter Chaves não únicas e a gente utiliza isso aqui para agrupar instâncias em categorias nas instâncias de classes de entidades ou instâncias de entidades em categorias exemplo clássico de de atributo ah identificador chave
não único é a chave estrangeira tá é um pouco confuso isso um pouco abstrato Mas não se preocupe a gente vai ter um vídeo para falar especificamente de chave primária e chave estrangeira Como determinar cada uma delas e como posteriormente como fazer a conexão entre elas aqui é importante lembrar que existem então atributos que permitem identificar eh as instâncias das entidades e esses atributos eles podem ser únicos ou determinantes não se repetem ou não únicos eles podem se repetir então a chave ela pode ser composta também consistindo de dois ou mais atributos combinados às vezes
para ter um atributo identificador a gente combina né dua dois atributos ou mais a gente também vai ter um vídeo específico para explicar como é que funcionam as chaves compostas legal bem completo o curso aqui bom então vamos vamos ver aqui a pra gente se encaminhar pro final do vídeo exemplo de representação de entidades e atributos Então agora eu tô juntando as coisas já peguei a entidade peguei os atributos e agora vamos começar a juntar para começar a dar forma ao nosso diagrama entidade de relacionamento na nossa modelagem aqui eu tenho um produto entidade produto
com alguns atributos eu tenho atributo código do produto quantidade em estoque nome do produto e o atributo preço tá são quatro atributos desta entidade produto veja ambos todos os quatro no caso estão ligados ao retângulo de produto dentro das elipses aqui eu optei por usar a elipse e um deles Tá grifado código do produto por ele Tá grifado Porque ele é o atributo determinante aqui nesse nessa entidade certo e eu também posso representar isso usando uma tabelinha Olha que legal na forma de uma relação temos a relação produto contendo seus Campos ou atributos os atributos
também podem ser chamados de Campos ou de colunas se você preferir e um deles Tá grifado que é o determinante esse cara Inclusive eu coloquei uma informação extra aqui do lado ó chamei de PK primary key em inglês que significa chave primária tá isso aqui é para indicar que esse campo nunca se repete a gente já sabe disso porque ele tem o grifado do determinante Mas é interessante identificar aqui também o tipo de chave que ele é o tipo de atributo que ele é tranquilo e para finalizar a gente também pode representar entidades e atributos
de forma textual como a gente vê aqui nessa linha é um código basicamente tá então aqui a gente tá representando de uma forma que serviria por exemplo pro modelo entidade de relacionamento mas não pro diagrama entidade de relacionamento que vai usar os retângulos e as elipses então Aqui nós temos uma entidade entidade produto que possui dentro dos parênteses os nomes de seus atributos código do produto nome produto preço quantidade em estoque e o código do produto Tá grifado porque ele é determinante certo e para finalizar tem uma coisinha que eu esqueci de citar voltar aqui
rapidinho no atributo multivalorado eu esqueci de citar o seguinte Olha só na hora de dar nome ou atributo multivalorado a gente coloca um asterisco antes do nome Esse asterisco é que indica Esse cara é multivalorado tá Ah eu posso ter vários telefones por exemplo dentro da minha relação certo então não esqueça de colocar o asterisco antes do nome de um atributo multivalorado e esse atributo como você já sabe assim como acontece com o atributo composto ele vai ter que ser trabalhado posteriormente por exemplo lá na hora da normalização do banco que é um processo bastante
interessante que a gente vai aprender mais para frente em vídeo passado eu falei sobre entidades tá eu expliquei um dos pilares da do modelo entidade de relacionamento que são as entidades agora vou fazer Vou traçar um paralelo entre entidade e relação tá você vai notar que em bancos de dados existe uma terminologia bastante vasta e às vezes você tem dois ou mais termos representando o mesmo conceito e às vezes dois ou mais termos representando mais ou menos o mesmo conceito Com pequenas diferenças entre si então entidade de relação é um desses casos Tá o que
que é uma entidade entidade é um conceito do mundo real algo do mundo real que você vai modelar lá dentro do seu banco de dados por exemplo o cliente ou um produto que a gente utilizou aí de exemplo nos outros vídeos e uma relação a relação Olha só definição técnica conjunto de registros e entre parênteses eu escreve aqui tuplas que é um um termo técnico de banco de dados que representa um modelo de uma entidade Ou seja a relação grosso modo representa uma entidade tá só que de uma forma um pouco diferente de que forma
diferente a relação Ela traz a ideia do conjunto de registros ela já vai entrar mais a fundo no que a entidade representa cada registro representa uma Instância da entidade então o foco da relação é nas instâncias de entidade não só na entidade como como uma ideia geral como modelo geral tá Ah e o conjunto de todas as instâncias tá lembrando que cada instância é uma ocorrência específica dentro de uma entidade o conjunto de todas elas com seus atributos a gente chama de relação certo Então na verdade é muito parecido o conceito de entidade de relação
só que na relação você dá mais ênfase pras instâncias entre si certo então a gente pode dizer o seguinte a relação ela uma tabela bidimensional a gente já parte daquela ideia do do retangulo Zinho com o nome da relação e expande isso para uma tabela bidimensional que tem as características específicas essa tabela ela tem linhas em colunas e ela é derivada de uma entidade Então para que que serve a entidade quando a gente tá modelando o banco de dados pra gente chegar numa relação que é que vai dar origem às tabelas que vão ser criadas
lá no banco tá as relações Elas têm como características as linhas e as colunas as linhas contém dados sobre as instâncias da entidade registros tá registro é o termo técnico para isso cada linha numa tabela de banco de dados ou numa relação representa uma Instância da entidade lembra do exemplo do outro vídeo a gente utilizou carros como exemplo Então eu tinha uma entidade de carro e Tinha alguns exemplos de carros né de instâncias da entidade de carro tá tinha lá for de Fiesta por exemplo todos aqueles dados do carro tá o o fabricante modelo placa
etc ah compõe um registro ou seja uma linha dentro de uma relação representando assim uma Instância daquela entidade já as colunas nessa tabela bidimensional que é a relação representam informações sobre a entidade as qualidades da entidade que a gente chama de atributos da entidade que é um assunto que a gente aborda em outro vídeo inclusive mais a fundo os atributos ã as relações Elas têm algumas características tá então como a relação é uma tabela bidimensional cada célula dentro dessa tabela vai ter um único valor armazenado sendo que célula é intersecção entre uma coluna e uma
linha certo é uma uma informação atômica que a gente tem ali dentro todos os valores na mesma coluna são sempre do mesmo tipo e a gente chama isso de domínio de dados tá isso é natural por exemplo todos os valores na coluna fabricante do carro são do mesmo tipo são palavras são textos Legal são liter Tris já os valores na coluna preço do veículo são todos valores monetários são sempre do mesmo tipo a gente chama isso de domínio dos dados as colunas na relação tem um nome único não pode ter repetição dentro de uma relação
nunca vai ter duas linhas idênticas ou seja as instâncias de entidade nunca se repetem são sempre diferentes entre si se houver repetição de uma Instância de entidade significa que você está se referindo ao mesmo item p P esse item tá duplicado dentro do banco de dados e pode ser eliminado uma das instâncias para manter apenas uma dentro delas dentro da da tabela ou relação tá e as relações geralmente geram as tabelas no banco as tabelas que a gente vai lá via SQL mesmo linguagem de banco de dados codificar para criar dentro do banco de dados
certo legal bem teórico né vamos ver na prática como que é a cara de uma relação então aqui um exemplo primeiro um exemplo básico de uma relação Vamos pensar na relação produto tá relação produto ã a partir de uma entidade produto que você tá modelando no seu banco você vai criar a tal da relação produto você vai derivar a relação produto que que a relação produto possui ela possui dados sobre os produtos por exemplo o ID do produto nome do produto e o preço do produto tá são Dados informações qualitativas e quantitativas sobre ah A
Entidade de produto tá pode ter mais do que isso sim as informações que a gente vai armazenar aqui é você que vai decidir quais são né você vai consultar o teu cliente tá você vai fazer uma uma análise de requisitos um levantamento de dados e vai determinar o que que vai ser armazenado ou não aqui no banco de dados na na sua relação e aqui embaixo eu tenho as linhas que contém os valores as instâncias da entidade então aqui eu tenho uma Instância de entidade da entidade produto aqui eu tenho outra instância o produto teclado
é uma Instância diferente o produto Webcam é uma Instância diferente tá sempre da mesma entidade produto certo que aqui a gente chama de relação e veja essa frase aqui interessante ó toda relação é uma tabela como você pode ver claramente por aqui mas nem toda tabela vai ser uma relação uma tabela só pode ser considerada uma relação quando ela quando ela atender eh as regras e normas de criação de tabelas para bancos de dados Então nem toda a tabela vai ser uma uma relação na verdade tabela tem que ser derivada aqui na modelagem de dados
tá e a gente pode expandir isso aqui para ficar um pouquinho mais completo então para finalizar esse vídeo no exemplo completo de uma relação Olha só esse exemplo aqui já tem mais informações continua sendo a entidade produto gerando uma relação mas aqui eu tenho Campos Diferentes né colunas com nomes diferentes que são os atributos que a gente estuda em outro vídeo código mercadoria quantidade em estoque fornecedor validade tá São qualidades ou informações sobre os produtos cada linha é uma Instância da entidade então por exemplo essa primeira linha Ah diz respeito às azeitonas pretas temos aqui
a quantidade em estoque quem é o fornecedor o código do produto e a data de validade legal então aqui são as linhas ã veja que uma das Linhas eu nomei como chave primária isso aqui a gente vai estudar no outro vídeo também existe uma uma coluna em particular que é muito importante pro banco de dados que recebe o nome de coluna chave também tem uma coluna chamada chave estrangeira que a gente vai estudar posteriormente que também tem a ver com a chave primária de certa forma colunas com restrições a gente vai estudar os constraints mais
para frente também mas tudo isso aqui pode ser representado e visualizado em uma relação e a relação sendo uma expansão de uma entidade Beleza então é isso caras nesse vídeo eu expandi um um pouquinho a ideia de entidade falando sobre relação e trazendo a ideia da entidade já para um mundo mais tabular tá de forma a ficar mais fácil entender e visualizar o que que a gente tá armazenando no banco nos próximos vídeos eu vou falar sobre tipos de entidades e também vou entrar mais mais a fundo no assunto do dos atributos tá ou colunas
que são esses ninhos que estão aqui dentro da minha relação representando cada um dos Campos beleza no vídeo passado a gente falou sobre atributos e no vídeo anterior a gente falou sobre entidades tá os os elementos que formam modelo entidade relacionamento ficou faltando a gente abordar Então os relacionamentos que é o que a gente vai fazer agora você deve saber como eu já citei em outros vídeos que as entidades elas se conectam entre si por meio dos relacionamentos tá então uma entidade ela tem relação com outra entidade de alguma forma no contexto do banco de
dados e a gente vai representar isso na hora de criar os nossos diagramas por meio do que a gente chama de relacionamento tá então o que que é o relacionamento é uma estrutura que vai indicar a associação entre elementos do tipo entidade e essa Associação ela pode ser entre uma ou mais entidades tá não entre duas ou mais entidades mas S entre uma ou mais entidades como a gente vai ver legal bom Por que que a gente precisa de um relacionamento na hora de modelar um banco de dados isso é muito importante tá E os
dados das entidades eles são armazenados em tabelas distintas como a gente vai aprender mais paraa frente tá então a gente tem que combinar esses dados para que a gente possa responder as perguntas dos usuários tá por exemplo vamos vamos supor que eu tenha ã uma um banco de dados de vendas de uma empresa e nesse banco de dados eu represento os produtos as vendas os clientes etc e eu tenho as entidades produto cliente venda estoque fornecedor etc Cada uma com os seus dados específicos armazenados e vamos supor então que o meu usuário a pessoa que
vai utilizar o banco de dados precise consultar nesse banco algum tipo de informação específica né Por exemplo saber quais produtos e em qual quantidade foram adquiridos por um cliente em particular Ah eu quero saber o que o Joãozinho comprou e quanto ele comprou a gente sabe que o Joãozinho que é um cliente ele ele tem seus dados armazenados numa entidade específica cliente e os produtos que foram adquiridos tem as suas informações armazenadas numa entidade produtos tá então pra gente poder responder essa pergunta que produtos um cliente específico adquiriu eu preciso que essas duas entidades possuam
alguma relação entre si senão não dá para saber que produto foi adquirido por quem e em qual quantidade Então essa é a importância de um relacionamento é poder eh associar incorporar as informações que estão em entidades distintas tá bom dito isto como é que a gente representa o relacionamento num diagrama entidade relacionamento o relacionamento ele é representado por meio de um losango como a gente tá vendo aqui ó eu escrevi relacionamento dentro dele e esse losango que é o relacionamento ele vai conectar no caso aqui duas entidades que eu chamei de entidade a a e
entidade B tá e a gente conecta essas entidades e o relacionamento entre si utilizando linhas bem simples nesse esquema de de diagramação tá então entidade a possui um relacionamento qualquer com a entidade B ou seja os dados da entidade a Tem algum tipo de associação com os dados da entidade B poderia ser cliente e o produto que o cliente adquiriu tá ou o produto e o fornecedor que fornece aquele produto tá o professor e o curso que ele ministra na escola e assim por diante A ideia é sempre a mesma certo então vai ter um
relacionamento entre eles muito bom uma uma característica importante do relacionamento é o seu grau grau do relacionamento o que que é o grau do relacionamento é uma definição do número da quantidade de entidades que estão relacionadas entre si de uma vez tá Ah o relacionamento ele pode ser de grau um grau dois grau TRS ou até maior grau 4 grau 5 apesar disso ser bastante raro tá e alguns deles a gente dá nome por exemplo o grau um a gente chama de relacionamento unário o grau dois a gente vai chamar de relacionamento binário grau três
relacionamento ternário e assim sucessivamente os relacionamentos mais comuns são os relacionamentos do tipo binário que significa relacionamento entre duas entidades B duas tá relacionamento unário relacionamento de uma entidade com ela própria relacionamento ternário relacionamento entre três entidades simultaneamente e assim sucessivamente Essa é a ideia n do do do grau de relacionamento certo muito bom aqui eu tenho um exemplo de um relacionamento unário também chamado de relacionamento recursivo ou ainda autorelacionamento tá nesse relacionamento eu tenho apenas uma entidade que aqui eu chamei de pessoa tá e o relacionamento dessa entidade é com ela própria por isso
relacionamento unário veja que dentro do losango que representa o relacionamento a gente escreve o nome do relacionamento geralmente o nome do relacionamento é um verbo que mostra qual é a associação entre as entidades nesse caso aqui uma pessoa ela se casa verbo casar com outra pessoa então como uma pessoa se casa com outra pessoa e ambas as pessoas pertencem à mesma entidade Então a gente tem um aut relacionamento veja que as linhas que conectam a entidade com o relacionamento saem ambas da mesma entidade com direção ao mesmo relacionamento então o relacionamento vai e volta certo
a gente chama isso aqui de relacionamento unário não é tão comum aparecer relacionamento unar em banco de dados mas ele também não é raro então de vez em quando você vai ver esse tipo de relacionamento aparecendo tá agora o relacionamento mais comum é o binário entre duas duas entidades aqui eu tenho um exemplo de relacionamento binário o relacionamento entre as entidades funcionário e setor de uma empresa Qual que é o relacionamento que nome a gente dá para esse relacionamento como é que a gente faz para para nomear um relacionamento você verifica Qual que é o
tipo de associação que existe entre uma entidade e a outra nesse caso aqui o que que o funcionário faz em um setor da empresa ele trabalha no setor por exemplo então a gente dá esse nome pro relacionamento trabalha que é um verbo conjugado então o funcionário trabalha no setor a gente pode também pensar no processo inverso olhando a partir de setor para chegar em funcionário em um setor trabalha funcionário tá quantos funcionários essa é uma outra história que a gente vai estudar em outro vídeo como determinar tá a ideia aqui é saber como relacionar as
entidades criando os relacionamentos se o relacionamento só existe quando existir realmente um verbo que consiga conectar as entidades então o funcionário trabalha em um setor da empresa em um setor trabalha um funcionário ou mais de um funcionário certo relacionamento binário e o relacionamento ternário também tem um exemplo de relacionamento ternário entre três entidades aqui eu tenho as entidades médico paciente e medicamento e a ideia é a seguinte o médico ele vai prescrever um medicamento para um paciente veja que esse processo envolve três entidades distintas A Entidade médico que vai fazer a prescrição A Entidade paciente
que vai receber a prescrição e a entidade medicamento que é o conteúdo da prescrição tá então eu preciso dessas três entidades para poder realizar essa prescrição de medicamentos se eu tivesse só médico e só paciente não daria para prescrever o medicamento porque falta o medicamento em si se eu tivesse só médico e medicamento sem o paciente ele ia prescrever para quem esse medicamento e se tiver só paciente medicamento ficou faltando médico para fazer a prescrição tá Seria uma automedicação aí que não é recomendado então o médico ele prescreve outro verbo o medicamento para um paciente
a gente coloca os retangulos das entidades conectados a esse losango aqui que representa como a gente já viu um relacionamento certo muito bom pessoal no outro vídeo quando eu falei sobre entidades eu expliquei que as entidades posteriormente durante o processo de modelagem se transformam em tabelas então aqui eu tenho um gostinho de como isso vai vai ficar mais paraa frente tá eu tenho aqui duas tabelas que são na verdade representação de duas entidades cliente e vendas que estão conectadas entre si aqui esse tipo de diagrama eu tirei de um software né que faz modelagem e
mostra visualmente e ele mostra modelar a o relacionamento entre as tabelas apenas com essa linha veja que em um dos lados tem uma chavezinha amarelinha e do outro lado um simbolozinho aí de infinito tá esses símbolos eles têm significados que a gente vai aprender também ao longo do curso mas basicamente o que tá escrito aqui é o seguinte nós temos um relacionamento entre cliente e vendas tá por exemplo cliente eh efetua venda ou faz uma venda tá ou você pode pensar ao contrário também a venda é realizada para um cliente tá aqui acho que compras
ficaria até mais mais adequado é importante na hora que você vai dar nome às entidades pensar direitinho no nome que você vai aplicar porque essa entidade ela vai se relacionar com outra e às vezes um nome parece muito bom mas na prática quando você faz o relacionamento ele fica meio estranho tá então é sempre bom pensar direitinho nisso mas para frente eu vou falar sobre um esquema chamado dicionário de dados que é basicamente um documento que a gente utiliza para descrever os elementos que você tem no banco de dados incluindo as entidades os relacionamentos tá
e lá a gente vai falar um pouco mais sobre os nomes dos objetos então aqui a gente tem o relacionamento entre elas Qual o grau desse relacionamento aqui is é um relacionamento binário porque nós temos duas entidades veja que nesse caso aqui a gente também tem listadas dentro das tabelas os atributos de cada uma delas então o cliente tem o ID do cliente uma identificação seu nome e seu CPF e pras vendas a gente tem o ID da venda o ID do cliente do produto da data da venda tá veja que é importante ter o
ideia do cliente para você poder identificar para para quem foi realizada aquela venda para qual cliente tá e aqui a gente já começa a introduzir um pouquinho e a ideia de de Chaves né de associação via Chaves chave primária chave estrangeira tá que é um assunto que a gente vai ver inclusive no próximo vídeo legal então aqui a gente tem um relacionamento binário que veio de duas entidades e se transformou em duas tabelas E é assim que a gente faz então o relacionamento entre várias tabelas né entre duas ou mais tabelas ou até mesmo num
relacionamento unário cada linha de dados numa tabela é identificado de forma única usando uma chave primária que é o atributo identificador que a gente estudou no último vídeo o identificador Exclusivo em uma outra tabela você vai ter uma outra chave um outro atributo especial que a gente vai chamar de chave estrangeira e esse cara que vai ser utilizado para fazer a conexão entre as duas tabelas então na prática o relacionamento é uma ligação entre atribut tá então como é que a gente pode definir um um relacionamento na hora de criar o banco de dados é
a ligação entre dois atributos de duas tabelas separadas ou mais e esses atributos recebem nomes especiais por exemplo chave primária e chave estrangeira e a chave primária de uma tabela pode se relacionar com a chave estrangeira que está em outra tabela no próximo vídeo A gente também vai falar mais a fundo sobre esse esquema de Chaves delinear direitinho o que que é uma chave primária chave estrangeira Como determinar quem é quem e como fazer a ligação entre elas legal Esso aqui é só uma colher de chá e também para deixar um pouco mais claro na
prática o que que é o relacionamento em si tá porque é fácil entender o que é uma entidade você tem a ideia da entidade na sua cabeça qu a gente fala em produto é óbvio produto é um item qualquer que a gente vende por exemplo esta chave aqui é um produto ela é física ela existe no mundo real tá é fácil lembrar disso ela tem atributo ela tem cor material de ela do qual ela é feita o diâmetro dela tamanho são atributos da chave também é fácil entender do que se trata os atributos Mas o
relacionamento ele é um pouco mais abstrato porque na verdade é uma associação entre esse elemento com outros elementos do banco tá então essa ideia aqui da chave primária com chave estrangeira talvez deixe um pouquinho mais fácil entender a entender que a gente tem um atributo sendo conectado a outro atributo certo e é isso aí pessoal então a gente falou um pouquinho de forma introdutória e rápida nesse vídeo sobre relacionamentos no modelo entidade de relacionamento os nossos próximos assuntos serão esses aqui que vocês estão vendo a gente vai falar de Chaves eu acabei de falar e
cardinalidade um assunto importante depois diagramação mostrar como é que a gente começa a diagramar um um uma modelagem maior e também mostrar outras formas de diagramas que existem não só o Peter shan mas existem outras formas e aí a gente vai falar sobre alguns assuntos importantíssimos na hora de você fazer o seu ajuste fino do banco de dados que são as restrições de integridade e as dependências depois vem o dicionário de dados Depois tem mais outros assuntos ainda um pouquinho mais paraa frente desta vez vamos falar sobre um conceito extremamente importante que é o conceito
de Chaves que que é uma chave uma chave consiste em uma ou mais colunas atributos de uma relação ou tabela cujos valores são usados para identificar de forma exclusiva ou uma linha um registro ou um conjunto de linhas tá uma chave ela pode ser única certo identificando só uma única linha ou ainda não única identificando mais de uma linha ao mesmo tempo ã existem vários tipos de chaves tá Ah as chaves únicas elas podem ser uma chave candidata composta primária ou surroga e uma chave não única é uma chave estrangeira eu vou falar um pouco
sobre cada um desses tipos de chaves na sequência Então vamos começar falando sobre as chaves candidatas uma chave candidata é uma coluna um atributo ou ainda um grupo de atributos que tem o potencial para se tornar uma chave primária a não são Chaves primárias ainda a gente tá na modelagem identificamos Chaves candidatas que tem o potencial para se tornarem uma chave primária e aí a gente vai escolher uma ou mais dessas colunas para serem a chave primária caso Você tem uma chave candidata que não seja escolhida para ser uma chave primária ela vai ser conhecida
como chave alternativa tá porque ela é uma alternativa a chave primária oficial da tabela então por exemplo se eu tiver uma tabela de alunos com registros de alunos eu posso ter um campo um atributo chamado número de matrícula e um outro atributo chamado CPF esses dois atributos podem fazer identificação de forma exclusiva dos registros ou seja eles podem ser uma chave primária e aí eu vou escolhia um deles para ser a chave primária pode ser o número de matrícula porque cada aluno tem o seu número de matrícula E isso não se repete ou pode ser
o CPF porque cada aluno tem o seu CPF isso também não se repete tá então eu posso escolher um deles para ser chave primária e o outro fica sendo a chave alternativa Então essas essas daqui são as chaves candidatas bom e a chave primária então a chave candidata ela pode se transformar numa chave primária tá a chave primária é uma chave candidata que foi escolh ida para ser a chave principal na relação na tabela então a chave primária chave principal da tabela para que que serve a chave primária a chave primária é utilizada para identificar
de forma exclusiva ou seja única sem repetição os registros em uma tabela então cada registro na coluna de chave primária vai ter um valor que vai ser sempre diferente de todos os demais registros naquela tabela então não pode ter repetição de valores e também não pode ter valor nulo no numa chave primária tá e em inglês a gente chama chave primária de primary Key e geralmente a gente utiliza abreviação PK de primary Key para identificar a chave primária lá nos nossos diagramas tá então chave primária é de extrema importância na hora de criar uma tabela
um outro tipo de chave que a gente vai vai ter é a chave estrangeira Tá o que que é uma chave estrangeira ela é uma coluna em uma tabela também que vai estabelecer o relaci com a chave primária de outra tabela então a gente já estudou aqui no curso o que são relacionamentos tá e como é que a gente estabelece o relacionamento entre duas entidades entre duas tabelas posteriormente tá o relacionamento então ele é estabelecido por meio do uso de Chaves primárias e Chaves estrangeiras a chave primária de uma tabela conectada à chave a chave
estrangeira de outra tabela tá a chave estrangeira ou foreign Key inglês abreviada por FK é utilizada pra gente saber com qual registro em uma tabela o registro da tabela atual está relacionado por exemplo ã vamos supor que eu tenho uma tabela de biblioteca tá que tem uma coluna de livros e uma uma uma tabela de livros e uma tabela de autores tá como é que eu sei qual é o autor de um determinado livro eu tenho que ter na minha tabela de livros além das colunas que identificam os livros uma coluna que identifique o autor
daquele livro Essa coluna vai ser uma chave estrangeira conectada à chave primária lá da tabela de autores tá que vai ter então a identificação dos autores e uma chave primária certo com ID de autor por exemplo se não ficou muito Claro não se preocupe mais PR frente a gente vai trabalhar extensivamente em cima disso na parte prática outro tipo de chave que a gente pode criar a chave composta como o nome diz uma chave composta ela é composta com constitua de dois ou mais atributos simultaneamente duas ou mais colunas Quando que a gente tem uma
chave composta a gente vai utilizar esse tipo de chave Quando você quiser criar por exemplo uma chave primária numa tabela mas não conseguir identificar nenhum atributo que seja exclusivo então todos os atributos que você tem ali naquela tabela naquela entidade eles em algum momento acabam tendo valores repetidos então o atributo sozinho não pode ser uma chave primária porque lembra da característica da chave primária não pode ter repetição em seus valores Então nesse caso a gente pode combinar duas ou até mais colunas para obter um valor exclusivo um valor que não se repete e aí a
gente vai ter uma chave composta então uma chave primária pode ser uma chave primária composta por exemplo tá então a gente utiliza sempre a chave composta quando não consegue usar uma única coluna para obter valores exclusivos dos registros certo e a chave surrada surrogate key ou ainda como a gente costuma falar em português A Chave substituta essa chave é um valor numérico único ou seja não se repete que a gente adiciona numa relação numa entidade para servir como chave primária uma outra forma da gente criar Chaves primárias Então vamos supor de novo mesmo caso anterior
a gente tem uma tabela uma relação ou entidade que tem uma série de atributos Mas nenhum deles ser para ser a chave primária a gente pode optar por criar uma chave composta Ou a gente pode utilizar uma chave substituta como é que funciona isso Eu invento uma coluna eu crio uma coluna Extra tá boto lá um número sequencial por exemplo nessa coluna e digo que essa coluna vai ser a chave primária Então vai ter um número sequencial como se fosse uma espécie de um código tá que vai identificar de forma exclusiva cada registro tá não
é o ideal trabalhar com isso o ideal é sempre uma chave primária que tenha algum tipo de relevância pro usuário porque a chave substituta não tem significado pro usuário geralmente a gente inclusive esconde nas aplicações nem mostra esses valores os valores dessa coluna pro usuário quando você cria a aplicação e a gente utiliza no lugar da chave primária composta se você não quiser ou não puder usar uma chave primária composta você vai ter você vai ter que criar uma chave surroga ou substituta certo Então essa daqui é a ideia bom e como é que a
gente cria as chaves primárias estrangeiras como é que a gente identifica e cria tem alumas instruções que são importantes a gente já saber desde já então por exemplo não é possível haver valores duplicados na chave primária então para identificar a chave primária partindo da chave candidata e depois chegando na chave primária você vai ter que encontrar Campos cujos valores não sejam duplicados se você não encontrar já sabe tem que trabalhar com chave composta ou substituta no geral não é possível alterar o valor da chave primária tá ah na prática é possível mas o ideal é
que você não mude esse valor para evitar o problema de Em algum momento você ter repetição de dados n que vai causar conflito no banco as chaves estrangeiras são baseadas em valores de dados são classificadas como se fossem ponteiros lógicos né que apontam de uma tabela para outra que mais o valor da chave estrangeira tem que correr responder a um valor que exista numa chave primária associada tá ou então deve ser nulo isso é muito importante como a chave estrangeira ela conecta uma tabela a outra tabela por meio de um relacionamento e chave primária então
o valor que vai aparecer na coluna de chave estrangeira ele tem que corresponder a um valor que está lá na chave primária tá e ele sempre deve referenciar a chave primária ou em alguns casos muito especiais uma coluna de chave única que não seja chave primária mas que tem uma restrição uma constraint do tipo Unique que a gente vai aprender mais paraa frente do que se trata tá é um pouco abstrato esse conhecimento mas mais para frente com conforme a gente for modelando bancos de dados na prática os bancos de exemplos vai ficar mais mais
fácil de entender o que tá sendo dito certo mas de qualquer forma a gente tem uma palhinha disso aqui ó aqui eu tenho um exemplo de chave primária e chave estrangeira em três tabelinhas de um banco fictício aqui um banco ã que tem três tabelas três relações ou entidades se preferir que são a entidade tbl clientes tbl vendas e tbl produtos tá lembrando que a gente tá falando de entidades lá do modelo entidade de relacionamento mas você já sabem que a entidade no geral ela vai acabar eh se transformando em uma tabela ou mais de
uma tabela posteriormente n depois de a gente aplicar alguns processos na modelagem dos dados então aqui eu tô mostrando as tabelinhas com os seus respectivos atributos dessa forma um pouco mais expandida que é para ficar um pouco mais claro esse o o conceito de Chaves primária estrangeira e relacionamentos Tá mas a gente vai trabalhar sim com com as entidades criando os modelos e os diagramas entidade de relacionamento nos próximos vídeos então aqui a gente tem a as três tabelas ou entidades clientes vendas e produtos veja que eu identifiquei ã em todas elas nas três tabelas
o os atributos ID cliente nome cliente CPF data de nascimento PR os clientes pras vendas tem ID venda ID cliente ID produto quantidade e data de venda e pra tabela de produtos ID produto nome produto categoria E preço do produto identifiquei quem é a chave primária em cada uma delas então na tabela de clientes chave primária é o ID cliente tá como PK e veja só tá sublinhada como eu expliquei no outro vídeo que deve ser na tabela de vendas a chave primária ide venda e na tabela de produtos é o ID produto então esses
campos são Chaves primárias porque eles não se repetem cada cliente tem seu id não há dois clientes com o mesmo ID cada venda tem o seu ID não há duas vendas com o mesmo ID cada produto tem o seu ID da mesma forma certo e como é que a gente conecta as tabelas o grande segredo tá aqui ó na tabela Central na entidade tbl vendas aqui eu tenho identificação da venda a quantidade e a data da venda só que aí fica a seguinte pergunta venda do que para quem ou seja eu vendi que produto e
para quem eu vendi isso eu preciso identificar essas informações também para isso eu preciso conectar ou estabelecer um relacionamento entre a tabela de vendas e as tabelas de clientes e produtos que tem essas informações as informações sobre os clientes e sobre os produtos para estabelecer esse relacionamento eu coloco na tabela de vendas esses dois Campos ID cliente e ID produto que são os mesmos que estão na tabela de clientes e na tabela de produtos como Chaves primárias nessas outras duas tabelas e aqui eu vou chamar esses dois Campos de FK foreign Key ou chave estrangeira
tá Então veja que a chave estrangeira ID cliente de vendas está conectado por essa linha azul até a chave primária da tabela clientes ID produto conectado a ID produto chave primária de tabela de produtos na hora de criar o banco de D vai ter um comando SQL que você vai digitar que você vai criar que vai fazer esse relacionamento aqui na prática tá E aí você vai conseguir estabelecendo esse relacionamento gravar dados e fazer consultas as por exemplo vendas armazenadas no seu banco de dados legal então essa daqui é a ideia básica da gente utilizar
chave primária e chave estrangeira chave primária identificando cada registro e a chave estrangeira permitindo que a gente crie os relacionamentos entre as tabelas entre outras coisas e as demais colunas são colunas simples tá nome de cliente CPF data de nascimento Cada uma com o seu tipo de dados etc e falando em tipo de dados vou aproveitar esse vídeo aqui para rapidamente falar sobre o conceito de domínio tá então introduzir esse conceito de domínio pra gente poder encerrar o vídeo sobre Chaves que que é um domínio em banco de dados o domínio é utilizado pra gente
definir os tipos de dados e também a gente a gente utiliza para especificar quais valores são válidos dentro de um campo ou seja dentro de um atributo no meu exemplo aqui eu peguei a tabela clientes desse meu exemplo de chave primária e chave estrangeira e detalhei ã os campos os atributos que a gente tem lá então os quatro Campos estão nessa tabelinha o ID cliente que é chave primária nome cliente CPF e data de nascimento e eu Especifique Qual é o tipo de dado que vai ser armazenado nesses Campos Esse é o conceito de domínio
Então qual que é o domínio de dados do id cliente é número o ID do cliente vai ser um número que pode ser sequencial ou não e ele vai ter um tamanho aqui por exemplo eu estabeleci que ele vai ter quatro caracteres ou quatro dígitos pode ter mais ou pode ter menos depende da análise que você fizer no seu banco tá já o campo nome cliente ele vai ser do tipo caracter Ou seja é letras números símbolos talvez e o tamanho dele vai ser 4 caracteres porque o nome do cliente é mais extenso o CPF
do cliente vai ser caracter também tamanho 11 caracteres poderia ser número CPF cliente Algumas pessoas dizem que a gente pode utilizar número como CPF cliente mas o ideal é utilizar caracter tá porque muitas vezes você tem que completar com zeros à esquerda por exemplo CPF armazenado ou quer representar um traço ou Nunca se sabe pode ser que um dia venha ter letras no seu CPF como o RG tem Apesar que o CPF é um é um valor calculado né De qualquer forma Ahã a gente costuma utilizar o tipo de dado caracter e mais paraa frente
a gente vai falar sobre isso também e data de nascimento tipo de dado data e hora tamanho oito caracteres por exemplo para armazenar dois dígitos para mês dois para dia e quatro para ano ano com quatro dígitos tá então essas informações a gente vai chamar de domínio de dados legal claro que tudo pode ser diferente do que tá aqui como a gente discutiu sobre o CPF a gente pode fazer de forma diferente também tudo vai depender da análise que você fizer na sua modelagem Tá bom então é isso nesse vídeo a gente falou aí um
pouquinho sobre as chaves e a gente se detalhou um pouquinho melhor chave primária e chave estrangeira eu introduzi de leve o conceito de domínio de dados a gente vai vai se aprofundar mais nesse assunto futuramente legal a gente vai amarrando aos poucos esses conceitos todos modelagem porque tem muita coisa pra gente ver muita coisa para aprender e os conceitos eles ficam um pouquinho esparsos às vezes mas a gente vai amarrando aos pouquinhos E aí a partir dos próximos vídeos a gente vai ver esses assuntos aqui vamos falar sobre cardinalidade também que é importante mostrar a
diagramação falar sobre as restrições de integridade dependências criar um dicionário de dados e aprender a fazer a normalização dos dados que que é a cara cardinalidade cardinalidade é um conceito que diz respeito à quantidade ou número de itens que se relacionam nas entidades Então você vai ter uma entidade a e uma entidade B por exemplo com item se relacionando entre si quantos itens de uma entidade podem se relacionar com itens de outra entidade E vice-versa é disso que vai tratar a cardinalidade a cardinalidade ela pode ser máxima ou mínima Ou seja a quantidade máxima de
itens que podem se relacionar e a quantidade mínima de instâncias da entidade ou de itens que podem se relacionar entre as entidades certo a cardinalidade máxima então é o número máximo de instâncias de uma entidade que podem participar do relacionamento tá no máximo você pode ter de um até n elementos ou instâncias de entidade participando de um relacionamento que seria a gente costuma chamar isso de um ou muitos e a cardinalidade mínima que é o número mínimo das instâncias de entidade que Obrigatoriamente devem participar do relacionamento ã pode ser um pode ser muitos e pode
ser zero também significando que eu posso ter uma Instância de entidade participando num relacionamento muitas instâncias ou até mesmo nenhuma dependendo do relacionamento em si certo então é importante a gente ter em mente esse conceito das cardinalidades máxima e mínima porque lá na frente vai ajudar bastante ah na normalização do banco de dados pra gente poder finalizar A modelagem certo como é que a gente representa as cardinalidades nos diagramas entidade relacionamento usando a anotação do Peter Shen a gente vai representar assim bem próximo à entidade a gente vai colocar dentro de parênteses esses dois números
o primeiro número representa a cardinalidade mínima e o segundo número representa da cardinalidade máxima alternativamente a gente pode usar um número Só tá representando as cardinalidades máxima e mínima de uma só vez que vai depender da combinação delas como a gente vai ver um pouquinho mais para frente não é obrigatório colocar os parênteses mas geralmente a gente coloca por convenção certo isso aqui é para anotação do Peter Shen existe uma outra anotação que é anotação pé de galinha ã que também permite representar as cardinalidades min máximo nessa anotação a gente vai ter que um traço
na vertical uma barrinha na vertical significa um ã um círculo representa zero então aqui a gente consegue representar o zero e esses traços aqui inclinados em ângulo significam muitos então por exemplo no primeiro item aqui a gente tem cardinalidade mínima um cardinalidade máxima também um ou seja aqui é um a gente poderia escrever apenas um se estivéssemos usando a o diagrama de Peter Shen no segundo exemplo mínimo um máximo muitos Então esse elemento aqui significa muitos que parece o tal do pé de galinho nesse terceiro exemplo de zero a um então eu vou ter de
zero a uma Instância participando do do relacionamento e no último exemplo de zero a muitos tá então é bem simples de de trabalhar com com esse tipo de diagrama também cardinalidade mínima é o primeiro elemento cardinalidade máxima o segundo que fica coladinho na entidade muito bem dito ISO vamos ver um exemplo básico de cardinalidade aqui eu tenho duas entidades cliente e encomenda e um relacionamento chamado solicita tô usando anotação pé de galinha com relação às notações Não se preocupe no próximo vídeo da série eu vou falar sobre diagramação e vou mostrar vários tipos de diagramas
diferentes para você con tá Mas no geral aqui no curso a gente utiliza anotação de peterin e eventualmente pé de galinha como a gente tá vendo hoje então nesse exemplo aqui a gente tem cliente encomenda como é que a gente determina a cardinalidade nesse relacionamento a a brincadeira é assim você toma uma das entidades por exemplo cliente e vai tentar descobrir quantas instâncias da outra entidade podem se relacionar com ela então para um cliente quantas encomendas eu posso ter ou o cliente pode ter o cliente ele pode ter no mínimo uma e no máximo muitas
encomendas certo é o que representa essa cardinalidade aqui de um a muitas veja que a entidade cliente tá aqui e a cardinalidade tá do outro lado coladinha encomendas porque ela se refere à quantidade de encomendas Então essa é uma parte da história agora a gente também tem que olhar o sistema na direção inversa pegando a entidade encomenda e fazendo a pergunta quantos clientes podem fazer uma encomenda então para uma Instância de encomenda quantos clientes eu posso ter então para uma encomenda eu posso ter no mínimo um e no máximo um cliente então de acordo com
a regra de negócio que gerou esse diagrama um cliente pode fazer de uma a n encomendas ou seja muitas encomendas mas uma encomenda só pode ser solicitada por um cliente no mínimo um no máximo um cliente portanto um cliente só então a cardinalidade mínima é um cliente para uma encomenda e a máxima um cliente para muitas encomendas legal então esse é um exemplo básico de cardinalidade E aí a gente pode aplicar a cardinalidade nos diversos tipos de relacionamentos tá ã se a gente quiser representar essa mesma esse mesmo exemplo de cardinalidade usando a anotação do
Peter Shen é bem simples as duas entidades permanecem aqui cliente encomenda E aí em vez da anotação pé de galinha a gente coloca os números entre parênteses então cliente quantas encomendas pode fazer no mínimo uma no máximo n muitas uma encomenda pode ser solicitada por quantos clientes no mínimo um no máximo um cliente beleza e aí a gente vê então os relacionamentos com com vários exemplos relacionamento Binário um para um Então esse é um tipo de relacionamento bastante comum de aparecer na nas modelagens ã quando a gente tem um relacionamento um para um significa que
uma Instância da entidade em uma das entidades tá relacionada apenas e tão somente com uma Instância única na outra entidade por isso um para um no meu exemplo aqui entidade professor e entidade armário o professor usa um armário aí a pergunta que a gente faz é um professor usa quantos armários por vez Então o professor vai usar no mínimo um no máximo um armário portanto é um armário só e o armário é usado a voz passiva né é usado por quantos professores um armário que a gente tá se referindo a portinha do armário na verdade
é usado por no mínimo um no máximo um professor Então a gente tem um relacionamento um para um Lembrando que isso aqui Depende muito da regra de negócio do do banco que você tá modelando tá nem sempre o o bom senso traz a resposta pra sua modelagem Às vezes a empresa trabalha de forma diferente você tem que modelar de acordo com o que a empresa precisa não com o que você acha que é tá aqui nesse diagrama eu coloquei um um desenho aqui embaixo um diagrama de de conjuntos para facilitar o entendimento dessa dessa ideia
da cardinalidade Então veja que eu coloquei quatro professores Professor 1 2 3 e 4 né de p1 a P4 e quatro armários de A1 até A4 e essa linha vermelha aqui indica exatamente Ah o relacionamento entre o professor e o armário veja que para cada professor existe apenas um armário então o relacionamento é um para um P1 com A1 P2 com A2 assim sucessivamente beleza Olha que legal bom esse é o relacionamento um para um aqui usando pé de galinha tá vou pular esse aqui que é a mesma coisa se eu quiser usar a anotação
do Peter shan Olha que interessante basta substituir n o relacionamento colocando entre entre dentro né do losango entre nada e os números da cardinalidade entre parênteses aqui do lado das entidades então um professor para um armário um armário para um professor e usando a anotação estendida né representação estendida da cardinalidade você coloca a mínima e a máxima aqui a mínima é um a máxima é um Em ambos os lados por isso um para um Eu sempre gosto muito de usar essa representação de cardinalidade estendida mostrando explicitamente o mínimo e o máximo porque isso ajuda a
gente lá na frente a modelar o banco aí com com mais desenvoltura certo muito bem e se a gente tiver um relacionamento um para muitos no relacionamento um para muitos uma uma Instância de entidade numa entidade certo uma ocorrência né de uma entidade pode se relacionar a múltiplas instâncias em outra entidade então um elemento de uma entidade pode estar ligado a vários elementos de outra entidade então a gente chama isso de relacionamento um para muitos ou um para n um dois pontos n assim que a gente vai representar a ideia do um para n no
meu exemplo eu tenho funcionário departamento é a gente faz aquela pergunta nos dois sentidos de novo um funcionário trabalha Olha o nome do relacionamento aqui trabalha um funcionário trabalha em quantos departamentos nesta empresa então ele vai trabalhar no mínimo em um ou seja Obrigatoriamente ele tem de estar em um departamento e no máximo em um Obrigatoriamente Ele só pode trabalhar em um departamento então aqui é o lado um da coisa E aí eu eu tenho que fazer a pergunta também no sentido inverso em um departamento quantos funcionários trabalham no mínimo um departamento não pode estar
vazio e no máximo n Olha só isso aqui represento o n ou seja posso ter vários funcionários no departamento aqui eu não tenho não tenho como representar o número máximo Tá existem notações que permitem representar o número máximo inclusive exato mas aqui significa n porque não dá para saber quantos funcionários a gente vai ter no departamento e olhando o diagrama de conjuntos embaixo fica bem claro né tem os funcionários de F1 F4 e dois departamentos de D1 e D2 e você percebe claramente que o funcionário um pertence somente ao departamento um o funcionário do também
o TRS e o 4 pertencem exclusivamente ao departamento do mas no departamento D1 Eu tenho dois funcionários Ou seja é o n muitos legal e aí e aí eu tenho isso aqui eh representando com o diagrama com o o Dr de Peter Shen funcionário departamento um departamento para n funcionários tá então no mínimo um funcionário no máximo n no mínimo um departamento no máximo um departamento então eu poderia substituir 1,1 por 1 e 1 VN por n tá você pode até fazer uma uma espécie de cálculo né se você tiver notação cardinalidade mínima e máxima
e quiser representar só um número de resumo você soma 1 + 1 = 1 e 1 + n sempre é igual a n certo isso no relacionamento um para muitos Ainda temos um outro tipo de relacionamento que é o relacionamento muitos para muitos também chamado de n para m n do pontos M nesse relacionamento várias instâncias de uma entidade podem se relacionar a várias instâncias em outra entidade então um elemento de uma entidade pode se relacionar a vários em outra e um elemento da entidade B também pode se relacionar a vários na entidade a por
isso n para n ou muitos para muitos na representação a gente tem aqui mínimo um máximo muitos Em ambos os sentidos por exemplo cliente vai comprar pacotes de viagem então cliente adquire pacote um cliente pode adquirir quantos pacotes um ou muitos né o cliente ele não adquire zero pacotes se ele adquirir tem que ser pelo menos um mas ele pode adquirir vários pode comprar vários pacotes de uma vez e um pacote pode ser comprado por quantos clientes se ele é comprado tem que ser por um cliente pelo menos mas ele também pode ser comprado por
por vários clientes ao mesmo tempo por exemplo eu eu e minha esposa poderíamos comprar um pacote de viagem juntos um pacote para duas pessoas certo e aqui na representação embaixo na forma de diagrama de conjuntos a gente vê claramente né os clientes 1 2 e 3 os pacotes 1 2 3 e 4 cliente um adquirindo os pacotes um e dois ã e o pacote dois por exemplo sendo adquirido pelo cliente 1 2 e 3 ao mesmo tempo os três caras comprando o mesmo pacote certo muito legal E aí na anotação do Peter Shen n para
m a gente costuma usar as letras n e m ou você pode representar assim cardinalidade mínima cardinalidade Máxima 1 v n 1 v n Em ambos os sentidos fazendo aquela mesma perguntinha Em ambos os sentidos certo muito legal pessoal bom aí a história é seguinte a cardinalidade é muito importante para te auxiliar a determinar as ocorrências de entidades né dentro das entidades e também ela vai te ajudar na hora da normalização do banco a determinar se é necessário criar mais entidades sempre que você tiver um relacionamento n para m você vai ter que criar uma
nova entidade para transformar esse relacionamento muitos para muitos em dois relacionamentos um para muitos ou um para um tá Por quê Porque o relacionamento muitos Para muitos é muito difícil de implementar em banco de dados Então a gente vai simplificar dessa forma aqui nesse exemplo cliente o pacote então um cliente pode comprar um monte de pacotes o pacote pode ser comprado por um monte de clientes a gente pode desmembrar criando uma nova entidade que Eu batizei de cliente pacote também é comum dar esse nome pras entidades uma combinação dos nomes das entidades originais eu continuo
tendo entidade cliente eu continuo tendo entidade pacote só que agora eu tenho dois relacionamentos um para n que são muito mais fáceis de implementar então um cliente pode compor n pacotes e um pacote também pode compor n clientes pacotes Só que essa entidade agora tem esse relacionamento um para n certo mas não se preocupe com isso agora como fazer isso ou por ficou desse jeito Não é esse o objetivo desse vídeo aqui é só da ideia da aplicação da cardinalidade que é justamente por exemplo ã poder fazer esse desmembramento como ele é feito e como
ele é feito da forma correta Que tipo de entidade ele vai gerar isso a gente vai ver lá na frente na na na hora da normalização Tranquilo então não se preocupe com isso por enquanto integridade do quê integridade de dados tá o que que significa essa essa expressão integridade de dados significa manutenção e a garantia da consistência e acurácia ou precisão dos dados Tá e isso é um aspecto é que é muito crítico no Design na implementação e também no uso dos sistemas de armazenamento de dados ou seja nos bancos de dados que a gente
vai modelar ã a integridade ela é atingida nessa integridade dos dados por meio das Tais restrições de integridade que a gente vai ver na sequência certo então isso aqui tudo tem a ver com a manutenção e garantia da consistência e precisão dos dados ter os dados precisos e consistentes sem variações e sem corrupções dentro do seu banco de dados bom Quais são as restri de integridade que a gente possui aqui eu tenho as cinco principais restrições de integridade que são a integridade referencial de domínio de vazio de chave e as restrições de integridade definidas pelo
usuário vamos falar um pouco sobre cada uma delas começando pela mais básica que a integridade de domínio tá a ideia aqui é a seguinte valores que você insere numa coluna num campo dentro de uma tabela eles t sempre de obedecer a definição de valores que são permitidos para aquele campo ou para aquela coluna que a gente chama de valores do domínio já falei um pouco sobre domínio em um vídeo anterior aqui desse curso tá basicamente tem a ver com os tipos de dados que você e armazena dentro de uma tabela então um exemplo numa coluna
que armazena preços de mercadorias tá dentro de um banco de dados os valores que são admitidos Ou seja que a gente pode armazenar nessa coluna de preços são do domínio numérico Então existe uma restrição de integridade do domínio nesse caso para números ou seja apenas números serão aceitos nessa coluna Se eu tentar gravar por exemplo uma data o sistema não pode aceitar essa data ou um texto apenas números certo existem vários fatores que influenciam a integridade do domínio tipo de dado do Campo Tá a representação interna do tipo de dado como que eu V esse
dado dentro do do campo lá na minha tabela no caso do preço de um produto de uma mercadoria ã o preço é um número legal mas como é esse número representado é um número inteiro é de ponto flutuante tem casas decimais no caso de ter casas decimais quantas casas Qual é a precisão que eu vou utilizar tá então isso tem a ver com a integridade de domínio presença ou não do dado né o dado ele ele pode não estar presente tá intervalo de valores também tem tudo a ver quais são os valores que eu posso
ter dentro desse Campo existe um intervalo para eles ouou Ele aceita qualquer tipo de dados tá e conjuntos de valores discretos não necessariamente o intervalo mas valores específicos que serão aceitos ou seriam aceitos naquele campo tudo isso tem que ser pensado durante a modelagem do banco para respeitar a integridade de domínio para respeitar essas restrições de integridade muito bem então aqui eu tenho um exemplo eh suponha uma tabela de produtos que tem um um como um dos seus atributos o preço do produto então o produto possui um preço específico ã qual o tipo de dados
é um valor monetário então qual seria um valor permitido por exemplo o número 25,33 é permitido tá eh é um valor monetário totalmente válido R 25,33 agora que que o banco de dados não pode aceitar para esse campo por exemplo escrever R 25,33 por extenso tá eu estou saindo fora aqui do do da restrição aí em vez de ter apenas o valor monetário eu também tô colocando texto Dentro do campo um outro exemplo se eu quisesse representar um preço como R 32,33 negativo vai ser aceito nesse nesse Campo Aparentemente sim porque é um número mas
mas na prática Se você prestar atenção ã valores negativos não podem ser preços de produtos nenhum produto custa menos 32 Então existe uma restrição para esse valor existe um intervalo específico de valores que serão aceitos aqui valores acima de zero tá valores negativos ou próprio zero não podem ser aceitos devido a essa restrição de integridade muito bem essa é uma restrição outra integridade interessante importante conhecer muito pro sinal é integridade referencial que como o nome disse tem a ver com referências tá que referências referências entre tabelas entre as entidades e a restrição de integridade referencial
ela é usada para assegurar que os valores que você insere numa tabela numa coluna né dentro de uma tabela sejam válidos baseados em valores que estão em uma coluna de outra tabela tá Ou seja é uma é um tipo de restrição que tem a ver com relacionamentos então uma coluna de chave primária numa tabela tá ligada com uma coluna de chave estrangeira em outra tabela os valores que você insere nessa coluna com chave estrangeira eles têm de existir na chave primária da outra tabela tá para não violar a integridade referencial então exemplo vamos supor que
eu tenho uma tabela de produtos e nessa tabela Eu tenho um campo chamado ID do produto E lá eu tenho um cadastro de um ID 523 tá caso eu tenha uma tabela de vendas relacionada a essa tabela de produtos para poder vender o produto com ID 523 o registro dele tem de existir na tabela de produtos Se eu tentar cadastrar uma venda de um produto com um ID que não existe na tabela de produtos isso vai gerar um erro tá porque vai violar a integridade de referência certo então isso é importantíssimo aqui outro exemplo vamos
supor um atributo chamado nome do produto numa tabela de bebidas por exemplo Ah esse atributo ele é do tipo caracter ou seja vai ter um texto ali discriminando os produtos e vamos supor que na minha tabela de bebidas na coluna nome do produto eu tenho apenas esses produtos cadastrados água refrigerante e suco nesse esema aqui a gente não vende bebida alcoólica vamos supor aí que eu tenho uma tabela de vendas onde eu vou cadastrar as vendas dos produtos e alguém tenta comprar um produto chamado cerveja veja o produto cerveja não existe na tabela de produtos
Portanto ele não é um valor permitido eu não posso ter esse produto na tabela de vendas Se eu tentar escrever mesmo que seja manualmente cerveja o sistema não pode aceitar tá então é outro caso importantíssimo pensar a gente pode ver ISO aqui de forma gráfica um Pou mais simples de entender então na linha de cima eu tenho os valores válidos tá os produtos cadastrados água refrigerante suco e o cliente João tá ele tentou fazer o Efetuar uma venda na verdade uma compra né tô cadastrando no banco de dados uma venda a venda 01 e o
João compro água e refrigerante perfeitamente válido tá agora vamos supor uma outra venda a cliente Renata Tentou comprar suco e cerveja na hora que eu tentar registrar essa venda olha só é inválido porque cerveja não existe na tabela de produtos cadastrados estou violando integridade de referência tô colocando na minha chave estrangeira um produto um valor né Um item que não existe na chave primária associada tá então isso aqui vai gerar um erro certo a integridade referencial também tem a ver com atualização e exclusão de dados tá por exemplo se eu tentar excluir ou atualizar um
dado numa tabela e esse dado tiver relacionado com informações em outra tabela ã essa exclusão ou atualização ela poderá se propagar para outra tabela por exemplo vamos supor uma tabela no banco de dados de de biblioteca ou de livraria ã uma tabela de livros e uma tabela com os nomes dos autores ou informações dos autores então na tabela de autores tem o nome do autor ID sobrenome e outras informações e na tabela de livros as informações dos livros Tá mas a informação do autor daquele livro em particular vamos supor que eu elimine o autor da
tabela de livros o que acontece com os livros na tabela de livros ã que pertencem ou que foram escritos por aquele autor autor eles devem ser eliminados também porque eu não posso ter o cadastro de autores né de livros de um autor cujo autor não tá cadastrado no meu banco na minha outra tabela da mesma forma se eu por exemplo trocar o nome do autor vamos supor que ele tenha sido cadastrado errado então ao trocar o nome do autor isso tem que se propagar para todos os livros daquele autor também tá então Esso é importante
a gente chama esse tipo de atualização de propagação de propagação em Cascata tá isso aqui é feito via código tá na hora que a gente vai criar a tabela ou as tabelas com os seus relacionamentos a gente vai usar comandos em SQL que já vão prever e efetuar essas tarefas todas tá por isso que é importante você entender toda essa parte teórica para você poder modelar o banco de forma a criar o banco da forma correta tá caso contrário você vai ter erros Note que nem sempre você vai querer excluir um Um item de uma
tabela e que automaticamente o item seja excluído de outro isso vai depender da regra do negócio também isso tem que se levar em consideração na modelagem para você poder usar os comandos corretos na hora de criar as tabelas isso a gente vai ver mais paraa frente porque depois das aulas teóricas de modelagem a gente vai criar o nosso projetinho completo e no final do projeto completo A gente vai também usar alguns comandos skel para implementar o banco de dados na prática certo aí vocês vão ver esses comandos aqui em Ação bom vamos para outra integridade
então integridade de vazio esse tipo de integridade diz respeito ã ao fato da coluna ser obrigatória ou opcional ou seja o valor que eu coloco na coluna é obrigatório colocar ou eu posso deixar a coluna sem valor nenhum tá depende da regra de negócio sempre ã Mas de qualquer forma é possível não inserir o valor em uma coluna você tem que fazer análise para determinar se isso eh se vai ser possível pro usuário deixar de inserir o valor se sempre será obrigatório inserir valores naquela coluna uma coluna de chave primária por exemplo jamais pode ficar
sem um valor é obrigatório que sempre tenha um valor inserido tá ela nunca pode estar vazia para nenhum registro senão vai violar a integridade de vazio e a integridade de vazio tem tudo a ver com os valores nulos tá que que é um valor nulo ou nul né o termo técnico aqui é nul l l um valor nulo significa não existem dados aqui é diferente de zero poris zero é um dado espaço espaço é um dado uma tabulação é um dado de qualquer forma é um caracter que seja o nulo significa nada vazio ausência total
e completa de dados nesse caso e os nulos eles acarretam alguns problemas a gente tem sempre tem que pensar se aquela coluna da tabela ela vai comportar nulos ou não Por quê Às vezes o valor da coluna não é apropriado Às vezes o valor não foi inserido o usuar esqueceu de inserir o valor às vezes o valor é desconhecido né em para todos esses casos você tem que pensar a respeito dos valores nulos na coluna da tabela antes de criar essa tabela tá E aqui eu tenho um exemplo de valor nulo para ficar um pouco
mais claro esse conceito vamos supor que eu tenho uma tabela de cadastro de alunos na minha escola e nessa tabela eu vou cadastrar os dados dos alunos nome sobrenome Identificação do aluno RM do aluno endereço telefone etc Note que para esses dados alguns dos atributos são obrigatórios não pode deixar de estar naquela tabela por exemplo o nome do aluno não posso ter uma tabela de cadastro de alunos sem ter o nome do aluno tá Ou seja é um campo obrigatório a gente chama isso de atributo não nulo mas alguns atributos eles nem não necessariamente são
obrigatórios por exemplo telefone e se o aluno não tiver um telefone como é que faz deixo de cadastrar o aluno não posso fazer isso Então nesse caso o campo ele vai ser criado como um campo de atributo n ou seja ele permite que você deixe aquele campo sem nada preenche todos os dados do registro mas aquele Campo pode ficar vazio aí isso tem que ser previsto na modelagem também hoje em dia não é muito comum o cara não ter telefone mas antigamente at uns 10 ou 15 anos atrás daí para trás era comum as pessoas
não terem telefone eu mesmo fui ter um telefone só na na época em que entrei na faculdade né em casa não tinha telefone então se eu fosse me cadastrar num banco de dados desse desse tipo aqui tem que ter o campo teria de ter o campo que permite o atributo nulo certo senão não teria condição muito bem então tá aqui o exemplo que eu acabei de dar essa tabelinha mostra os campos da tabela de alunos então pro Márcio tem o telefone dele cadastrado mas pro Renato não tem no lugar aparece a palavra nul de nulo
beleza bom outro tipo de integridade essa aqui é mais simples de entender integridade de chave que tem a ver com chave primária Então nesse caso aqui a ideia é a seguinte valores inseridos na coluna de chave primária eles são sempre únicos não pode haver repetição tá não pode se admitir repetição nesses valores assim os registros eles vão ser sempre distintos entre si mesmo que todos os campos tenham valores parecidos com de outros registros a chave primária vai dar a diferença tá e os valores da chave como a gente já viu anteriormente também não podem ser
nulos então sempre prevê isso inclusive para poder escolher qual vai ser o campo correto para ser a chave primária da tabela tá valor que não pode se repetir e nem ser nulo muito bem finalmente a integridade definida pelo usuário tá as integridades que a gente viu anteriormente são específicas de todos os bancos de dados e as definidas pelo usuário são integridades que dizem respeito a regras de negócio ou seja para aquele banco de dados em particular para aquela modelagem existe uma regra do negócio né que é específica definida pelo usuário que eu vou ter que
implementar na modelagem para impedir ou permitir a vinculação de determinados dados então por exemplo eu posso definir que uma coluna só vai ter um conjunto muito estrito de valores específico ou que esses valores Eles serão inseridos na coluna apenas após passar por algum tipo de cálculo matemático vamos supor n e o cálculo matemático vai determinar se o valor pode ou não ser inserido na coluna tá a gente vai ver exemplos eh melhores desse tipo de integridade um pouco mais para frente quando a gente estiver criando o nosso banco de dados e fazendo uma modelagem completa
certo mas é importante já você ter em mente que existe esse tipo de integridade também definida pelo próprio usuário Claro o usuário passa as diretriz Mas quem vai criar a integridade né as regras e os comandos é você o cara que tá fazendo A modelagem depois vai fazer a implementação do banco o diagrama entidade de relacionamento é um diagrama que permite representar de forma gráfica o mer o modelo entidade relacionamento tá que é o nosso modelo conceitual o uso do diagrama é muito importante porque ele facilita muito a modelagem Afinal de contas você está vendo
ali de forma gráfica tá E também facilita a comunicação entre os membros da equipe de desenvolvimento porque é muito comum quando você trabalha com modelagem de dados que você trabalhe numa equipe e não sozinho a não ser claro nos casos em que você modela pequenos bancos de dados mas geralmente bancos de dados de médio ou principalmente de grande porte você você modela E cria implementa em equipe e a diagramação auxilia todo mundo a se entender nesse processo tá afinal de contas todo mundo entende a linguagem da diagramação a anotação original de diagramação ela foi proposta
pelo Peter shan que a gente já falou em vídeos passados tá os diagramas de Peter shan mas na verdade não existe só o diagrama de Peter Shin existem vários métodos que a gente pode utilizar para representar os relacionamentos entre as entidades criando os diagramas entidade e relacionamento as notações gráficas mais utilizadas em modelagem são essas dessa lista que você está vendo Então a gente tem o ID Fix esse número um a gente pronuncia como se fosse uma letra i tá anotação de bman min Max mínimo máximo anotação pé de galinha ou Cross Foot né lá
fora a gente chama de crossf pé de Corvo mas aqui em português ficou pé de galinha anotação de Martin que basicamente é o pé de linha um pouco melhorado eh anotação uml e anotação original de Peter shan tá Então essas são as mais utilizadas essa figura aqui que eu retirei lá da Wikipedia wikimedia commons não para ser mais exato Mostra aí uma uma modelagem né uma pequena diagramação ã utilizando os diversos tipos de diagramas disponíveis então Peter Shin deix bacman 1 ml etc e as diferenças entre eles tá então a gente tem aqui eh duas
entidades pessoa e local daí o relacionamento birthplace local de nascimento ou ou pessoa nasceu no local tal isso não importa muito o que importa são os as representações gráficas que são utilizadas em cada uma delas você pode perceber que tem diferenças aí né entre entre esses diagramas alguns utilizam linhas sólidas outros linhas tracejadas outros têm números outros TM bolinhas losangos outros TM algumas coisas escritas tá então tem uma série de diferenças entre eles a gente precisa aprender todos eles para trabalhar com modelagem de dados não você tem que aprender o diagrama que é usado na
empresa onde você vai fazer essa modelagem mas o mais comum é que se utilize ou o diagrama do Peter Chen ou o diagrama pé de galinha tá são os mais comuns o pé de galinha inclusive é muito comum no mercado e o piten também é comum e ele também é muito utilizado por exemplo nas escolas né ah de forma acadêmica né para ensinar por por exemplo modelagem de dados Então vamos dar uma olhadinha nesses dois tá nesses dois diagramas aqui nesse vídeo e para criar esses diagramas você pode utilizar softwares específicos para diagramação que a
gente chama de genericamente de ferramentas Case tá Ah computer aided software Engineering engenharia de software com aillio de computador ah uma ferramenta cas é uma ferramenta que permite realizar uma série de tarefas ligadas a engenharia utilizando um computador entre elas algumas ferramentas permitem realizar modelagem de dados mais precisamente a diagramação da modelagem de dados e aqui eu tenho uma pequena lista que mostra algumas dessas ferramentas tá o as é uma ferramenta bastante conhecida lucid chart o ering data modeler o rd Plus de my Model Star ml também conhecido Microsoft Vision n que geralmente você encontrei
no próprio Microsoft Office também pode ser utilizado para fazer diagramação o my bench e o visual paradigm também são ferramentas utilizadas paraa diagramação elas T diferenças entre si e algumas tem um custo elevado outras podem ter um custo mais baixo ã você sempre vai acabar encontrando ferramentas gratuitas tá algumas têm mais recursos do que outras e algumas inclusive permitem que você faça modelagem né crie o diagrama visualmente e depois exporte o código SQL para montar as tabelas lá no banco de para fazer implementação que é bem interessante em vez de você criar o código a
partir da da do diagrama em si tem ferramenta que permite fazer isso inclusive tá aqui eu vou falar um pouquinho mais sobre a diagramação Peter shan né o modelo de Peter Shen então anotação do Peter Shen pro Dr utiliza retângulos Para representar as entidades você já aprenderam isso nos vídeos anteriores losangos representam os relacionamentos então aqui por exemplo a gente a gente tem um relacionamento entre funcionário e setor funcionário trabalha no setor tá funcionário e setor são representados pelos retângulos com o nome do da entidade dentro do retângulo e o losango representa o relacionamento entre
eles com o nome do relacionamento lá dentro que é o relacionamento trabalha geralmente um verbo e os atributos eles podem ser representados por elipses conectadas à respectivas entidades tá existe uma outra forma um pouquinho diferenciada né do diagrama de Peter Shen que não mostra os atributos aí apenas os retângulos das entidades e relacionamentos por que isso porque quando você tem muitos atributos esse tipo de diagrama fica muito poluído porque você fica com um monte de elipses em volta da das entidades fica até um pouco difícil de você ler tá nesse caso aqui tá tranquilo uma
das entidades tem só três atributos e a outra tem apenas dois representados o nome do funcionário ID setor o cargo e no caso do setor o ID do setor e o nome do setor e temos os numerozinho ali o um e o n para indicar a cardinalidade desse relacionamento tá que tá na forma simplificada tá representando apenas a a cardinalidade final mas a gente pode também representar usando os parênteses cardinalidades mínima e máxima utilizando Peter shan como a gente também já viu na aula sobre cardinalidades se você não assistiu esse vídeo ainda não perca seu
tempo Corra para assistir certo beleza Olha só anotação do Peter shan no Microsoft visio como é que fica se eu utilizar o Vil da Microsoft para fazer a diagramação Olha só fica desse jeito cliente os retangulo zinhos adquire produto então o relacionamento é adquire e nós temos as entidades cliente e produto e dentro das elipses nós temos os nomes dos atributos nome cliente endereço ID produto nome produto assim por diante veja que os atributos determinantes que vão ser as chaves primárias estão grifados que seria o ID produto e o ID do cliente tá aqui embaixo
ã e tem um um atributo aí que tá com uma elipse dupla que é o telefone tá Ah esse aí é aquele tipo de atributo que a gente sabe ele pode ocorrer mais de uma vez no no banco de dados certo que é o atributo do telefone tá um atributo multivalorado Enfim então notação Peter Shen É bem tranquila você vê que ela igual né independente do software que você utilizar só as cores o estilo que pode variar um pouquinho tá dito isso como é que é o diagrama pé de galinha que é o cross food
bom Aqui é o seguinte são utilizadas apenas linhas né para representar os relacionamentos e as cardinalidades não tem os losangos com os nomes dos relacionamentos e a gente representa da seguinte forma Então as linhas representam os relacionamentos entre as entidades E essas barrinhas aqui esses traços representam Então as cardinalidades uma barrinha na vertical significa relacionamento um tá um para um por exemplo ou um para muitos Mas significa que daquele lado a cardinalidade é um quando a gente tem esse símbolo aqui como se fosse um sinal de menor ou de maior depende do lado a gente
tem um relacionamento que representa o valor muitos tá o n lá na anotação do Peter Shen tá E é daqui inclusive que vem o nome pé de galinha né Por causa desse formato aqui que lembra o pé de uma ave tá e a gente também tem um relacionamento de opcionalidade que é o conceitual de zero e você coloca um um círculo aqui na na sua linha isso que significa zero ou mais ocorrências ou seja aquela entidade opcional no relacionamento certo então aqui é bem simples de utilizar Aqui também tá na forma simplificada você também pode
representar as cardinalidades mínima e máxima simultaneamente Bastando para isso combinar a as Barrinhas aqui por exemplo do um com muitos tá ou com o zero zero e muitos por exemplo Então você combinando você vai obter as cardinalidades mínima e máxima como a gente viu na aula de cardinalidade além disso usando a diagramação pé de galinha a gente também consegue representar relacionamento forte relacionamento fraco o relacionamento forte é representado por uma linha sólida e você sabe o relacionamento forte é é um relacionamento no qual uma entidade depende da outra para existir a entidade filha depende da
entidade pai para existir se a entidade pai não existir a filha desaparece tá Ah e no no geral a chave primária na entidade filha contém a chave primária da entidade pai elas se repetem tá e o relacionamento fraco é representado por uma linha tracejada nesse caso a existência de uma entidade é independente de outra A Entidade pode existir Independente de existir uma entidade associada do outro lado ou não tá nesse caso a chave primária da entidade filha não contém a a chave primária da entidade pai tá a gente estudou um pouco sobre isso na aula
sobre entidades também certo bom vamos ver aqui então o diagrama pé de galinha olha como é que ele fica no vzio tá um pouquinho bem diferente aqui do do da anotação Peter Shen eu tenho aqui eh as entidades cliente produto e compra são três entidades que eu tenho aqui então existe um relacionamento entre cliente e compra e entre produto e compra no caso cliente a gente tem esse relacionamento entre o ID do cliente que é uma chave primária tá representada aqui e na entidade compra a gente também tem o ID do cliente como uma chave
estrangeira denotada pela sigla FK que aparece aqui foreign Key e o PK de primary Key chave primária e aqui tá a linha que conecta as duas entidades tá veja o relacionamento aqui mínimo e máximo mínimo e máximo com as suas cardinalidades então um cliente pode ter uma ou mais compras e uma compra pertence a um e apenas um cliente é o que tá representando aqui esse relacionamento Note que aqui também nesse diagrama a gente além de listar os atributos a gente também tem uma coluna que traz o domínio dos atributos ou seja o tipo de
dado daquele atributo então o ID do cliente é um número inteiro o nome caracter sobr nome do cliente aqui tá como inteiro Na verdade seria caracter também o endereço tá como inteiro seria um caracter tá Ah isso aqui pode ser alterado obviamente certo na compra mesma coisa a gente vai ter o ID da compra que é a chave primária a tela fica separadinha dos outros no Microsoft visio tá E aí temos as chaves estrangeiras de cliente de produto e a quantidade nesse caso Olha só esse exemplo aqui não traz a coluna que tem os tipos
de dados você pode optar por exibir essa coluna com tipos de dados ou não tá tem as duas formas de representação quando você usa anotação pé galinha para produto a mesma coisa a gente optou por não exibir então a gente pode ter com os tipos ou não Lógico que quando você for fazer a sua modelagem você vai querer seguir um padrão Ou exi em todas ou não exi em nenhuma tá Ah o recomendado é sempre que você exiba os tipos de dados porque isso Vai facilitar lá na frente na hora de criar o banco de
dados e até mesmo caso o software faça a exportação ah do código do do da modelagem certo muito bom e olha só anotação pé de galinha no lucid chart um outro software Zinho que eu já vou mostrar mesmo esquema não tem nada de muito diferente aqui temos as entidades cliente cliente locação locação veículo pagamento cartão de crédito isso aqui é um banco de dados de uma locadora de veículos tá E tem os relacionamentos entre elas aqui com as linhas tá um para muitos zero para muitos mínimo um máximo muitos e assim sucessivamente e nesse caso
a gente tem o nome do campo do atributo e o tipo de dados então nome inteiro CPF inteiro RG inteiro assim sucessivamente tá não necessariamente isso aqui tá tudo correto isso aqui é só para exemplificar tá não Tom isso como um banco de dados real implementável a gente ainda vai aprender como fazer com que isso seja implementável tá trabalhando com as dependências e fazendo a normalização e alterando os tipos de dados certo ideia só mostrar mesmo Qual é a cara do do diagrama beleza muito bom vamos dar uma olhadinha no Lu de chart então pra
gente ver como é que se cria um diagrama usando esse software eu tenho ele aqui bom lucid chart ele um software bastante simples de utilizar tá Ah você pode criar alguns diagramas pequenos com poucos recursos de forma gratuita e ele tem uma versão paga também mas o que eu gosto nele é que ele se integra ao Google Drive tá de modo que lá dentro da minha conta do Google onde eu ten as minhas apresentações planilhas e arquivos eu já posso direto clicar em novo documento lucid chart e ele abre essa janela para mim tá e
aqui eu posso escolher o tipo de diagrama que eu quero criar ele permite criar alguns diagramas por exemplo de sequência tá diagrama genérico de rede um flowchart n um fluxograma em branco ou diagrama entidade de relacionamento tá Ah Nessa versão gratuita aqui clicando em diagrama entidade de relacionamento ele vai abrir uma outra janelinha que vai me permitir criar um Diagrama como esse aqui ó sistema de locação de veículos que a gente acabou de ver tá e é bem tranquilo trabalhar com ele aqui por exemplo Deixa eu só fechar aqui para ficar mais fácil fechar esse
contêiner também e os shapes deixar só esses dois caras aqui do lado esquerdo nesse painel a gente tem o item entity relationship entidade relacionamento que é onde você vai encontrar os elementos que você vai querer utilizar para criar o seu diagrama Então deixa eu baixar um pouquinho aqui olha só eu tenho aqui vrias formas de representação uma entidade com seus entidade com as chaves e os campos entidade com os campos e os tipos e finalmente entidade com Chaves Campos e tipos aí você escolhe o que você quer utilizar por exemplo eu vou utilizar vamos utilizar
os três aqui entidade com chave campo e tipo então eu clico aqui arrasto e solto aqui na na na área em branco tá solto na área em branco e aí é bem simples tá clique duplo e você altera os nomes então por exemplo vamos vamos supor que isso aqui seja uma entidade livro aí eu venho aqui no primeiro campo clique duplo e coloca um nome para esse campo por exemplo nome aliás nome não ID livro que vai ser do tipo int inteiro e ele vai ser uma chave primária PK tá bem tranquilo eu posso também
clicar aqui para ampliar ess quiser depois eu vou no próximo campo campo dois e nome livro tipo dele caracter tá chave esse aqui não vai ter chave então é só apagar depois o terceiro aqui Campo ID autor caracter também e esse cara por vai ser uma chave estrangeira FK certo assim a gente vai criando o diagrama veja que fica muito mais fácil entender o banco de dados olando para esse diagrama do que se fosse uma descrição Tex dos elos deixa eu colar um outro uma outra entidade aqui só pra gente mostrar a finalização essa aqui
eu vou chamar de autor ele vai ter um campo chamado ID autor que vai ser do tipo int inteiro e vai ser uma chave primária nesse momento você já deve ter percebido que eu cometi um erro aqui lá em livro eu chamei o ID do autor de caracter mas aqui na verdade tem que ser inteiro porque ele vai ser chave estrangeira desse cara aqui certo bom aí eu vou ter um outro campo em autor nome autor caractere sem chave e finalmente sobrenome autor que também é do tipo caractere e a chave dele também não existe
certo então tá aí posso ampliar um pouquinho aqui para aparecer tudo direitinho muito bom agora eu vou criar relacionamento entre eles relacionamento vai ser entre a chave primária ID do autor bot um R aqui e o ID do autor da tabela de livros Então olha que interessante quando você coloca o mouse em cima ele mostra umas bolinhas em cada linha Aí eu clico nessa linha aqui e arrasto até essa daqui e solto e ele criou usando a anotação pé de galinha Olha que legal só Claro a cardinalidade Pode não estar correta você tem que levar
isso em consideração Então vamos pensar eh um autor ele pode escrever Quantos livros um autor ele escreve um ou mais livros então aqui desse lado tem que ser um ou muitos tá então o que eu faço eu ser seleciona esse cara aqui venho aqui em cima olha e aqui eu posso no end Point que é onde termina né de da chave primária paraa chave estrangeira chave estrangeira onde termina eu vou selecionar um diferente por exemplo esse cara aqui ó um ou muitos tá E aí lendo da da lado contrário um livro pode ter quantos autores
pode ter um ou mais autores tá o livro pode ter um ou mais autores então também um para muitos aqui certo mesmo esquema eu venho agora no início e cadê aqui um ou muitos da mesma forma ah o livro não poderia ter zero autor por exemplo Autor Desconhecido poderia também nesse caso você utilizaria esse outro cara aqui ó zero ou muitos claro que isso vai depender da modelagem que você tá fazendo a regra de negócio é que manda aqui certo e assim você vai criando o seu diagrama beleza tranquilos Então é isso pessoal o que
queria apresentar nesse vídeo era isso como criar um diagrama entidade de relacionamento e falar um pouquinho sobre as ferramentas que existem tá A ideia é que você escolha uma ferramenta que você se adapte melhor ou que a empresa utilize e aprenda a utilizá-la tá eu não vou especificamente adotar uma ferramenta para usar Apesar de que eu devo utilizar aqui de chart e provavelmente uma outra ferramenta na hora de fazer o nosso projeto prático mas a ferramenta pode variar muito do do projeto e do local onde você tá trabalhando certo o importante é conseguir entender o
diagrama porque o diagrama é igual em todas as ferramentas tá E para finalizar ele tem aqui uma coisa interessante esse lucid chart aqui embaixo ele tem Import Export tá o botão o link Import permite que você pegue um código e importe para cá ele monta para você o diagrama e o Export ele faz o inverso ele pega o diagrama que você criou e um código para ele olha só aqui ó Create table livro Create table autor ele vai criar as duas tabelas tá com os campos que eu coloquei aqui a mesma coisa com a chave
primária com a chave estrangeira e assim por diante tá claro que aí para isso aqui funcionar você precisa especificar direitinho os os tipos de dados né De acordo com o banco de dados que você vai trabalhar tem que colocar os nomes corretamente lá dentro isso pode variar de um banco para outro de qualquer forma ele tenta ó clicando aqui nesse nesse linkzinho adaptar o código a outros sistemas de bancos de dados como skl server post Green Oracle e assim por diante mas aqui tá em em fase de teste ainda é um beta test tá não
dá para confiar muito nesse aqui só para mostrar que existe esse recurso e que outros sistemas de diagramação também podem possuir esse recurso claro uma funcionalidade maior os integrados a sistemas de gerenciamento de bancos de dados sempre funcion por exemplo o Workbench pro MySQL ou o próprio skl server da Microsoft também tem essa funcionalidade beleza Ah esse vai ser um vídeo curto tá e esse é um conceito simples que eu vou explicar na verdade o dicionário de dados é uma ferramenta que você pode utilizar para te auxiliar no seu projeto no desenvolvimento do seu projeto
de banco de dados mas que infelizmente não é muito utilizada ah por alguns projetistas de bancos de dados tá Eu recomendo que você utilize o dicionário de dados por quê o dicionário de dados ele é um documento que a gente utiliza para armazenar informações sobre os objetos que você tá modelando no seu banco então as entidades os atributos e os relacionamentos que você tá criando tudo isso são descritos no banco no dicionário de dados tá Ah é importante manter esse dicionário de dados porque isso vai te ajudar lá na frente na hora de fazer implementação
física do banco a diminuir a quantidade de erros Afinal de contas se você tiver toda a informação da modelagem detalhada e explicada num documento é muito mais fácil consultar esse documento para saber o que deve ser feito e o que não deve ser feito na hora de criar fisicamente o seu banco legal e o dicionário de dados também é chamado de repositório de metadados por que metadados porque é curioso mas no dicionário de dados você vai ter dados que explicam como é que funcionam as estruturas de dados do banco de dados os sobre dados daí
a palavra metadados ele é um repositório de informações vamos um exemplo de dicionário de dados ficar mais fácil mais simples de entender você tá vendo aqui na tela três tabelinhas chamei de tbl autor tbl livre tbl Editora estão na parte inferior da tela elas TM relacionamentos entre elus nomes parte principal da nossa janela eu tenho uma descrição dessas tabelas isso é um dicionário de dados então é um documento que vai ter as informações mais ou menos nesse formato aqui o formato não é muito rígido você pode fazer um pouco diferente Inclusive eu já vi pessoas
por exemplo criando dicionário de dados no Word ou no editor de textos escrevendo Ema página O que significa uma tabela em outra página o que significa os atributos e assim por diante tá na forma de listas por por exemplo mas eu acho que nesse formato de tabelas fica mais fácil de trabalhar então como é que a gente faz o dicionário de dados partindo do banco de dados né da do seu diagrama entidade de relacionamento você vai criar tabelas no plural para descrever os elementos que fazem parte do banco de dados aqui por exemplo eu tenho
uma tabela grande que descreve as tabelas do banco de dados eu tenho as três tabelas tbl livro autor E tbl editor Ah eu tenho uma coluna dizendo com quem essas tabelas se relacionam então a tbl livro ela tem um relacionamento com a tabela de autor e com a tabela de Editora também e eu tenho uma descrição do nome do relacionamento então a o relacionamento entre a tabela livre e autor é o relacionamento escreve é o autor escreve o livro ou o livro é escrito pelo autor e o relacionamento entre a tabela livro e a tabela
de Editora é o publica Editora publica livro ou O livro é publicado pela Editora Então essa informação fica armazenada aqui na forma de uma tabelinha tá a mesma coisa pra tabela de autora e de editora e eu tenho uma coluna final que é a coluna mais importante que é a descrição onde de forma textual e por extenso eu vou descrever a finalidade daquela tabela então a tabela livre para que que ela serve nesse banco de dados tá descrito aqui tabela para cadastro dos livros da coleção a tabela de autor serve para quê tabela para cadastro
dos autores dos livros e a tabela de Editora cadastro de editoras tá então você coloca uma descrição aí ah a mais detalhada que você puder tá E assim você vai criar a uma parte do dicionário de dados descrevendo as tabelas ou as relações que compõem o seu banco de dados mas essa é só a primeira parte da história aqui a gente só tá descrevendo as tabelas nós temos de descrever ainda os atributos e os relacionamentos a tabela é fácil depois vem os atributos E aí é o que dá um pouquinho mais de trabalho porque atributos
Provavelmente você vai ter um monte deles vários por tabela E aí eu recomendo fazer da seguinte forma criar uma tabelinha colocar o nome da relação que você vai descrever aqui e descrever os atributos que pertencem a essa relação aqui por exemplo eu tenho a tabelinha tbl livro com todas as colunas os atributos que fazem parte essa tabela listados então aqui no nosso caso nós temos paraa tabela livro Os atributos ID livro nome livro ID autor ID editora e data de publicação e aí a gente vem com as informações a respeito desses atributos por exemplo tipo
de dados importantíssimo colocar isso aqui ID livro vai ser o número inteiro nome do livro caracteres o ID do autor número inteiro o ID da editora número inteiro e a data de publicação formato de data Por que que é importante colocar isso aqui porque na hora de aumentar fisicamente o banco de dados você precisa via comando via SQL fornecer a informação do tipo de dados para cada uma das colunas você não pode deixar isso para ser decidido na hora isso já tem de estar decidido anteriormente no caso aqui no dicionário de dados com a listagem
da das informações Além disso pros tipos de dados eu posso ter comprimentos diferentes Então a gente vai ter uma coluna com comprimento dos dados por exemplo pro ID do livro inteiro de 4 by pro nome do livro tipo de dados é caracter 40 byes PRO IDE do autor e pro ID da editora também inteiros de 4 byes e para data de publicação formato de data que ocupa 8 by isso aqui pode variar um pouco depende do banco de dados que você vai utilizar do sistema de gerenciamento de banco de dados que você vai utilizar Mas
no geral é mais ou menos essa a ideia depois a gente lista as restrições a características especiais colunas por exemplo se a coluna é chave primária ou se ela é chave estrangeira então a gente coloca aqui por exemplo chave primária PK primary Key chave estrangeira FK foreign Key coloquei alguns Campos como not nul significa que não aceita nulos é obrigatório preencher aquele campo e outros Campos eu deixei aqui em branco não tem nenhum tipo de restrição específica isso aqui ó obviamente tem a ver com as regras do negócio né se pode ou não permitir nulo
e assim por diante tá com a modelagem que você tá fazendo mas tem que tá aqui porque na hora de implementar na hora de criar o comando que vai montar essa tabela no banco de dados você precisa especificar essas restrições E como é que você vai saber se se precisa usá-los ou não se não tiver descrito em nenhum lugar Ah vai ter algum valor padrão coloquei uma coluna de valor padrão aqui ND não disponível não tem valor padrão nenhum Mas se tiver você coloca aqui e no final uma descrição tá uma descrição textual também de
cada um dos Campos cada um dos atributos então por exemplo e d do livro O que que é o ID do livro número de Identificação do livro gerado automaticamente olha só essa palavra aqui essa frase gerado automaticamente é muito importante porque na hora de criar o banco também tem um comandinho que permite fazer a geração automática dos números de ID se você não usa aquele comandinho o ID tem que ser entrado manualmente posteriormente na hora de cadastrar os dados Ahã descrição nome do livro aqui tá sem a descrição tem que colocar uma descrição também ã
ID do autor número de Identificação do autor ID da editora número de identificação da editora data de publicação data de publicação da obra uma descrição Zinha por estenso legal então aqui no caso nome do livro tá ND eu esqueci de colocar né a descrição do livro Como é que seria essa descrição aqui né título da obra o título do livro tá tem livros que tem um título bem extenso você pode colocar o título inteiro né Na hora de cadastrar E aí você precisa lembrar disso na hora de colocar o comprimento número de caracteres que vão
ser reservados pro nome do livro tá ou se você vai abreviar Enfim tudo isso tem que ser pensado anteriormente para ser colocado aqui no dicionário de dados porque é a partir daqui que a gente vai criar depois o banco de dados físico certo isso aqui é só para uma tabela eu tenho três tabelas nesse banco então a gente vai pra próxima tabela E aí fazemos a mesma coisa com os atributos da tabela autor que são menos são três ide autor nome do autor e sobrenome do autor aí os tipos de dados inteiro e caracteres com
seus comprimentos suas restrições valor padrão e a descrição no caso aqui o o o ID do autor também é gerado automaticamente Ah e aqui embaixo interessante a gente notar Ah eu coloquei uma frase totalizando ã a quantidade de dados em cada registro então para cada autor que eu cadastrar eu vou ocupar o 84 by no máximo né até 84 byes 40 do nome 40 do sobrenome mais quatro do ID do autor essa é uma informação legal porque dá pra gente estimar posteriormente o tamanho do banco de dados dependendo da quantidade de registros que você vai
vai cadastrar tá em alguns sistemas de gerenciamento de bancos de dados você precisa informar na hora de criar o banco de dados do tamanho mínimo e o incremento de aumento do tamanho do banco aí ter essa estimativa do tamanho da quantidade de dados que vão ser armazenados também é interessante por isso aqui no dicionário você pode opcionalmente fazer esse cálculo e finalmente a tabela de editoras Ah que só tem dois Campos o ID da editora e o nome da editora para esse exemplo e os tipos de dados inteir e caracteres comprimento 4 e40 by as
restrições né tem uma chave primária e os dois Campos São not nu não tem valor padrão e tem a descrição no final embaixo o total de dados em cada registro 44 bytes se a gente voltar um pouquinho aqui ó pro pra tabela de livros 60 bytes total de dados em cada Registro tem mais campos mas o ocupa menos espaço tá porque a maior parte dos Campos aqui é numérica beleza pessoal e finalmente você vai também descrever os relacionamentos mesma ideia nessa tabelinha eu coloquei o nome do relacionamento aqui na primeira coluna o escreve e o
publica que a gente já viu antes ã quais tabelas eles conectam e em qual tabela e você tem a chave primária e em qual tabela você tem a chave estrangeira do relacionamento então por exemplo o relacionamento escreve ã el um relacionamento entre as tabelas de livro e autor sendo que na tabela de autor vai ter uma chave primária conectada a uma chave estrangeira na tabela de livros então o ID do autor é chave primária na tabela de autores e vou ter o ID do autor na tabela de livros para montar esse relacionamento o relacionamento escreve
e na tabela de livros essa coluna é chave estrangeira e a mesma ideia pro relacionamento publica que conecta a tabela de livros com a tabela de editoras tá na tabela de editoras ele é chave primária p primary na tabela de livros ele é FK fory opcionalmente você poderia também colocar aqui mais uma Coluninha ou duas com os nomes dos Campos que compõem o relacionamento também é possível quanto mais informação melhor e no final descrição que não pode faltar é relacionamento que descreve qual autor escreve cada livro e relacionamento que mostra qual Editora publica cada um
dos livros Bele vamos comear fando funcional e a ideia da dependência é justamente estabelecer uma relação entre os atributos dentro de uma tabela tá então a própria palavra diz dependência atributos que dependem de outros atributos tá e o tipo de dependência Mas como é a dependência funcional como é que funciona isso aqui imagine uma entidade e qualquer uma tabela qualquer e dois atributos quaisquer que eu vou chamar de x e y atrib X e atributo Y ou campo x e Campo y a gente vai dizer que o campo Y ele é funcionalmente dependente do X
se para cada valor de X eu tiver associado exatamente um valor de y então para cada valor do X existe um Y então Y é funcionalmente dependente de x e a gente costuma representar isso simbolicamente assim x e uma setinha apontando para Y tá e a gente Lê isso aqui como sendo x determina funcionalmente Y ou Y Depende funcionalmente de X tá isso aqui a gente chama de dependência funcional quando um campo Depende de outro Campo certo temos um exemplo aqui para ficar mais claro tá porque só na na forma teórica é um pouco mais
complicado de entender então vamos supor que eu tenha numa tabela de pedidos os campos número do pedido e prazo de entrega do pedido onde o armazeno respectivamente um número que identifica cada pedido e o prazo de entrega para aquele pedido em particular ã o atributo número do pedido Ele determina o prazo de entrega do pedido Portanto o prazo de entrega ele é funcionalmente dependente do número do pedido isso não é difícil de enxergar é só você fazer uma pergunta tá Pergunta o seguinte ah olhando só para uma coluna prazo de entrega do pedido vamos supor
que Ali temos temos um prazo de 15 di di você pergunta 15 dias o quê 15 dias para o quê tá esse número sozinho não tem muito significado ele depende do número do pedido para saber do que se tratam aqueles 15 dias tá então quando eu tenho o número do pedido associado fica mais fácil entender 15 dias 15 dias para quê para entregar o pedido de número X Y Z tá para entregar um pedido em particular então se eu tiro o número do pedido o prazo de entrega deixa de fazer sentido tá porque a gente
não sabe Qual é o pedido que vai ser entregue naquele prazo isso a gente chama de dependência funcional O atributo que determina o valor é o atributo determinante que é esse cara aqui tá e o atributo que depende do determinante é chamado n como a gente espera de atributo dependente tá geralmente a chave primária dentro de uma relação dentro de uma tabela el ela determina funcionalmente os atributos que são não chave na linha na tupla ou no registro tá então o atributo não é ch primária a gente chama de atributo não chave esse também é
um conceito important pra gente lembrar posteriormente certo então isso que a gente chama de dependência funci agora existem vários tipos de dependência funci a gente vai categorizar ospos de dependência funcional que existem exist dependência chada dependência funcion toal que existe quando você tem uma relação com uma chave primária composta então numa relação com uma chave primária composta um atributo não chave tá um atributo que não é chave primária que dependa dessa chave primária tem que depender dela como um todo ou seja depender de todas as partes da chave primária para existir não somente de parte
dela tá esse esse atributo a gente diz que tem uma dependência funcional Total vamos ver um exemplo aqui eu tenho uma tabelinha chamada item pedido tá com três Campos número do pedido código do pedido e quantidade do produto né aliás número do pedido código do produto e quantidade do produto nessa tabela número do pedido e código do produto combinados formam uma chave primária então esses dois juntos formam uma chave primária composta tá ã e a quantidade do produto é um campo não chave aí a pergunta que eu faço é quantidade do produto Depende do quê
do número do pedido ou do código do produto tá Depende de ambos neste caso Por que depende de ambos porque eu preciso saber qual é o código do produto para saber a quantidade que tá sendo vendida mas também preciso saber o número do pedido porque em pedidos diferentes eu posso ter quantidades diferentes do produto sendo vendidas num pedido eu posso ter 10 unidades sendo vendidas em outro pedido eu posso ter 15 unidades ou 20 ou três tá Então na verdade eu preciso dessas duas informações da chave primária composta inteira número do pedido e código do
produto para determinar a quantidade do produto tá então a gente diz que aqui existe uma dependência funcional Total legal importante lembrar disso porque lá na frente nas aulas de normalização a gente vai aplicar esses conceitos para para fazer os processos de formas normais que a gente vai aprender posteriormente vamos para outro exemplo para outro tipo de dependência dependência funcional parcial da dependência funcional parcial você tem atributos não chave que dependem da chave primária mas não de toda ela no caso de uma chave composta tá ou seja o atributo ele Depende de uma parte da chave
primária mas não depende de outra parte a gente chama isso de dependência ã parcial justamente por conta disso e esse exemplo aqui vai vai ajudar a entender imagine uma tabela chamada matrículas nessa tabela eu tenho uma chave primária composta que é a combinação do ID do aluno com o código da disciplina para saber qual é a matrícula tá então ID do aluno aluno e código da disciplina me dá a matrícula dele num determinado curso e nessa tabela eu também tenho um campo chamado nome da disciplina é o nome da disciplina na qual ele tá matriculado
e uma data de início e aí eu quero verificar se o campo nome da disciplina tem uma dependência Total ou parcial né dependência funcional Total ou parcial E aí basta você perguntar o nome da disciplina Depende de quem o nome da disciplina depende do Código da disciplina então se eu tiver o código da disciplina eu sei qual é a disciplina que tá sendo considerada tá para um código x eu tenho uma disciplina Y sempre já o nome da disciplina não depende do ID do aluno se eu tiver o ID do aluno eu não sei qual
é a disciplina Exatamente porque o aluno pode estar matriculado em n disciplinas ele pode estar matriculado em CCO se oito disciplinas então tendo só o ID do aluno não é possível saber o nome de uma disciplina mas tendo código da disciplina é possível Então nesse caso o nome da disciplina ele é dependente funcionalmente do Código da disciplina e não do ID do aluno portanto só de parte da chave primária composta Então a gente tem aqui uma dependência funcional parcial certo é isso que a gente chama de dependência funcional parcial Espero que tenha ficado Claro esse
conceito a diferença para dependência Total tá então esse é o segundo tipo de dependência funcional que a gente estuda existe um outro tipo de dependência uma outra forma de você classificar as dependências que é a dependência funcional tá nesse caso um campo não depende da chave primária da tabela tá nem mesmo de forma parcial Ou seja eu tenho um campo na minha tabela que eventualmente Depende de um outro Campo mas esse outro Campo não faz parte da chave primária tá ou seja Depende de um campo que também é não chave a gente chama isso de
dependência funcional transitiva Essa é muito importante saber identificar porque no processo de normalização a gente costuma separar esses campos em duas ou mais tabelas quando a gente tá normalizando o banco tá E aqui um exemplo clássico de dependência funcional transitiva eu tenho uma tabela de pedido que tem o número do pedido um prazo de entrega código do vendedor nome do vendedor tá ã então a chave primária aqui é número do pedido é uma chave primária simples Eu tenho um prazo de entrega que depende do pedido obviamente né para saber qual o prazo de entrega tem
que saber qual é o pedido considerado Eu tenho um código do vendedor que é uma chave estrangeira tá E tenho o nome do vendedor também certo coloquei o nome do vendedor aqui aí a pergunta que eu faço é o nome do vendedor ele depende do número do pedido na verdade não o nome do vendedor depende do código do vendedor o código do vendedor é que vai depender do número do pedido aqui tá ã então o nome do vendedor possui uma dependência funcional transitiva tá o O que significa em outras palavras já dando uma adiantada que
o nome do vendedor não deveria estar nessa tabela ele deveria estar em outra tabela tá eh para que a gente pudesse acessar esse nome via relacionamento de chave primária e chave estrangeira Então como é que a gente sabe disso identificando a dependência funcional transitiva ao fazer a pergunta o nome do vendedor depende da chave primária da tabela pedido a resposta é não nem Total nem parcialmente Então temos uma dependência funcional transitiva tá nesse caso como a gente vai vem normalização o nome do vendedor sai dessa tabela e vai pra outra que a gente provavelmente vai
ter que criar na hora certo Então essa é ideia da dependência funcional transitiva muito bem nós também temos uma dependência chamada dependência multivalorada tá ã no caso da dependência multivalorada ela vai ela vai ocorrer quando para cada valor de um atributo a existir um conjunto de valores para outros atributos B e C ou mais né B C D enfim vários atributos que estão Associados mas que não tem a ver um com o outro eles são independentes entre si tá e a gente representa essa dependência multivalorada sim eh atributo a uma setinha com duas pontas e
o atributo b tá e B é a coluna que depende de A B ou C ou D quantos atributos você tiver disponíveis tá para ficar mais claro vamos para um exemplo aqui eu tenho uma tabela de automóvel que tem os campos modelo ano e cor tá E aí olha só que interessante vamos analisar essa tabela rapidamente eu tenho por exemplo um modelo chamado go ano 2016 cor prata eu tenho modelo Uno 2016 também o ano cor preto eu tenho outro Uno n outro modelo igual ano 2015 e cor prata Então veja que interessante onde é
que tá a dependência multivalorada a gente percebe aqui claramente que o ano e a cor não dependem um do outro tá não importa o ano você não tem como determinar Qual é a cor de acordo com a cor não dá para saber qual é o ano tá são independentes entre si Mas eles dependem do modelo do carro tá o ano e a cor para determinar Qual é o carro que tá sendo vendido comercializado trocado enfim só que a gente tem aqui múltiplos valores você vê que o ano ele se repete várias vezes olha só 2016
2016 de novo é assim como a cor também se repete ó Prata Prata aqui tem um preto poderia ter outro Preto aqui um outro vermelho e assim por diante e o modelo também acaba se repetindo un un Fox Fox então a gente começa a ter várias repetições de valores na tabela tá com Campos que não dependem entre si mas dependem de outro campo e que também é interessante notar modelo aqui não é uma chave primária como é que a gente sabe disso porque tem repetição nos valores tá então quando ocorre essa situação a gente diz
que existe uma dependência multivalorada e nesse caso é muito comum também que a gente acabe gerando uma outra tabela para separar esses dados e evitar essas repetições que é o que acontece quando a gente faz o processo de normalização Beleza então a dependência multivalorada também é importante você saber identificar aí quando tiver fazendo a análise da da das tabelas das entidades que você criou na modelagem dos dados beleza pessoal bom então é isso aí nesse vídeo eu fiz uma pequena introdução às dependências em modelagem de dados eh que você precisa conhecer saber reconhecer na verdade
ao olhar para uma tabela porque elas indicam problemas com aquela tabela que devem ser resolvidos e vão ser resolvidos aplicando-se técnicas especiais tá sendo a principal técnica a técnica ou as técnicas da normalização porque tem mais de uma etapa para a normalização E essas técnicas a gente vai aprender em breve tá tá aqui na nossa lista de próximos assuntos a gente ainda vai falar um pouquinho sobre dicionário de dados também aí ent em normalização que na verdade é um pouquinho mais extenso tá a normalização deve pegar em pouco mais de um vídeo na verdade pra
gente matar esse assunto Existem várias formas normais pra gente abordar primeira segunda terceira formas normais quarta quinta forma normal de boys cod e assim por diante legal então antes de chegar lá dá uma revisada nesse vídeo tenta entender melhor do que se trata esse esquema das dependências porque isso vai ser extremamente importante mais para frente esse vídeo não Na verdade uma introdução à normalização e todo o assunto de normalização eu vou abordar em alguns vídeos seguidos vamos começar falando sobre anomalias tá antes de entrar propriamente dito na ideia de normalização ã o que que são
anomalias de atualização Então as anomalias elas são problemas tá que podem ocorrer em bancos de dados que foram mal planejados ou mal projetados e que não estão normalizados tá Ah e Geralmente as anomalias ocorrem Porque existe um excesso de dados em uma mesma tabela os dados foram colocados nos locais errados ou em tabelas incorretas Geralmente as anomalias são causadas pelas dependências parciais e dependências transitivas que decorrem desse excesso de dados e existem três categorias de anomalias de atualização principais são elas anomalia de inserção a anomalia de exclusão e a anomalia de modificação tá vamos falar
um pouquinho sobre cada uma delas primeiramente a anomalia de inclusão o que que é anomalia de inclusão Ah é uma anomalia que ocorre quando você tenta incluir um dado novo no banco de dados ou seja fazer um cadastro de uma informação nova no banco tá nesse caso não deve ser possível adicionar um dado a não ser que outro dado esteja disponível tá por exemplo não deve ser permitido cadastrar um novo livro Sem que o autor já esteja cadastrado isso a gente chama de anomalia de inclusão então se eu tiver as minhas tabelinhas que você deve
lembrar do vídeo passado tabelinha de autor e tabelinha de livro na minha tabela de livros eu tenho os dados dos livros e ten um campo pra gente identificar o autor daquele livro tá na hora de cadastrar um livro eu só posso cadastrar o livro se na hora de colocar o dado do autor esse dado corresponder a um autor que esteja cadastrado na tabela de autores Se eu tentar inserir um livro de um autor que não existe na tabela de autores a gente vai ter o problema dessa anomalia de inclusão não vai ser possível incluir esse
dado antes da gente ir lá na tabela de autores e fazer inclusão tá Ah então a gente tem que pensar nisso na hora de fazer A modelagem do banco essa é uma anomalia outra anomalia é de exclusão que ocorre justamente quando você tenta excluir um registro do banco de dados tá e a ideia é a seguinte quando você exclui um registro dados referentes aquele registro em outra tabela são excluídos tá por exemplo se eu excluir um autor da tabela de autores os livros escritos por esse autor também devem ser excluídos tá senão a gente vai
incorrer numa anomalia de exclusão ou seja um livro que tem numa coluna de identificação de autor mas o autor não existe mais na outra tabela Tá então não é possível manter esse registro eu não posso dizer que eu tenho na minha coleção livro de um autor que é inexistente tá anomalia de exclusão e a terceira Tera anomalia é anomalia de modificação e a ideia é a seguinte modificação do quê dos dados então quando eu tento alterar uma informação que já está cadastrada no banco de dados eu posso acabar incorrendo numa anomalia de modificação e geralmente
ocorre quando dados em outras tabelas também precisam ser modificados por exemplo se eu modificar o código do autor numa tabela de autores Ah eu preciso modificar na verdade na tabela de autores e na de livros também tá para poder manter o relacionamento entre as duas tabelas se eu modificar em uma tabela e não modificar na outra eu vou ter uma incoerência Tá eu vou ter um livro escrito por um autor de um código x só que esse código x não existe tá na outra tabela o código foi alterado para um outro número qualquer tá eu
posso inclusive causar ah outros problemas por exemplo alterando o código de um autor numa tabela e ter um conflito com um código de outro autor cadastrado na tabela de livros tá isso a gente chama de anomalia de modificação e a gente tem que evitar que ocorram essas anomalias que elas são problemas graves e como é que a gente faz para eliminar as anomalias a gente tem que projetar as relações ou os esquemas de relações Tá o que que é um esquema de relação tá é a estrutura de uma tabela os atributos da tabela quem é
a chave primária quem é a chave estrangeira Quais são as restrições os tipos de dados e assim por diante Então a gente tem que projetar esses esquemas de modo que não ocorram as anomalias de inserção exclusão ou modificação ou seja as anomalias do conjunto de atualização E para isso a gente utiliza um processo chamado de normalização aí que entra a tal da normalização de bancos de dados Então vamos falar agora sobre normalização agora que você já conhece um pouquinho do dos problemas que podem ocorrer quando o banco não é normalizado então o que que é
a normalização é um processo de análise tá Ah de uma relação relação lembre-se tabela para assegurar que essa tabela essa relação seja bem formada tá bem formada significa que ela tem os campos os atributos coerentes e corretos pro tipo de dado pro tipo de informação que ela se presta a armazenar a normalização consiste na verdade em decompor as relações que T anomalias certo para produzir outras relações menores e bem estruturadas decompor significa pegar uma relação uma tabela que tem vários Campos e extrair os campos que não são relevantes a essa tabela e formar outras tabelas
com esses campos não se trata de jogar dados no lixo se trata simplesmente de organizar esses dados no lugar correto e às vezes esse lugar correto é em outras tabelas ou seja criando outras tabelas numa relação que está normalizada você pode inserir dados excluir modificar registros e não tem nenhum problema com anomalias tá Então essa é a ideia de usar o processo de normalização E você já deve estar imaginando agora que é um processo muito importante né você veio aí ao longo da modelagem H bolando as tabelas os relacionamentos criando os atributos e tal e
chegando nesse ponto você percebe que na verdade aquilo tudo que você fez não tá pronto ainda para se transformar num banco de dados mesmo que pareça ao aplicar as técnicas de normalização você vai começar a descobrir esses probleminhas de anomalias e outros e vai resolver esses problemas o o processo de normalização ele foi proposto por cod em 1972 ó Faz tempo isso tá E ele aplica no esquema de relação ou seja numa tabela uma série de testes para certificar que ele satisfaça o que a gente chama de forma normal que eu Vou abreviar aqui como
fn de forma normal ã e Originalmente cod Ele propôs três formas normais que foram batizadas como primeira segunda e terceira formas normais e posteriormente essa terceira forma normal ela foi revisada e existe uma uma definição um pouquinho mais robusta dela tá que foi foi batizada como forma normal de boys cod tá que a gente vai vai abreviar por fnbc na prática a gente quer sempre atingir a terceira forma normal ou a forma normal de boys code quando a gente esver normalizando o banco de dados tá em alguns casos a terceira forma normal já vai ser
mais do que suficiente Às vezes você vai precisar da forma normal de boy score existem outras formas normais além dessas por exemplo a quarta e a quinta formas normais que são raramente utilizadas eu vou falar delas bem mais paraa frente Beleza então revisando aqui os objetivos da normalização e analisar um esquema de relação que a a gente chama de tabela com base nas dependências funcionais e também olhando as chaves primárias tá para que isso Minimizar redundância e Minimizar ou eliminar Se for possível as anomalias de inserções inclusão e modificação que em conjunto são chamadas de
anomalias de atualização legal então a gente também minimiza redundâncias tá ou seja dados repetidos usando a normalização e as relações são decompostas em esquemas de relações menores que vão atender aos testes de formas normais então o ideal é que o projeto do banco de dados sempre alcance a forma normal de boys cod ou a terceira forma Normal pelo menos para cada uma das tabelas isso tem que ser feito em toda as relações do banco de dados tá você não pode escolher uma relação para normalizar tem que ser em todas e não é adequado você normalizar
até a primeira ou até a segunda formul normais e parar porque essas fmas normais na verdade elas foram criadas para servirem de como se fosse um trampolim pra gente chegar na terceira forma normal ou na fnbc na forma normal de boys cod legal então tem que fazer o processo pelo menos até a terceira forma normal para você garantir que as suas tabelas sejam bem estruturadas ou no jargão técnico bem formadas no vídeo passado a gente falou sobre normalização e eu introduzi o tema tá e eu expliquei que eu ia falar sobre as formas normais nos
vídeos subsequentes Então nesse vídeo a gente vai abordar a primeira forma normal então o que que é a primeira forma normal historicamente a primeira forma normal ela foi definida ã para ser um processo para reprovar atributos multivalorados compostos e também combina entre eles então A ideia é se a sua tabela se a sua relação possuir atributos multivalorados ao aplicar o processo da primeira forma normal a gente vai eliminar esses atributos tá eliminar não significa que eu vou jogar os dados fora como você deve lembrar do do outro vídeo eu expliquei que na verdade esses dados
vão compor outras tabelas outras relações ã o domínio de um atributo ele deve incluir apenas valores atômicos o que que é um valor atômico é um valor indivisível e o valor de qualquer atributo numa tupla num registro deve ser o valor único do domínio desse atributo essa é uma definição mais formal da primeira forma normal bom como é que a gente sabe que uma tabela está na primeira forma normal que atingiu a primeira forma normal a gente sabe disso quando a tabela somente possui valores atômicos indivisíveis ou seja não tem atributos multivalorados não tem grupos
de atributos repetidos ou seja só tem um dado por coluna nas linhas tá E existe uma chave primária obviamente a relação não possui atributos multivalorados nem tamp pouco relações aninhadas que que é uma relação aninhada relação aninhada significa uma tabela dentro de outra tabela é quando você tem na sua relação na sua tabela um conjunto de atributos de colunas que em si formam uma outra tabela tá com dados com informações que não precisariam estar ali dentro daquela tabela mãe por assim dizer então a gente chama isso de relação aninhada nesse caso a primeira forma normal
vai te dizer para desmembrar essa relação Então ela tá a tabela está na primeira forma normal se só houverem valores atômicos né indivisíveis e um exemplo imagina um um campo de endereço tá você colocou lá na sua tabelinha ID do funcionário nome do funcionário e endereço o campo endereço na verdade ele possui sub domínios porque o endereço ele pode ser subdividido ele pode ter Rua número bloco apartamento complemento CEP cidade estado bairro ou seja dá para dividir de n formas esses itens eles vão ser separados pelo processo de normalização a primeira forma normal vai determinar
isso você vai detectar isso quando tiver aplicando a primeira forma normal E aí cada informação vai para um campo diferente e eventualmente para uma tabela diferente a aqui uma definição um pouquinho melhor de dados atômicos Então são elementos de dados que representam o nível mais baixo de detalhamento como a ideia do endereço né o endereço ele pode ter um monte de informações associadas então o nível mais baixo de detalhe é quando você dissocia todas aquela aquelas informações de endereço para dados que a gente chama de atômicos o campo não atômico é o que pode ser
portanto subdividido em mais de um campo como no caso do endereço legal eles escondem detalhes o nome de uma pessoa é outro exemplo né não é e correto no banco de dados você armazenar o nome completo de uma pessoa num campo O correto é desmembrar o nome da pessoa no mínimo em nome e sobrenome tá E porque assim você vai ter os dados atômicos e não um dado composto dentro de de um campo bom agora que a gente já definiu basicamente o que que é a primeira formaa normal Vamos fazer um exemplo tá vamos fazer
um exemplo aqui nós temos uma tabela chamada tbl cliente tbl cliente essa tabela Ela tem os quatro Campos código do cliente nome do cliente telefone cliente endereço cliente código do cliente você tá vendo aqui ele o atributo determinante a chave primária nome do cliente é um campo simples o telefone do cliente é um atributo multivalorado Olha o asterisco aqui e o endereço do cliente é um atributo composto Olha que salada que a gente tem nesse exemplo como é que a gente faz para normalizar esse cara para chegar na primeira forma normal procedimento é o seguinte
você vai montar uma tabela pode ser no papel pode ser usando um software específico pode ser usando um programa de planilha fica seu critério Mas você vai montar uma uma tabela tá vai colocar cada um dos Campos que você tem aqui na sua relação como uma coluna dessa tabela porque é isso que eles são são colunas e vai preencher com dados fictícios quantos dados poucos dados 3 4 registros Uns poucos registros que é pr te ajudar a enxergar o que tá acontecendo na tabela então eu preenchi coloquei códigos de clientes nomes de clientes telefones endereços
e aí Olha só ao observar essa tabela preenchida você já percebe os problemas n que estão ocorrendo na coluna de código do cliente você tem códigos diferentes para cada cliente OK É isso que a gente espera tá porque essa coluna é uma chave primária na coluna nome do cliente nós temos os nomes dos clientes também parece que tá tudo ok José Marcos e Ana veja que aqui é só o primeiro nome Ah não é o nome completo do cliente na verdade eu poderia ter acrescentado também um campo aí sobrenome do cliente mas não fiz isso
para ficar um pouco mais simples a explicação então o campo nome do cliente Parece legal também agora veja o telefone do cliente José tem dois telefones ele tem um telefone aqui que parece um celular e um telefone fixo o Marcos só tem um telefone e a Ana também tem dois telefones isso é um grande problema porque a primeira F normal diz que os valores devem ser atômicos e o que a gente tem aqui é um atributo multivalorado eu tenho duas informações diferentes dentro do mesmo Campo na minha tabela nessa linha do José por exemplo ou
da Ana isso errado Isso não pode acontecer isso a gente vai ter trabalhar emima normalizar a tabela e no campo endereço cliente a gente também tem problemas veja que nós temos os três endereços dos clientes mas esses endereços são atributos compostos tá primeiro cliente por exemplo José mora na Rua das gestas 234 apartamento 45 Vila Bela olha só um endereço totalmente composto tem nome de rua tem número tem número de apartamento e tem bairro quatro informações o Marcos Avenida Carlos de Almeida 459 Vila das Rosas mesmo esquema tem o número tem o nome da rua
ou Avenida ah e também tipo do logrador pode ser Rua ou avenida a gente também pode tem pensar nisso às vezes e o bairro e a Ana também tem o endereço dela então a primeira forma normal disse para você olhar para essa para esse tipo de informação na tabela tá E aí o que que eu faço com essa informação você vai fazer o seguinte como é que a gente vai normalizar isso aqui eu normalize da seguinte forma ah a tabela cliente ficou com os campos código do cliente nome do cliente rua e bairro código do
cliente nome do cliente mantivemos como já estavam perfeitos a gente Manteve já o endereço eu desmembre em duas partes rua e bairro ou seja o bairro agora tem sua própria coluna e a rua com o número tem sua própria coluna dava pra gente desmembrar mais dava não fiz isso por falta de espaço aqui mas você claramente pode ver que a gente poderia ter criado uma coluna só para tipo de logradouro Rua Avenida Alameda etc e um campo só pro número tá um campo só para apartamento aqui eu não coloquei o apartamento de um deles acho
que o José mora em apartamento tá enfim Dá para colocar mais campos Mas essa aqui a ideia é fazer esse desmembramento certo e o telefone bom o telefone a gente colocou em uma outra tabela tá a gente tirou o telefone porque ele é multivalorado e criamos uma tabela específica fica só para colocar o telefone e a gente tem aqui o código do cliente e o Telefone do cliente um por linha então código do cliente telefone código telefone código telefone e assim sucessivamente veja que nessa tabela código do cliente não é chave primária porque o número
do código tá se repetindo aqui a gente pode usar por exemplo uma chave surroga né deixar o sistema colocar uma numeração uma autonumeração por exemplo para ser a chave primária dessa tabela que não tá sendo indicada aqui mas você pode imaginar assim registro número 1 2 3 4 5 sucessivamente ou ainda você pode combinar código do cliente com o telefone e os dois Campos juntos eh perfazerem uma chave primária composta também uma outra solução tá ã Mas o importante é essa informação tem que sair da primeira tabela para que a tabela possa estar na primeira
forma normal legal assim a gente começou o processo de normalização separando os dados multivalorados da tabela e expandindo os dados compostos eventualmente você pode pensar também talvez em tirar o bairro daqui tá você pode tirar o bairro porque o bairro não depende do código do cliente então o bairro pode simplesmente ir para uma outra tabela de bairros de cidades de Estados e assim sucessivamente tá A ideia é sempre tirar esses dados da tabela principal e criar as próprias tabelas para armazenar essas informações beleza mas isso na verdade isso é papel das próximas formas normais fazer
essa comparação com a chave primária para determinar quem vai e quem não vai nas tabelas isso aí é papel da segunda e da terceira formas normais da primeira forma normal a gente trabalha com com os atributos multivalorados e os compostos e também com as tabelas aninhadas legal então a gente fez aqui uma normalização simples que ainda pode ser um pouquinho mais Trabalhada na tabela de cliente nós Já estudamos a primeira forma normal já aprendemos como realizar o teste que leva uma relação até a primeira forma normal e agora a gente vai ver do que se
trata a segunda forma normal e como chegar até ela A ideia é a seguinte a segunda forma normal ela é baseada no conceito de dependência funcional Total tá que a gente já estudou anteriormente ã e a ideia é a seguinte imagine um esquema de relação R ou seja uma tabela qualquer R essa tabela ela vai estar na segunda forma normal se cada um dos atributos não chave dessa tabela for total e funcionalmente dependentes da chave primária da da tabela da relação ou seja cada atributo que não for chave tem de ser eh total e funcionalmente
dependentes da chave primária se o atributo não for dependente totalmente da chave primária então a tabela não está na segunda forma normal e precisa ser normalizada como é que a gente testa isso a gente testa as dependências funcionais tá cujos atributos fazem parte da chave primária se a chave primária só tiver um atributo eventualmente você não precisa fazer o teste não precisa aplicar esse teste da segunda forma normal vamos resumir então pra tabela chegar na segunda forma normal Primeiro ela tem que estar na primeira forma normal não dá para pular etapas tá você tem que
normalizar na primeira forma depois na segunda e depois na terceira forma normal e daí sucessivamente tá então é obrigatório que você tenha já normalizado a sua relação pra primeira forma normal antes de ir pra segunda todos os atributos que não são Chaves devem devem ser funcionalmente dependentes de todas as partes da chave primária então se a chave primária for composta e tiver duas ou três partes os atributos eles T de depender de todas as partes da chave tá ou seja não podem existir dependências parciais caso contrário você vai ter que gerar uma tabela nova com
os dados ou seja vai extrair aquela informação que é uma dependência parcial e vai criar uma tabela extra para ela tá bom lembrando o atributo chave é um atributo que é uma chave primária ou parte de uma chave primária composta e o atributo não chave são os demais atributos E aí a gente cria uma nova relação para cada uma das chaves ou combinações de atributos que forem determinantes em uma dependência funcional tá esse atributo ele vai ser a chave primária na nova tabela tá no exemplo vai ficar mais claro do que significa isso mas basicamente
você vai mover os atributos que não são chave dependentes da chave primária para essa nova tabela bom então sem fazer a hora vamos para para pro exemplo para entender melhor como é que funciona segunda forma normal tenho aqui uma tabela de peças tbl andline peça com seis Campos código da peça código do fornecedor local do fornecedor ã quantidade em estoque telefone do fornecedor e quantidade de caixas nessa tabela a gente tem uma chave primária composta composta por código da peça e código do fornecedor juntos tá aqui Faltou um um grifo no código do fornecedor mas
Ambos são são uma chave primária composta e aqui na tabelinha expandida a gente pode ver isso código da pess e código do fornecedor forma APK a primary Key Certo então ideia a mesma da da da primeira forma normal a gente vai expandir a tabela a relação e vai preencher com alguns dados fictícios ou dados reais se for o caso pra gente tentar enxergar o que tá acontecendo tá ã de forma mais fácil mais simples e aí poder aplicar a normalização então eu coloquei os campos todos aqui os seis Campos e preenchi com alguns dados coloquei
alguns códigos de peças alguns códigos de fornecedores o local de cada fornecedor temos São Paulo Manaus e Porto Alegre aqui São Paulo é o código 121 Manaus é o código 122 e Porto Alegre é o código 123 a quantidade da peça em estoque qual peça cujo código tá aqui na primeira coluna tá tem a peça 9 2365 7173 depois o telefone do fornecedor e aqui eu tô assumindo que cada fornecedor só tem um telefone tá e a quantidade de caixas tá Quantas caixas a gente vai ter bom então vamos lá como é que a gente
vai normalizar essa tabela a gente vai ter que fazer algumas análises primeira análise é a seguinte você vai lembrar da regra que os atributos eles têm que ser totalmente dependentes da chave primária inteira ou seja ele não pode ser dependente só de uma parte da chave e não de outra tem que ser dependente da chave toda aqui no caso Então a gente vai e olhar coluna por coluna e fazer essa verificação por exemplo local do fornecedor o local do fornecedor Depende do quê exatamente ele depende do código do fornecedor certamente né a partir do código
do fornecedor eu descubro o local do fornecedor mas o local do fornecedor depende do código da peça não necessariamente tá porque eventualmente uma peça poderia ser fornecida por mais de um fornecedor então tendo o código da peça em si não vai indicar qual é o local do fornecedor tá então a gente já já localizou aqui uma coluna que é problemática quantidade em estoque a quantidade da peça em estoque Depende do quê depende do código da peça certamente né certamente depende do código da peça depende do código do fornecedor hum a gente tem que fazer essa
análise também a quantidade da peça em estoque Depende de qual parte da chave primária só do código da peça ou também depende do fornecedor aí depende de quem fornece aquela peça o telefone do fornecedor Depende de quem também depende do código do fornecedor mas não depende do código da peça tá não é a peça que determina o telefone do fornecedor é o código dele e a quantidade de caixas depende do qu exatamente depende do código da peça Possivelmente porque a quantidade de caixas de Peas depende do código do fornecedor depende do fornecedor que está fornecendo
aquele produto Mas a quantidade de caixas também depende da quantidade em estoque você pode perceber que a gente tem aqui um cálculo na verdade sendo realizado aproximadamente 10 vezes o número de caixas para quantidade em estoque Ou seja a gente tem aqui a ideia de que em cada caixa cabem mais ou menos 10 peças tá então é um outro caso que também pode ser tratado bom a gente fez uma análise superficial aqui vamos ver como é que fica essa tabela normalizada Então olha o que foi feito a gente pegou aquelas duas colunas local do fornecedor
telefone do fornecedor que a gente viu que não dependem do código da peça ou seja não depende da chave primária composta e a gente tirou a gente pinou esses dois atributos e colocamos em uma outra tabela tá E aí ã essas duas colunas elas dependiam de quem elas eram dependentes parciais do código do fornecedor E aí como a gente viu na descrição na na na teoria essa coluna aqui com código do fornecedor ela vai também pra outra tabela e ela vai ser chave primária aqui então nessa tabelinha que a gente criou tabela fornecedor a gente
ficou com o código do fornecedor chave primária local do fornecedor e o telefone do fornecedor certo código do fornecedor é a chave primária três códigos três locais três telefones certo e aqui na tabela de peças a gente ficou apenas com o código da peça e o código do fornecedor continua a chave primária composta a quantidade em estoque tá porque depende dessa combinação e a quantidade de caixas que eu não tirei daqui ainda mas eventualmente poderia até ser eliminada essa coluna quantidade de caixas tá E para determinar a quantidade de caixas que são necessárias para armazenar
as peças a gente poderia fazer um esquema chamado de Campo calculado que na prática é elimina essa coluna e sempre que eu quiser saber a quantidade de caixas basta pegar a quantidade de estoque e fazer um cálculo em cima da do número de peças tá fazendo aquele cálculo em cima do número de peças a gente chega na quantidade de caixas aqui por exemplo poderia dividir por 10 e somar um aí eu chego na quantidade de caixas ou seja essa coluna que na verdade pode ser jogada fora tá e as colunas local fornecedor e telefone do
fornecedor elas saem da tabela de peça e vão constituir uma nova tabela tabela do fornecedor para que a gente possa ter a tabela normalizada na segunda forma normal ambas as tabelas no caso certo aí a gente eliminou esse problema das dependências parciais agora a dependência aqui é total e aqui também a dependência é total certo é disso que fala a segunda forma normal bom já falamos sobre a primeira e a segunda formas normais e agora a gente vai partir pra terceira forma normal 3fn e qual a ideia da terceira forma normal ela é baseada no
conceito da dependência transitiva tá ou seja a relação a tabela ela não pode ter um atributo não chave ou seja um atributo que não é chave primária que seja determinado funcionalmente por um outro atributo que também seja não chave tá ou por um conjunto de atributos não chave então A ideia é a seguinte eh os atributos na nossa relação na nossa tabela devem depender completa e totalmente apenas da chave primária ele não pode depender de um outro atributo que não seja chave primária ou parte da chave primária certo então não pode ter o que a
gente chama de dependência transitiva de um atributo não chave sobre a PK e quando isso ocorre a gente precisa decompor a tabela ou seja separar a tabela em duas ou mais e montar uma nova relação incluindo os atributos não chave que determinam funcionalmente aqueles outros atributos que também são não chave ou seja você tem um atributo comum que não é chave que que depende de um outro atributo que não é chave eu vou montar uma nova relação contendo esses dois atributos ou mais se for o caso Então como é que a gente sabe que uma
tabela tá na terceira forma normal Primeiro ela tem de estar na segunda forma normal a gente chega na terceira forma normal depois de passar pela primeira e pela segunda na verdade a terceira forma normal é uma espécie de objetivo da normalização você faz a primeira chega na segunda forma normais mas para poder implementar a tabela mesmo você precisa chegar na terceira também ou na forma normal de boy cod que a gente vai estudar em outro vídeo então a tabela vai estar na na terceira forma normal quando já estiver na segunda e não existirem as dependências
transitivas tá ou seja se ela estiver na segunda forma normal e nenhuma coluna nenhum atributo não chave depender de um outro atributo não chave certo e só Relembrando O que que é uma dependência transitiva é uma dependência funcional entre dois ou mais atributos que não sejam chave vai bem simples o conceito a gente até já teve um vídeo falando especificamente sobre dependências mais uma informaçãozinha sobre a terceira forma normal ã como é que a gente vai resolver então para cada atributo ou para cada grupo de atributos não chave e que for um determinante a gente
cria uma nova tabela e esse atributo ele vai ser a chave primária da nova relação Então se o atributo a depende do atributo b e nenhum deles é chave a gente cria uma nova relação e esse atributo B passa a ser a chave Prim dessa nova relação legal ã e claro a gente também tem que manter esse atributo na tabela original para poder estabelecer o relacionamento entre elas então eu tiro um atributo tiro o atributo do qual ele depende monto uma nova relação mas esse atributo do qual o primeiro atributo Depende Ele tem de permanecer
na tabela original para que possa ser possível a gente conectar Ligar essas tabelas pro meio de um relacionamento meio confuso vamos ver um exemplo então para ficar mais simples a história pro nosso exemplo eu vou utilizar uma tabelinha de vendas que a gente tem aqui eu chamei de tbl Underline venda essa tabela tem cinco colunas cinco atributos que são a nota fiscal código do vendedor nome do vendedor código do produto e a quantidade vendida então eu tenho essas informações para uma venda de um produto qualquer e aqui eu tenho essa tabelinha expandida com alguns dados
fictícios preenchidos para ficar mais fácil enxergar o que tá acontecendo Então temos alguns números de nota fiscal nota fiscal é a chave primária tá então ela não se repete eu tenho o código do vendedor o código do vendedor ele pode se repetir porque um vendedor Claro ele pode realizar mais de uma venda na loja cada vendedor tem seu nome né O código é uma representação interna do sistema da loja mas ele tem o seu nome obviamente o produto que foi vendido ele também tem um código que também tá representado aqui lembrando que o produto também
pode ser ele pode constar em várias notas fiscais porque eu posso vender um produto várias vezes não o mesmo produto físico mas a mesma categoria de produto então eu posso vender por exemplo um telefone celular em várias vendas basta que eu tenha em estoque quantidade necessária e a quantidade quantidade vendida aparece aqui na última coluna certo bom essa tabela ela tem problemas tá ela não está na terceira forma normal nós temos aqui atributos tá que não dependem única e exclusivamente da chave primária que é a nota fiscal tá temos alguns atributos que não dependem Então
se a gente for normalizar essa tabela Olha o que vai acontecer eu criei uma tabelinha chamada tbl vendedor por quê porque se a gente olhar aqui na tabela anterior ã a nota fiscal ela tem o código do vendedor ali registrado Então esse código do vendedor depende da nota fiscal correto tá já o nome do vendedor não depende da nota fiscal ele depende é do código do vendedor então para saber o nome do vendedor eu preciso do código do vendedor mas para saber qual é o código do cara que fez uma venda basta olhar na Nota
Fiscal porque lá vai est registrado o código do vendedor então o código depende da nota mas o nome do vendedor não depende do código do vendedor em si não necessariamente da nota nesse esse exemplo tá então neste caso a gente tem um atributo que depende de um outro atributo que não é chave ou seja o nome do vendedor depende do código do vendedor que por sua vez não é uma chave primária tá temos aqui a tal da dependência transitiva se ele dependesse diretamente da nota fiscal aí ok ele poderia ficar aí tranquilamente já estaria na
terceira forma normal essa coluna certo então ã o código do produto também depende da nota fiscal nesse caso eu quero saber qual produto foi vendido olha na nota fiscal e a quantidade também quero saber quantos foram vendidos olho na Nota Fiscal tá para cada uma delas eu vou ter uma quantidade diferente mesmo que seja o mesmo produto por exemplo na Nota Fiscal 15326 o produto 132 teve 10 unidades vendidas já na nota 153 29 o produto 132 teve nove unidades vendidas então a quantidade vendida não depende especificamente do código do produto mas sim da nota
fiscal de venda legal dito isso a gente normaliza esse cara fazendo o seguinte eu criei uma tabelinha a parte e coloco nessa tabelinha a coluna né que é um atributo não chave que depende do outro atributo não chave que no caso é o nome do vendedor então o nome do vendedor vem para cá Leila Ana Renato e Fábio são os quatro vendedores que a gente tem aqui nessa loja e aí eu preciso colocar e o atributo do qual ele depende n ele Depende de de quem do código do vendedor Então beleza eu puxo o código
do vendedor para cá e monto a minha tabelinha e aqui esse código se transforma numa chave primária uma PK a ele não se repete assim como o nome do vendedor depende exclusivamente do código do vendedor ã o nome do vendedor ele sai da tabela de vendas mas o código do vendedor tem que permanecer porque lembra Esse Cara depende da nota fiscal então ele está no lugar certo só que aí a gente precisa estabelecer uma relação entre as duas as tabelas num relacionamento entre as relações entre a tabela de vendas e a tabela de vendedor por
quê Porque eventualmente eu vou querer fazer uma consulta para saber o nome do cara do vendedor que vendeu os produtos na nota vamos supor 15327 o nome dele não está aqui porque a tabela Tá normalizada mas o código dele está aqui a partir do código eu consigo puxar o nome aqui na tabela de vendedor no caso seria a Ana então eu mantenho essa coluna aqui tá então a coluna da qual atributo não chave depende eu mantenho aqui e aqui ela se transforma numa chave estrangeira Olha só FK foreign Key de modo que eu só consigo
registrar agora aqui nesta coluna os vendedores cujo código existirem na tabela de vendedor a gente também mata o conceito aí de de integridade tá integridade referencial no caso dessa forma a tabela fica normalizada na terceira forma normal certo aí na verdade agora temos duas tabelas na hora de implementar no banco de dados a gente vai criar a tabela de venda e vai criar também a tabela de vendedor fazendo a conexão entre elas Beleza então essa é a ideia da terceira forma normal eliminar os atributos não chave que dependam de outros atributos que também são não
chave certo muito bem pessoal então resumindo os passos da normalização que a gente viu até agora aqui no curso partindo de uma tabela não normalizada a gente remove os atributos multivalorados e compostos E aí você chega na primeira forma normal estando na primeira forma normal a gente remove as dependências parciais se existirem e após a remoção E aí Claro e criando outras tabelas se for necessário a gente chega na segunda forma normal e estando na segunda forma normal a gente remove as dependências transitivas como a gente acabou de ver e assim Chegamos na terceira forma
normal e estando na terceira forma normal sua tabela já estará basicamente pronta para ser implementada no banco de dados fisicamente legal ainda é possível continuar normalizando se for o caso apesar de não ser muito comum um próximo passo seria a gente ir pra forma normal de boy cod tá que é bem parecida com a terceira forma normal essa forma normal de boy cod a gente vai estudar na próxima lição já Vimos a primeira segunda e terceira forma normais e agora a gente vai uma forma normal um pouquinho diferente um pouquinho especial que a forma normal
de boy scod ou para os íntimos fnbc na verdade a forma normal de boy cod ela é relativamente similar a terceira forma normal é como se fosse uma melhoria da terceira forma normal a definição original da terceira forma normal como foi proposta por cod ela não lidava adequadamente com tabelas que tivessem duas ou mais Chaves datas ao mesmo tempo e que essas chaves candidatas fossem compostas tá E além disso que elas tivessem superposição O que significa atributos em comum então A ideia é a seguinte se na sua tabela você tiver mais de uma combinação de
Chaves ã que possam ser Chaves candidatas E essas combinações utilizarem o mesmo atributo a gente diz que tem uma superposição e nesse caso a gente tem alguns problemas que podem causar anomalias e isso a gente a gente consegue resolver fazendo a normalização até a forma normal de boy code tá Ah se não tiver ah essas condições ocorrendo na tabela basta aplicar a terceira forma normal e sua tabela tá prontinha para ser implementada no banco de dados se você quiser tá mas se tiver esses problemas a gente vai aplicar a forma normal de boys code bom
a uma tabela Ela está na fnbc se também estiver na terceira forma normal então a gente chega até a terceira forma normal E aí se se for o caso se for necessário a gente aplica mais um passo de normalização tá Ah quando a tabela tabela tiver mais de uma chave candidata então podem ocorrer as anomalias como eu já citei uma relação R relação R é uma tabela tá ela vai estar na forma normal de bo cod sempre que uma dependência funcional do tipo não trivial X para a se mantiver na tabela R de forma que
x seja uma uma super chave de R essa é uma definição formal e técnica da ideia dessa forma normal bom a gente falou de dependência funcional determinante etc então alguns pontos que a gente precisa considerar ou relembrar para poder entender melhor a forma normal de boys cod que que é um determinante quando você representa por meio de símbolos uma um relacionamento né entre atributos o determinante é o item que fica do lado esquerdo de uma dependência funcional como por exemplo letra x em XY aqui a gente lê como x determina funcionalmente Y ou se você
quiser ler ao contrário Y é dependente funcionalmente de X portanto a gente tá aqui se referindo aos atributos da tabela atributo x ou conjunto de atributos x e atributo y tá dizendo que o atributo y ele é dependente de x ou que x determina funcionalmente Y legal a gente já viu um vídeo falando especific sobre dependências funcionais e se você tiver com um pouco de dificuldade para relembrar só dá uma olhadinha naquele vídeo Tá mas a ideia é essa daqui não vai muito além disso e a gente tem vários tipos de dependências funcionais uma delas
é chamada de trivial que é uma dependência que não pode deixar de ser satisfeita daí o nome trivial tá a gente diz que uma dependência funcional ela é trivial se o lado direito da expressão for um subconjunto do lado esquerdo ou seja se o conjunto de atributos x contiver o atributo y então por exemplo a determina B ele é uma dependência trivial se B for um subconjunto de a se B fizer parte de A aqui no exemplo Suponha que eu tenha uma chave composta ã que possui os atributos ID do funcionário e nome do funcionário
a gente sabe que o ID do Funcionário é um subconjunto dessa chave composta de ID e n então a gente diz que aqui existe uma dependência funcional trivial legal essa é a ideia da DF trivial DF dependência funcional então tendo essas duas ideias em mente a gente vai falar Mais especificamente da forma normal de boy code agora então como é que a gente define Tecnicamente a fnbc Pense numa relação aqui eu tenho um exemplo de uma relação que eu chamei de forne fornecedor e essa relação tem os atributos número do fornecedor ou ID do fornecedor
nome do fornecedor ã número ou Identificação do produto e quantidade essa tabelinha aqui ela é inspirada numa tabela que tá no livro do date que explica sobre formas normais Então nesse caso a gente tem essa essa relação forn composta por ID ou número do fornecedor nome do fornecedor número do produto e quantidade do produto tudo na mesma tabelinha tá aqui a gente consegue identificar ah duas combinações de Chaves candidatas Então olha que interessante a nossa análise se a gente tentar achar uma chave primária aqui a gente vai ter problemas número do fornecedor não pode ser
uma chave primária por claramente ó ele se repete várias vezes tá porque o fornecedor ele pode fornecer vários produtos e ele tá sendo repetido várias vezes aqui o nome do fornecedor sozinho também não pode ser uma chave primária porque ele também se repete várias vezes obviamente tá mas a combinação n a combinação do número do fornecedor com o número do produto pode dar uma chave primária então a gente diz que isso aqui é uma chave candidata tá número do fornecedor e número do produtos juntos chave candidata porque você vai perceber na nossa tabelinha que não
existe a repetição desses dois Campos ao mesmo tempo então quando fornecedor é F1 e o produto é P1 Você tem uma linha ã e essa linha não vai acontecer de novo nessa tabela você vai ter o fornecedor um e o produto dois fornecedor um e produto TR e assim sucessivamente Então temos uma chave candidata não necessariamente Isso vai ser a chave primária da tabela é candidata só que a gente também pode combinar o nome do fornecedor com o produto para termos uma outra chave candidata tá essa combinação também não se repete hm P2 ACM p3
Umbrella P1 e assim por diante tá então a gente tem o problema aqui que pode ser resolvido norm isando até o fnbc tá que é o problema de ter as chaves candidatas compostas tá com o atributo que se repete entre elas a superposição onde é que tá a superposição produto é superposição porque ele faz parte de ambas as combinações de Chaves candidatas tá então aqui a gente tem tipicamente um caso paraa forma normal de boy cod resolver tá e a gente vai resolver essa tabelinha aqui tá como é que a gente vai fazer isso como
é que a gente normaliza a forma normal de boys code a gente tem que decompor a tabela né como a gente fez para as outras formas normais eh para isso a gente tem que encontrar as dependências funcionais não triviais que violem a condição da forma normal tá E aí a gente divide a tabela em duas numa das tabelas a gente leva os atributos X e Y ou seja os atributos que são dependentes e na outra tabela a gente coloca os atributos restantes da tabela original juntamente com a um atributo X que faz parte da chave
tá é um pouco confuso isso vamos ver na prática como é que vai ficar Então só Relembrando a gente vai normalizar essa tabelinha aqui fornecedor que tem o número do fornecedor o nome do fornecedor número do produto e a quantidade do produto tá com duas Chaves compostas candidatas uma com o número do fornecedor e o nome e outra com aliás o número do fornecedor e o produto e outra com o nome do fornecedor e o produto também tá então vai ficar da seguinte forma resolvendo o exemplo em uma das tabelas a gente vai colocar o
número do fornecedor e o nome do fornecedor tá apenas essas duas informações assim não haverá repetições Olha só agora a gente garante que cada linha representa um único registro exclusivo Tá mas o produto e a quantidade esses caras vão para uma outra tabela que eu chamei de forn Underline prod tá nessa tabela eu vou ter o número do fornecedor mais o número do produto mais a quantidade E aí qual vai ser a chave primária dessa tabela vai ser a combinação de número do fornecedor com o número do produto e aí essa tabela também está normalizada
na fnbc legal então cada linha vai ter uma informação diferente alternativamente em vez de usar número do fornecedor e número do produto a gente pode usar o nome do fornecedor e o nome do produto porque lembra tanto o nome do fornecedor quanto o número do fornecedor fazem parte das chaves candidatas então qualquer um deles pode ser usado Então pode haver mais de uma decomposição possível válida quando você trabalha com a fnbc então poderia ser essa tabela for com o número do fornecedor e o nome do fornecedor mais forn prod no caso aqui o nome do
fornecedor tá fica até mais legal colocar forn nome prod pronto só para não confundir aqui e essa tabela segue a mesma ideia nome do fornecedor combinado com o número do produto chave composta E aí a gente trouxe para cá a quantidade certo deixando então a combinação de nome do fornecedor com o ID do fornecedor na tabela separada essas duas tabelas ou essas duas aqui resolvem o exemplo até fnbc beleza muito bom b fnbc não é muito comum e às vezes dá um pouquinho de trabalho para entender exatamente como ela funciona então vamos fazer um segundo
exemplo agora tem um outro exemplo aqui bem clássico tá esse exemplo aqui é de uma tabela chamada que eu chamei de tbl ADP tá aluno disciplina professor e ela tem essas informações números de identificação de alunos ou poderiam ser nomes também tanto faz aqui se é nome número caracter etc nomes de disciplinas e nomes de professores que ministram as disciplinas então a ideia aqui é a seguinte cada aluno vai vai vai aprender uma disciplina que é lecionada por um professor então por exemplo aluno 500 aprende matemática com o professor Fábio o aluno 503 aprende matemática
com a Sandra e ele também aprende história com o Nunes tá só que cada professor leciona só uma disciplina então o Fábio só leciona matemática Ana Maria só leciona história tá o Jorge só leciona física e assim sucessivamente mas uma disciplina pode ter mais de um professor como aqui na nossa escola matemática é lecionada pelo Fábio e pela Sandra também assim como história pela Ana Maria e pelo Nunes legal essa é a nossa tabelinha Quais são os problemas com ela a gente tem Unos problemas de anomalias aqui por exemplo se eu excluir um aluno na
tabela as informações do professor orientador também somem então se eu excluir o aluno 501 automáticamente ao excluir esse registro inteiro some o professor Jorge com a disciplina física aí eu fico sem saber Qual é o professor que leciona física Olha que interessante se eu adicionar um novo aluno ou novo Professor um orientador por exemplo a gente também vai ter um problema tá por exemplo se adicionar um novo Professor Obrigatoriamente eu tenho que adicionar um aluno mesmo que não tenha esse aluno ainda então vamos supor que eu vou cadastrar o professor de geografia aqui mesmo que
não tenha aluno cadastrado nessa disciplina eu preciso colocar um aluno porque senão não consigo inserir o reg reg de professor fica faltando a informação tá e finalmente se eu atualizar uma informação de um aluno também tem que atualizar automaticamente a informação sobre o professor Então a gente tem esses probleminhas que a forma normal decod vai resolver Tá além disso disciplina ela é parte de uma chave candidata composta tá então a gente vai ter uma chave candidata também incorporando a coluna de disciplinas tá e a gente sabe a forma normal de boy cod lida justamente com
isso com Chaves candidat compostas a gente pode ter a combinação de aluno com disciplina para formar chave candidato ou de disciplina com professor então disciplina é a coluna que tem superposição bom então vamos resolver isso aqui como é que fica isso resolvido na forma normal de boys cod criei duas tabelas tbl ap e tbl PD que significa aluno professor e professor disciplina tá na tabela ap eu coloco a combinação de aluno com seu professor orientador assim a gente não tem linhas repetidas que por exemplo o aluno queice TR que cursa duas disciplinas Tá combinado com
a Sandra e com o Nunes então não há repetições e aqui na tabela Professor disciplina eu tenho o nome do professor e a disciplina que ele leciona tá Ah posso ter mais de uma disciplina nessa e essa disciplina vai ser lecionada sempre por um ou mais professores e um professor só vai lecionar uma única disciplina e a gente tem essas combinações aqui resol vendo então o problema ah pra normalização daquela nossa tabelinha usando a fnbc legal dessa forma a gente chegou ao final da normalização dessa tabela que que são essas 12 regras de cote são
um conjunto de na verdade 13 regras enumeradas de 0 a 12 são 12 regras mais uma regra zero principal que foram publicadas pelo cientista da Computação Edgar F cod na revista computer World em 85 faz tempo já a ideia dessas regras era definir o que é necessário para que um sistema de gerenciamento de bancos de dados possa ser considerado efetivamente realmente relacional ou seja um sgbdr Quem foi Edgar F cod Edgar Frank Ted cod foi um cientista da Computação inglês já falecido Infelizmente trabalhando paraa IBM nos anos 70 ele inventou o modelo relacional n um
modelo de bancos de dados que a gente usa largamente hoje em dia que tem tudo a ver com o modelo e entidade de relacionamento mas não são a mesma coisa modelo e entidade de relacionamento foi desenvolvido pelo cientista da Computação Peter Shane tá e publicado num artigo que se chamava the entity relationship model toward a unified view of data publicado em 76 é anterior na faculdade Inclusive eu tive que ler essa obra na egre existe em português inclusive Mas voltando ao Edgar cod então ele desenvolveu o modelo relacional eh e nos anos 80 esse modelo
começou a se popularizar até então os bancos de dados utilizavam outras abordagens como por exemplo os bancos de dados hierárquicos ou em rede só que começaram a ocorrer alguns problemas os fabricantes e fornecedores de bancos de dados eh começaram a distribuir muitos deles não todos mas muitos deles começaram a distribuir bancos de dados sistemas de gerenciamento de bancos de dados que eram na verdade pertencentes a modelos mais antigos só aqui com uma uma capinha de modelo relacional então é um um recurs Sinho presente no modelo relacional já era suficiente para que o fornecedor dissesse que
aquele banco era totalmente relacional e começavam a vender os produtos desta forma então cod teve que iniciar uma campanha para evitar que esse termo fosse mal utilizado pelos fornecedores tá e como parte dessa campanha que era grande Ele publicou essas 12 regras para definir efetivamente o que que constituía um banco de dados relacional Então essas 12 regras elas servem como uma espécie de conjunto de padrões que um sistema de gerenciamento de bancos de dados deve atender para ser considerado verdadeiramente relacional e curiosamente isso complicou o trabalho dele na própria IBM ele acabou saindo para formar
uma empresa de consultoria com Christopher jdate e outras pessoas c j date inclusive também bastante famoso um grande autor de livros de bancos de dados um dos livros mais famosos de toda da história de bancos de dados é do CJ date que inclusive eu tenho aqui Este é o grande livro do date sistemas de bancos de dados para cá legal esse livro aqui é um dos melhores livros que eu já li da área de Tecnologia de toda a minha vida introdução a sistemas de bancos de dados esse aqui é uma versão antiga sétima Edição americana
tá já tá numa edição mais moderna mas tá aí sobre o cjd falaremos em um outro vídeo Voltando às 12 regras de código vamos ver quais são essas regras efetivamente então entender um pouquinho de cada uma delas começamos pela regra zero a regra fundamental a regra é a seguinte para qualquer sistema anunciado como ou que Alega ser um sistema de gerenciamento de bancos de dados relacional esse sistema deve ser capaz de gerenciar bancos de dados inteiramente por meio de suas capacidades relacionais em outras palavras o que essa regra diz é que um sistema de gerenciamento
de bancos de dados verdadeiro deve ser capaz de realizar todas as operações e manipulações de dados usando apenas a linguagem relacional e as capacidades intrínsecas do modelo relacional Isso significa que a linguagem de consulta e manipulação de dados que vai ser usada que pode ser o SQL por exemplo deve ser suficiente para realizar todas as operações necessárias sem a necessidade de nenhum tipo de extensão que não é relacional e nenhuma linguagem externa o sistema de gerenciamento pode ter funcionalidades Não relacionais mas ele T de funcionar inteiramente usando essas funcionalidades relacionais Essa é a regra zero
regra Fundamental e todas as demais Regras São motivadas pela regra zero definida aqui regra um a regra da informação todas as informações em um banco de dados relacional são representadas explicitamente no nível lógico e exatamente de uma maneira por valores em tabelas ou seja o banco de dados ele pode conter diversas informações os dados que os usuários acessam metadados que constituem o banco de dados e essas informações são sempre armazenadas em tabelas constituídas por linhas e colunas ou seja todas as informações do banco de dados devem ser representadas de apenas uma forma e essa forma
é organização em um layout de tabelas próxima regra regra do acesso garantido é garantido que todo e qualquer dado valor atômico em um banco de dados relacional seja logicamente acessível recorrendo a uma combinação de nome de tabela valor de chave primária e o nome de uma coluna ou seja essa regra Segura que cada valor armazenado no banco de dados relacional seja acessível de uma maneira precisa e direta usando a chave primária é para identificar exclusivamente uma linha e o nome da coluna para especificar Qual é o atributo que você deseja por exemplo o nome de
um cliente ou o preço de um produto dessa forma os usuários podem recuperar qualquer dado de uma maneira única e padronizada Então essa é uma regra importante é o acesso garantido aos dados Regra Três tratamento sistemático de nulos os valores nulos que são distintos de uma sequência de caracteres vazia ou de uma sequência de caracteres em branco e também distintos de zero ou qualquer outro número são suportados em Sistemas relacionais totalmente relacionais para representar informações ausentes e informações inaplicáveis de forma sistemática isso independe do tipo de dados em outras palavras o sistema o sistema de
banco de dados deve permitir que cada Campo possa permitir possa permanecer nulo ou vazio exceto a chave primária Portanto ele deve suportar uma representação de falta de informação e informações inaplicáveis tá diferente de zero ou outros números assim ele permite a representação de informações desconhecidas ou ausentes com esses valores do tipo nul isso é bastante importante por exemplo se um dado falta ou não existe e você precisa registrar uma informação no banco de dados esse dado ele vai uma coluna que vai aceitar um número Claro que a gente pode impor que a coluna não aceite
nulos mas isso aí tem a ver com o design do banco de dados o sistema de banco de dados relacional deve permitir que a gente possa ter colunas nulas regra 4 regra do catálogo online dinâmico a descrição do banco de dados é representado no nível lógico da mesma forma que os dados comuns de modo que os usuários autorizados quem tem acesso ao banco possam aplicar a sua interrogação sua seu questionamento a mesma linguagem relacional que aplicam aos dados regulares a ideia aqui é dos metadados a gente tá falando de metadados que são os dados que
representam que informam como é a constituição interna do banco de dados e esses metadados eles têm que ser armazenados e gerenciados como se fossem dados comuns ou seja em elas também dentro do banco de dados mas precisamente em um catálogo do banco de dados e esses dados têm que estar disponíveis para usuários que são autorizados utilizando o quê uma linguagem de consulta padrão do banco de dados essa descrição pode incluir tabelas colunas Chaves primárias Chaves estrangeiras visões procedimentos armazenados e qualquer outro elemento que componha a estrutura do banco de dados essa representação ela vai ser
feita no nível Lógico o que que é o nível Lógico é onde os usuários interagem com o banco de dados tá ou seja os metadados são acessíveis pelos usuários usando uma linguagem padrão que pode ser o SQL regra C sublinguais e também suporte operações para manipulação dos dados atualização recuperação inserção operações de segurança restrições de integridade e transações o sistema relacional ele na verdade pode suportar várias linguagens diferentes Porém uma linguagem No mínimo deve haver cujas instruções sejam expressas de acordo com uma sintaxe definida padronizada né na forma de cadeas de caracteres e que tenha
suporte às definições de dados vios ulação de dados as restrições autorizações e transações no geral essa linguagem é oql poderia ser uma um outro tipo de linguagem existem outros tipos de linguagem de consulta mas o padrão atualmente para bancos de dados relacionais é o SQL Então essa su linguagem se refere Mais especificamente à linguagem sqr regra seis atualizações de visualizações ou visões ou vios todas as visões que são tabelas de visualizações que são Teoricamente atualizad também são atualizáveis pelo sistema no qual atualização significa também inserção e exclusão e modificação significa que quando você cria uma
vi no banco de dados relacional que é uma tabela virtual baseada numa consulta Se essa View Teoricamente permite ser atualizada ou seja ela pode sofrer as operações de inserção atualização ou exclusão de registros então o sgbd ele tem de ser capaz de realizar essas atualizações de forma consistente isso vai garantir que essas visões que são usadas no geral para simplificar e personalizar a visualização dos dados não só mostrem informações mas também possam ser atualizadas sempre que for aplicável assim se comportem como se fosse uma tabela que realmente faz parte da estrutura do sistema regra sete
inserção atualização e exclusão de alto nível a capacidade de tratar uma relação base ou uma relação derivada como único operando aplica-se não somente à recuperação de dados mas também inserção atualização e exclusão de dados que que significa isso que os dados podem ser recuperados no banco relacional em conjunto de dados construídos por várias linhas ou até mesmo por várias tabelas então eu posso retornar de um banco de dados os dados de uma ou mais linhas ou de uma ou mais tabelas quando for necessário isso a gente chama de consulta e o sgbdr também deve suportar
operações de União intersecção ração inserção e outras tantas O que traz bastante flexibilidade e poder para modelo relacional permite que essas operações de manipulação de dados sejam aplicadas de forma eficiente consistente tanto em tabelas quanto em visões as views que a gente tratou na regra anterior regra oito a regra da Independência física dos dados os programas aplicativos e as atividades de terminal permanecem logicamente inalterados sempre que qualquer interação é feita nas representações de armazenamento ou nos métodos de acesso O que que significa isso bom se os dados forem atualizados ou a estrutura física do Banco
for alterada uma coluna adicionada ou retirada etc isso não vai exercer nenhum efeito nos aplicativos externos que acessam os dados no banco então o aplicativo externo continua acessando o banco de dados de forma normal tá sem sem modificação portanto as alterações na implementação física do Banco a armazenamento indexação etc não afetam aplicações nem tampouco as consultas regra nove agora temos a regra da Independência lógica dos dados aqui é o seguinte os programas aplicativos e as atividades do terminal vão permanecer logicamente intactos quando alterações de qualquer tipo que preservem informações que Teoricamente permitam a integridade são
feitas nas tabelas base parecido com a independência física só que a ideia aqui é a seguinte por exemplo se uma tabela for dividida em duas tabelas ou tabelas forem Unidas para criar uma outra tabela essas alterações não podem afetar o aplicativo de visualização que o usuário tá usando usuário continua enxergando os dados normalmente então alterações na estrutura lógica tabelas visões não afetam as aplicações existentes tá então alterações emv Lógico não vão afetar a visualização do usuário estrutura de tabelas não altera a aplicação que acessa o banco de dados regra 10 dependência de integridade as restrições
de integridade específicas de um banco de dados relacional em particular devem ser definíveis numa subl linguagem de dados relacionais e armazen no catálogo e não nos programas aplicativos is é importante aqui a gente tá falando de integridade tanto de entidade que tem a ver com chave primária ou de integridade referencial que tem a ver com a chave estrangeira Então dessa forma as restrições de integridade são definidas em termos de uma su linguagem de alto nível por exemplo o SQL e informações sobre objetos identificados no banco de forma inadequada não são registradas no banco de dados
relacional essa regra vai permitir assim uma separação entre a lógica de integridade e a lógica dos aplicativos que são coisas distintas e as restrições de integridade vão ser gerenciadas e aplicadas no nível do banco de dados garantindo que as regras sejam consistentemente aplicadas independente da dos tipos diferentes distintos de aplicações que venham a interagir com o banco de dados então a gente chama isso de independência de integridade regra 11 independência da distribuição um sgbd relacional possui Independência de distribuição que é isso um banco de dados Ele deve funcionar corretamente mesmo que ele seja armazenado em
locais diferentes e usado por usuários finais distintos é isso que significa tá a tribuição dos dados tem que ser transparente para usuário e não deve afetar a funcionalidade do sgbd Então as aplicações existentes necessitam sempre continuar funcionando corretamente quando uma versão distribuída do banco de dados é introduzida e quando dados distribuídos existentes são redistribuídos em outras localidades físicas ou seja pro usuário tanto faz onde é que tá esse dado onde é que tá esse banco não importa o que aconteça o usuário continua acessando os dados normalmente tá e não precisa se preocupar com com essa
distribuição de dados quer seja no mesmo banco de dados quer seja em servidores distintos última regra regra 12 a regra de não subversão se um sistema relacional tiver uma linguagem de baixo nível de registro único por vez esse baixo nível não pode ser usado para subverter ou contornar as regras e restrições de integridade que são expressas na linguagem relacional de nível superior com múltiplos registros por vez significa isso se o sistema ele tem uma forma de interagir com um único registro por vez a funcionalidade de baixo nível ou seja de acessar aquele registro único não
pode ser usada para burlar as regras e garantias de integridade que foram definidas pela linguagem normalmente que opera em grupos de registro simultaneamente isso vai assegurar sempre a integridade dos dados né que que a integridade dos dados seja mantida mesmo quando operações individuais em registros isolados sejam permitidas ou seja essa regra vai evitar que operações em registros únicos individuais em linhas individuais registro é linha tá sejam usadas de maneira inadequada para burlar as regras de de integridade do banco de dados modificando assim o conteúdo de dados do próprio banco então uma regra que tá tá
atrelada à segurança dos dados em si Beleza então vimos aí as 12 regras de có 13 regras na para que um banco de dados um sistema de gerenciamento de banc de dados possa ser considerado verdadeiramente relacional Então se um sistema de banco de dados segue essas regras ele é considerado um banco relacional verdadeiro com um adendo na prática nem todo o sistema de gerenciamento de bancos dados que é relacional realmente segue todas essas regras a risca mas segue a grande maioria delas e atualmente essas regras elas podem ser complementadas e devem ser complementadas por por
ideias e conceitos mais recentes Como por exemplo o terceiro Manifesto do CJ date e hug Darwin que você vai encontrar no site The Third manifesto.com comom e o terceiro Manifesto é uma obra que propõe uma extensão e o aprimoramento desses conceitos do modelo relacional de bancos de dados Traz umas ideias distintas como tipos de dados relacionais e eliminação de anomalias em atualização de dados por exemplo Então embora as regras de cód fossem perfeitamente adequadas paraa época algumas delas podem ser um pouquinho ultrapassadas e é interessante serem complementadas por pelo terceiro manifesto que na verdade é
uma série de artigos tá escritos pelo datade e pelo Darwin e em um outro vídeo eu vou e vou explorar com vocês o terceiro manifesto e a gente vai entender um pouquinho melhor essas outras ideias que tem a ver com sistema de bancos de dados relacionais e modelagem de dados como um todo nós vamos criar um banco de dados para gerenciamento de uma faculdade então qual que é o objetivo ou os objetivos desse banco de dados realização do controle Centralizado dos alunos matriculados na Faculdade dos professores que trabalham lá dos cursos existentes as disciplinas dentro
de cada um dos cursos que os alunos cursam e os professores ministram geração de histórico escolar e as turmas form pelas disciplinas e pelos alunos tá então nosso banco de dados ele tem como objetivo permitir a centralização de todas essas informações e aí Claro fazer consultas de forma rápida e simples para descobrir informações como por exemplo qual aluno cursa qual curso quem é o professor dele qual é a nota que ele teve foi aprovado não foi e assim por diante e esse é um projeto relativamente simples na verdade não é nada muito complexo mas a
gente não pode fazer alguma coisa muito complexa aqui aqui no nos vídeos do YouTube porque sen não toma muito tempo fica maçante tá E foge ao escopo da nossa ideia que fazer uma apresentação básica ã da disciplina e para que você possa treinar um pouquinho o que foi visto nos vídeos anteriores tá então esse aqui é o nosso projeto o banco de dados para gerenciamento de uma faculdade ou de uma universidade como é que a gente vai trabalhar com esse projeto ele tem várias fases Aqui nós temos as principais fases desse projeto a gente vai
fazer um levantamento de requisitos que é basicamente analisar as regras de negócio para saber o que que precisa ser feito tá a gente não tem como saber exatamente o que que vai ser feito nesse banco de dados até que o cliente a empresa que precisa do banco de dados nos diga o que ela quer que o banco de dados ofereça E aí a partir disso a gente vai fazer a identificação das entidades e dos relacionamentos aqui ainda faz parte do levantamento de requisitos para então poder criar o modelo entidade de relacionamento do modelo entidade de
relacion a gente vai derivar o diagrama entidade de relacionamento na verdade trabalham juntos esses conceitos a gente vai ter um dicionário de dados Esse dicionário ele vai ser atualizado constantemente né ao longo do trabalho depois a gente vai ter que aplicar uma normalização em cima das tabelas geradas né a partir do diagrama entidade de relacionamento modelo etc e depois de normalizadas as tabelas a gente vai tentar fazer uma implementação utilizando um sistema de gerenciamento de bancos de dados real provavelmente MySQL Tá mas a implementação na verdade ela pode ser feita em qualquer banco de dados
porque eu vou utilizar a linguagem SQL ã com relação ao SQL é importante que você conheça o SQL para poder acompanhar essa Essas duas últimas fases a implementação e os testes mas até lá você vai ter tempo para assistir alguns vídeos sobre SQL e aprender o basicão aí sobre criação de tabelas de bancos de dados Como inserir dados etc não precisa ser nada muito avançado é só basicão mesmo para criar o banco de dados e fazer uma carga de informações pra gente poder na última etapa fazer os testes básicos os testes básicos Na verdade são
consultas que a gente vai fazer no banco de dados para verificar se ele responde da forma adequada da forma como a gente esperava que ele funcionasse certo tudo bom então esse aqui vai ser o nosso projeto a gente pode já nesse vídeo a gente tem um tempinho a gente pode dar uma olhadinha nas regras do negócio em algumas das regras Então eu tenho algumas das regras de negócio que a nossa empresa fictícia nosso cliente fictício vai passar pra gente poder começar a criar esse banco de dados não tem todas as regras aqui tá ã isso
é uma coisa que costuma acontecer muito no mundo real a empresa o seu cliente passar tudo que ele precisa mas sempre faltar alguma coisa ou porque o cliente esqueceu de passar informação ou porque ele não sabia que aquilo era relevante e importante para você poder fazer a sua modelagem Então a gente vai seguir essas regras de negócio mas ao longo do projeto algumas coisinhas podem ir mudando a gente vai ter que fazer as adaptações necessárias certo então Olha só vamos analisar um pouquinho as regras de negócio principais no banco de dados que vai armazenar essas
informações da faculdade a gente vai ter informações sobre os alunos e uma informação importante é que o aluno ele só vai poder estar matriculado em um curso por vez Então se o aluno tiver matriculado na graduação em matemática ele não pode fazer graduação em física ao mesmo tempo por exemplo ele só vai poder est em um curso por vez os alunos eles vão ter um código para identificação que é o ra então cada aluno tem seu ra aqui não tá dizendo como é que tem que ser esse ra Qual que é o padrão se é
letra número etc Então a gente vai decidir isso posteriormente os cursos Nos quais os alunos vão se matricular eles são compostos por várias disciplinas então por exemplo um curso de biologia tem várias disciplinas tem botânica tem zoologia citologia e assim por diante cada uma das disciplinas vai vai ter no máximo 30 alunos por turma então tem um número máximo de alunos que podem cursar aquela turma se a gente tiver mais do que 30 alunos tentando cursar uma disciplina a gente vai ter que abrir uma outra turma para essa disciplina para manter a qualidade do do
curso né menos alunos na na sala a qualidade é maior Apesar que 30 alunos é bastante gente isso me lembra na época da faculdade na nós tínhamos uma disciplina chamada estruturas de dados que em um dado semestre chegou a ter 70 alunos e as turmas lá tinham por volta de 30 35 alunos no geral em média mas não tinha essa regra de máximo Então tinha tanta gente pegando DP dessa disciplina porque ela é difícil que acumularam-se 70 pessoas em um dado semestre mas aqui não vai poder acontecer isso tá as disciplinas elas podem ser obrigatórias
ou optativas vai depender do curso Então para alguns cursos a disciplina é obrigatória para outros ela é optativa Tá então vamos supor no curso de matemática a gente pode cri disciplina estatística como sendo obrigatória mas essa disciplina ela pode ser optativa num curso de biologia por exemplo então é importante a gente fazer essa classificação da das disciplinas as disciplinas elas pertencem a departamentos Então vai ter um departamento por exemplo de matemática um departamento de ciência da computação e assim por diante e as disciplinas elas estão associadas a esses departamentos Essa informação tem que estar no
banco de dados também e as disciplinas são identificadas por um código de identificação da disciplina também não tem o padrão que deve ser usado a gente vai criar um padrão bom temos mais algumas regras de negócio os alunos eles podem trancar matrícula se eles precisarem E aí eles vão passar um semestre sem estar matriculados em nenhuma disciplina Então olha só isso é importantíssimo Pode parecer uma uma coisa banal trivial até meio boba mas é importantíssimo lembrar disso na hora de de modelar o banco porque Dependendo da forma como você modela o banco você não consegue
depois deixar o aluno sem estar matriculado em nenhuma disciplina tem que lembrar dessa regra porque ela é muito importante e em cada semestre o aluno vai vai poder se matricular no máximo em nove disciplinas as disciplinas do curso e eventualmente se ele tiver com alguma DP que ele tá carregando ele pode se matricular nessa ADP também ou fazer as disciplinas optativas mas não pode ultrapassar nove por semestre se ele precisar fazer mais do que no9 ele vai ter que jogar pro semestre seguinte e o aluno só pode ser reprovado no máxximo tr vezes numa dada
disciplina se ele for reprovar da quarta vez ele perdeu o curso a nossa faculdade vai ter no máximo 3000 alunos a capacidade dela em 10 cursos distintos Então nós vamos ter 10 cursos aí uma informação bem direta bem simples de entender todo ano entram 300 Alunos novos por meio de vestibular transferência que seja e no total são 90 disciplinas tá temos 10 cursos 90 disciplinas aproximadamente nove disciplinas por curso certo a gente vai ter em cada um deles mas é claro vai ter disciplina que vai aparecer em mais do que um curso Então os cursos
na verdade vão ter mais do que nove disciplinas em cada um deles bom temos mais algumas regrinhas para finalizar histórico escolar a ele vai ter o sistema vai permitir também que nós temamos histórico escolar com as informações das disciplinas que o aluno cursou no passado as que ele está cursando no momento tá ã as do passado vão ter a nota final do cara a frequência e o período do curso realizado as disciplinas atuais elas vão ter o nome da disciplina tá mas não vão ter ainda as informações de nota final e frequência apenas o período
previsto pro curso eh com relação aos professores eles podem ser cadastrados no banco mesmo que não estejam lecionando nenhuma disciplina naquele momento a gente teve um vídeo aqui anteriormente sobre normalização que uma das tabelinhas tinha essa anomalia né você tinha o aluno a disciplina e o professor e você não conseguia cadastrar o professor se ele não estivesse naquele instante eh ministrando né uma uma disciplina qualquer Então esse banco de dados já prevê isso previamente ele diz não pode acontecer tal coisa e o professor pode lecionar no máximo quatro disciplinas diferentes a gente vai ter 40
professores trabalhando na escola tá então cada professor no máximo quatro disciplinas vezes 40 a gente pode ter aí um arranjo com até 160 disciplinas como a gente vai ter 90 disciplinas tá tranquilo os professores não vão faltar inclusive alguns professores só vão ministrar uma única disciplina cada professor também é vinculado ao departamento e eles são identificados por um código de professor também não tá dizendo aqui como é que tem que ser esse código a gente vai bolar um padrão ao longo do do do nosso da nossa modelagem certo bom Essas são as regras principais do
negócio é o que que o o cliente nos passou mas a gente obviamente sabe que tem mais coisas serão importantes que deverão ser implementadas para que isso aqui Funcione ou cliente esqueceu de passar informações ou ele acha que não são importantes tá ou ele nem desconfia que existe aquilo também que precisa precisa ser colocado num banco de dados e a gente vai nos processos de análise H descobrir essas regras adicionais por assim dizer talvez criar algumas regras que sejam necessárias e acrescentar as regras de negócio pra gente poder criar a nossa modelar Beleza então é
isso ã eu recomendo que você que você se possível assista de novo o vídeo Preste bastante atenção nas regras de negócio para lembrar delas Porque é importante a gente vai ter que ter tudo isso em mente na nas próximas etapas tá depois eu vou deixar também todo esse material aqui disponível para você fazer um download tá desse projetinho todo incluindo as regras de negócio etc vou ao longo do tempo colocando uns links porque Vai facilitar para você poder trabalhar com ele e no nosso próximo vídeo a gente vai fazer a identificação das entidades e dos
relacionamentos com base nessas regras de negócio que foram passadas a gente vai pensar de dentro dessas regras Quem são as entidades Quais são os relacionamentos entre elas e obviamente eh criar os atributos para essas entidades bem Relembrando ã Qual o nosso projeto prático é um banco de dados pro gerenciamento de uma faculdade tá ou uma escola e os objetivos do nosso banco de dados são realizar um controle Centralizado dos alunos dos professores cursos disciplinas Man o histórico escolar dos alunos e também o controle das turmas tá e a gente vai modelar Então esse banco estamos
na Fas de identificação das entidades relacionamentos e obviamente dos atributos das entidades no vídeo passado nós fizemos o levantamento dos requisitos e a gente vai dar uma passada rápida nesse levantamento agora então pra gente relembrar as regras do nosso negócio do nosso projeto elas estão aqui na tela na forma de uma lista Então vamos passar rapidamente por ela só para relembrar nessa escola nessa nessa faculdade os alunos possuem um código de identificação um ra e os alunos estão matriculados em cursos Mas eles só podem fazer um curso por vez os cursos eles T várias disciplinas
A cada curso variável curso pode ter mais e outro pode ter menos disciplinas e as disciplinas tem no máximo 30 alunos por turma tá Então na verdade o aluno tá matriculado no curso e também na disciplina as disciplinas elas podem ser obrigatórias ou optativas então existem categorias de disciplinas depende do curso isso uma disciplina em um curso pode ser obrigatório e a mesma disciplina em outro curso pode ser optativa as disciplinas pertencem a departamentos específicos Então tem departamentos que gerenciam que controlam essas disciplinas e cada disciplina possui o seu código de identifica os alunos eles
podem trancar matrícula tá não estando matriculados em nenhuma disciplina naquele semestre então a gente já tem uma dica aqui de que os cursos são semestrais em cada semestre o aluno pode se matricular no máximo nove disciplinas portanto se ele tiver carregando DPS ele vai ter que mandar essas DPS pro outro semestre Se ultrapassar no disciplinas o aluno só pode ser reprovado no máximo três vezes na mesma disciplina a faculdade vai ter no máximo tr alunos matriculados simultaneamente com 10 cursos distintos teremos 300 Alunos novos por ano entrando e 90 disciplinas no total disponíveis espalhadas entre
os 10 cursos não significa que vai ter nove disciplinas por curso Exatamente pode ser que tenha mais ou menos depende do curso tá o histórico escolar vai trazer todas as disciplinas cursadas pelo aluno incluindo a sua nota final para saber qual que é o resultado do cara né se ele foi aprovado ou não sequência e o período do curso quando o curso foi realizado os professores eles podem estar cadastrados fazerem parte da escola mesmo que ele não que eles não estejam lecionando nenhuma disciplina e existem 40 professores trabalhando nessa escola cada professor pode lecionar no
máximo quatro disciplinas diferentes e os professores são vinculados aos departamentos das disciplinas os professores são também identificados por um código só aqui é um código de professor legal Então essas aqui são as regras principais do nosso negócio e a gente vai agora identificar as entidades atributos e relacionamentos Lembrando que não é um trabalho definitivo ainda tá essa é uma primeira identificação desses elementos que depois a gente vai trabalhando e eventualmente é praticamente certeza novas entidades atributos relacionamentos vão surgindo ao longo da análise lembre-se a gente tá fazendo um trabalho de modelagem que na verdade também
é um trabalho de análise e esse trabalho ele vai mudando ao longo do tempo então olhando essas regras de negócio essas três telas de regras que a gente tem aqui alguns itens se sobressaem alguns itens são bastante importantes a gente pode perceber por exemplo que que essa escola essa faculdade é altamente dependente de alunos disciplinas dos professores dos cursos também tá então alunos disciplinas cursos professores são elos departamentos também são elementos muito importantes na escola e a gente pode ter vários alunos podemos ter vários professores podemos ter vários cursos e essa já é uma dica
essa ideia de que a gente pode ter vários elementos distintos daquela categoria daquela classe essa já é uma dica que leva a crer que talvez esses elementos possam representar entidades ou serem representados por entidades no nosso banco de dados na nossa modelagem tá Então essa é uma dica como é que a gente identifica as entidades verifique elemento né que eventualmente possam se transformar em categorias ou classes né que serão compostas por por várias instâncias então eu vou ter várias instâncias de alunos que representam os diferentes alunos várias instâncias de professores que vão representar os diferentes
professores quando você for modelar o banco procurando as entidades preste atenção também no texto nos números que aparecem os números indicam também a repetição de instâncias e muitos casos por exemplo 40 professores bom eu vou ter esses professores cadastrados no banco de alguma forma e São 40 então é bem provável que o professor seja uma entidade aqui embaixo Nós também temos quatro disciplinas as disciplinas também caem na mesma ideia vou ter mais de uma disciplina então é provável que as disciplinas possam ser representadas por uma entidade quem mais que tem números aqui de novo aparecem
nove disciplinas 3.000 alunos 10 cursos então esses números que aparecem nesse texto que a gente redigiu com as regras de negócio eles dão dicas de como identificar as entidades entidades Então são as categorias principais que a gente vai encontrar na modelagem de dados que representam os elementos que vão se relacionar entre si no banco alunos se relacionam com professores com disciplinas e assim por diante dito isso a gente pode fazer uma pequena lista das entidades que a gente identificou até o momento Então até o momento identifiquei essas entidades aqui o aluno Professor disciplina curso e
Departamento existem outras pode ser que existam conforme a gente vai fazendo a análise requentando refinando essa análise Pode ser que surjam mais entidades tá você vai lembrar das aulas teóricas que por exemplo as entidades podem ser derivadas de um relacionamento n para m tá é bem provável que existam relacionamentos n para m muitos para muitos aqui mais entidades vão surgir certo mas a princípio a gente identificou essas entidades Vamos trabalhar com elas essas entidades elas se relacionam entre si Quais são os relacionamentos que que existem entre elas de novo sempre olhando no texto das regras
de negócio que a gente redigiu que você deve redigir o mais completo possível a gente vai tentar identificar os relacionamentos entre as entidades como é que a gente faz isso bom se a gente já determinou Quem são as as possíveis entidades a gente vai procurar no texto verbos verbos de ação que estejam relacionados a essas entidades por exemplo ã os alunos possuem um código de identificação tem um verbo aí que traz alguma coisa relacionado a característica do aluno E aí você vai fazer a seguinte o seguinte raciocínio quando tiver um verbo juntamente com uma entidade
esse verbo ele indica uma ação que o aluno realiza ou sofre né que a entidade no caso realiza ou sofre aqui é o aluno se se esse aluno ele está relacionando-se com uma outra entidade então aquele verbo identifica Exatamente isso um relacionamento Agora se se trata de uma característica algo inerente que que classifica aquela entidade então provavelmente se trata de um atributo nesse caso aqui o aluno possui certo possui o qu um código de identificação código de identificação não é uma das entidades que a gente criou né que a gente identificou na verdade mas sim
uma forma de identificar o aluno é uma característica do aluno cada aluno tem o seu ra então é bem provável que o código de identificação seja na verdade um atributo Então a gente vai pular esse cara porque agora a gente quer os relacionamentos o aluno pode estar matriculado em um curso por vez segunda frase Opa curso somente idade aluno também então estar matriculado ou pertencer ao curso provavelmente é um relacionamento identifica um relacionamento aqui legal Vamos marcando cursos são compostos por disciplinas curso a gente identificou como S uma entidade e disciplina também então ser composto
ou compor né se a gente olhar da forma inversa disciplinas são compõe os cursos os cursos são compostos por disciplinas Então a gente tem aqui um outro relacionamento ou um candidato a relacionamento cada disciplina terá no máximo 30 alunos por turma um relacionamento entre disciplina e aluno disciplinas possuem alunos por exemplo ou alunos cursam disciplinas você pode olhar isso das duas formas nos dois sentidos as disciplinas podem ser obrigatórias ou optativas dependendo do curso aqui na verdade o podem ele tá ligando as disciplinas ao fato delas serem obrigatórias e optativas são características das disciplinas então
aqui a gente tem ã de novo um atributo da disciplina né o fato dela ser obrigatória o optativo o tipo da disciplina a gente pode chamar assim a gente vai ter que batizar isso de algum nome podemos chamar de tipo por exemplo depois as disciplinas pertencem a departamentos específicos isso tá bem claro né disciplina pertence a departamento é um relacionamento disciplinas possuem códigos de identificação Opa código de identificação também é uma característica da disciplina Então esse possui na verdade tá indicando que o código de identificação é um atributo da disciplina vai identificando esses caras se
você não tá memorizando os itens não se preocupe eu já vou listar todos eles aqui vamos dar uma olhadinha nos outros aqui ã os alunos podem trancar matrícula não estando então matriculados em nenhuma disciplina ok não se trata de um de um relacionamento em cada semestre cada aluno pode se matricular no máximo nove disciplinas de novo denotando um relacionamento entre aluno e disciplina aluno se matricula em disciplina o aluno pode ser aprovado no máximo três vezes na mesma disciplina então aluno com disciplina de novo só que aqui é um atributo do aluno ou da disciplina
a gente vai determinar isso ainda que é o número de vezes que ele cursou aquela disciplina tá número de vezes cursado Ok então trata-se de um atributo a faculdade vai ter no máximo 3.000 alunos isso é um atributo da tabela de alunos em 10 cursos distintos quantidade de cursos que existem tá então o número máximo de registros que a gente vai ter na tabela de cursos que mais estamos tentando identificar relacionamentos entram 300 Alunos novos por ano existem 900 disciplinas do total disponíveis características dos alunos e disciplinas o histórico traz todas as disciplinas cursadas pelo
aluno incluindo a nota frequência e período do curso Então o histórico traz informações do aluno do curso das disciplinas traz informações que são Reunidas de várias entidades diferentes Talvez o histórico seja até uma entidade Quem sabe a gente vai pensar mais a fundo nele mais paraa frente professores podem ser cadastrados mesmo sem lecionar disciplinas então professor ele pode ser cadastrado cadastrado Onde exatamente lembra que o professor tem tem ele é uma entidade por C então ele tem seus dados e ele também pertence a um departamento então Professor pertencer a um departamento tá aí um outro
relacionamento e ele pode pertencer a departamento mesmo que não lecione disciplinas naquele semestre e existem 40 professores trabalh na escola característica dos professores cada professor leciona no máximo quatro disciplinas de novo uma característica dos professores um atributo que é o número de disciplinas Que el que ele leciona e tá aqui cada professor é vinculado a um departamento então encontramos mais mais um relacionamento entre professor e Departamento e os professores são identificados por um código de professor então identificação código isso é atributo também tá então nessa tentativa aqui de descobrir quais são os relacionamentos entre as
entidades que a gente determinou a gente acaba também já levando alguns atributos de lambuja né identificando algum vários atributos E aí a gente pode fazer o seguinte listar os relacionamentos que a gente encontrou aqui eu tenho alguns relacionamentos listados então o aluno está matriculado em curso relacionamento entre aluno e Curso aluno cursa a disciplina e aluno realizou disciplina veja que exe tem dois relacionamentos diferentes entre aluno e disciplina o aluno ele tem um relacionamento com as disciplinas que ele está cursando e com as que ele já cursou para efeitos de histórico lembra disso o histórico
vai trazer informações de todas as disciplinas as atuais e as anteriores também disciplina pertence ao curso Então existe um relacionamento entre disciplina e o curso em si tá Ah o professor ministra disciplina relacionamento entre professor e disciplina Professor pertence a departamento que mais departamento é responsável por disciplina departamento controla o curso departamento disciplina depende da disciplina Olha que interessante disciplina depende da disciplina por que isso ah eventualmente uma disciplina ela só pode ser cursada se você já tiver cursado uma outra disciplina anterior Tá mesmo que isso não apareça al nas nossas regras de negócio é
algo que a gente vai levar em consideração por quê vamos supor que a gente tenha como eu tive na faculdade Cálculo 1 2 e 3 Ah eu não posso cursar cálculo dois sem ter cursado o cálculo um antes existe essa dependência de uma disciplina da outra tá então a mesma coisa vai acontecer aqui numa faculdade de ti por exemplo não posso cursar bancos de dados dois sem ter feito bancos de dados um tá não faz sentido eu não aprendi o básic como é que eu vou pro mais avançado então existe uma dependência de disciplina para
disciplina e isso também é um relacionamento que pode ocorrer de uma entidade com ela mesma a gente já viu isso nas aulas teóricas olha aqui tá aparecendo na aula prática certo então identificamos alguns dos relacionamentos pode haver mais ao longo da nossa análise dos nossos vídeos a gente vai identificando mais relacionamentos ou eventualmente eliminando alguns que não sejam necessários e depois disso a gente lista os atributos eu listei alguns atributos aqui já identificação dos atributos então de acordo com o nosso texto com o que é pedido pra gente pela empresa eh o aluno ele tem
que ter no mínimo o número de matrícula o nome a gente colocou o endereço também para identificação e o código do curso que é muito importante no caso do endereço a gente sabe que é um atributo composto ele tem Rua número bairro CP cidade estado ou outros elementos complementos etc né conjunto bloco e assim por diante então a gente lista isso aqui e depois a gente vai trabalhar em cima na hora de fazer normalização por exemplo desse banco tá então identificamos alguns atributos e eventualmente você pode colocar mais atributos aqui essa é a grande sacada
da análise é você não ficar preso apenas na regra de negócio eventualmente é possível expandir Nem sempre o cliente ele sabe exatamente o que ele quer o que ele precisa ele tem uma ideia obviamente muito melhor do que a sua sobre o negócio mas um uma pessoa que trabalha com banco de dados e tem experiência no desenvolvimento de sistemas ela geralmente identifica elementos que poderiam estar ali e eventualmente fazer com que o projeto tenha mais Esso então a gente pode sim acrescentar alguns elementos aqui claro sempre discutindo com com o seu cliente a respeito da
da possibilidade de incluir aquele elemento ou não tá aqui a gente incluiu o endereço do aluno certo que mais vamos ver as outras entidades para entidade Professor eu coloquei código do professor nome e código do departamento lembrando ali a gente tem o nome certo na prática o professor não tem só nome ele tem nome sobrenome também então é bem provável que a gente tenha que depois acrescentar mais um atributo sobrenome para quebrar esse nome em duas partes primeiro nome e sobrenome Tá mas isso vai aparecer mais para frente ou se você quiser já acrescentar agora
também é possível a gente poderia simplesmente escrever aqui ó sobrenome beleza mesma coisa pro aluno aqui que tá só com o nome sobrenome tá então a gente pode fazer isso nesse momento ou mais para frente hã disciplina então pra disciplina a gente identificou código da disciplina o nome uma descrição da disciplina código do departamento a gente sabe que a disciplina ela tava encada no departamento e o número de alunos que vai ter naquela disciplina porque isso é importante é uma das restrições da regra de negócios tá identificamos aí cinco atributos pra disciplina pro curso nós
identificamos o código do curso nome do curso e o código do departamento ao qual ele está vinculado tá pode pode haver mais atributos a gente vai ao longo do tempo colocando mais atributos e pro departamento identificamos código do departamento e o nome do departamento tá pode ter outras também eh localização no departamento por exemplo tá e assim por diante mas a gente identificou esses caras todos essas entidades relacionamentos e esses atributos E para finalizar então a gente junta tudo isso que a gente identificou e começa um esboço sim um esboço bem bem leve bem light
do do diagrama entidade de relacionamento que a gente vai criar aí no próximo vídeo Então olha só que interessante a gente agora lista as entidades que identificamos com os atributos na forma de uma mini tabelinha e eu coloco umas setinhas para ligar quem tá relacionado com quem eu ainda não coloco nada de cardinalidade aqui tá a gente não pensou nisso ainda tá a gente também não demos nome aos relacionamentos a gente só tá ligando as entidades e os atributos se você preferir você pode colocar em cima das setinhas os nomes dos relacionamentos que você identificou
aqui estão aqueles relacionamentos que a gente identificou no outro slide eu não coloquei por falta de espaço mesmo para não ficar muito bagunçado mas você pode colocar aqui nas setinhas Então temos a disciplina o aluno o departamento professor e o curso então por exemplo o aluno tem um relacionamento com o curso o departamento tem um relacionamento com curso mas também tem um relacionamento com professor que também se relaciona com a disciplina veja disciplina se relaciona com todo mundo inclusive com ela mesma tem um auto relacionamento aqui essa setinha que é a ponta da disciplina para
ela mesma tá então em cima disso aqui a gente vai trabalhar no próximo vídeo para montar aí sim um diagrama entidade de relacionamento mais completo A gente vai fazer uma análise um pouquinho mais aprofundada em cada uma das entidades atributos relacionamentos e vamos montar um m de acordo com as regras convencionais que a gente estudou na aula na aula teórica incluindo as cardinalidades porém antes disso a gente a vai trabalhar em conjunto essa aula aqui não é só uma palestra para você assistir legal vi o vídeo Beleza você também vai interagir então durante essa semana
até o próximo vídeo de de modelagem de dados desse projeto eu peço para que vocês aí que estão acompanhando o o curso para que vocês baseando-se nas nossas regras de negócio tentem identificar outros atributos entidades e possíveis relacionamentos se houverem talvez eu não tenha colocado todos N E aí deixe na ão aqui embaixo tá de sugestões também para os nomes do das entidades e principalmente dos relacionamentos ao longo da semana eu vou lendo todos os comentários vou juntar toda essa informação e aí a gente vai ah trabalhar em cima disso vou mostrar o que o
pessoal trouxe aí de informação que realmente pode ser aplicado aqui e eventualmente o que não pode ser aplicado E aí a gente vai montar o diagrama entidade de relacionamento para depois poder prosseguir com dicionário de dados normalização até até a implantação efetiva desse banco de dados beleza pessoal continuando com o nosso projeto prático Ah esse vídeo eu vou utilizar para apresentar para vocês uma ferramenta que a gente vai utilizar para fazer os diagramas entidade e relacionamento a ferramenta é o BR Modelo E com essa ferramenta a gente vai poder criar os diagramas conceitual e lógico
e também eventualmente ã exportar o diagrama criado para o modelo físico essa é uma ferramenta em português tá ela foi Envolvida Por Carlos Henrique Cândido Sob orientação do professor Dr Ronaldo Ronaldo dos Santos lá da Federal de Santa Catarina tá ã a versão que eu tô mostrando para vocês aqui é 2.0 que é a versão estável ah do da ferramenta e existe uma versão mais recente Beta que é a versão 3.0 que é muito mais recente tá tanto faz usar a versão dois quanto a versão 3 pro Nosso propósito aqui vai ser mais do que
suficiente e para você adquirir ou baixar na verdade porque ess ferramenta gratuita para você baixar a ferramenta você vai neste site aqui sis4.com BBR modelo aí você vai ter acesso a essa página tá ã você cai direto na página do BR modelo 2.0 clicando em download Você tem o link os dois links pro download tá o o aplicativo ponto rar ou descompactado é só baixar e executar é bem simples de de abrir tá na primeira ele pede uma autorização para associar a extensão BRM que é a Associação dos a extensão dos arquivos criados com essa
aplicação tá ela é distribuída sobre licença gnu GPL caso você prefira usar a versão 3.0 que é um pouco mais moderno tem uma cara um pouco mais bonitinho você clica neste link onde tá escrito veja legal e aqui você vai ter ã outra página de download ir para o download e aqui embaixo você tem um arquivo é só só baixar esse arquivo pon jar precisa ter o Java instalado na sua máquina para ele funcionar né o jvm e é só executar e vai abrir a aplicação beleza por que que eu resolvi fazer esse vídeo separado
só para falar mostrar a ferramenta que é pra gente não ter o problema de estar no meio da análise criando diagrama entidade de relacionamento eu tenho que parar para ficar explicando Onde estão os botões onde estão as funções etc que pode tornar os vídeos muito mais extensos e mais complicados de se entender nosso foco nos vídeos do projeto é justamente fazer o projeto a gente vê a ferramenta à parte Tá bom eu tenho as duas versões aqui na máquina eu vou mostrar suscintamente as telas das duas versões a versão 2.0 é essa daqui essa área
grande aqui em branco no meio é onde você vai fazer o desenho dos seus diagramas tá você pode fazer um diagrama com esquema conceitual esquema lógico aqui em cima você tem dois menus onde você pode selecionar os elementos que você vai colocar no diagrama é possível criar o diagrama conceitual e depois com um clique gerar automaticamente o esquema Lógico que é uma uma funcionalidade bem legal isso tá disponível nas duas versões 2.0 e 3.0 e aqui você pode criar direto o conceitual ou já criar direto o esquema lógico Mas vai ficar a seu critério geralmente
a gente começa com o esquema conceitual n seguindo a ordem correta da modelagem e aqui do lado esquerdo bem no extremo a gente tem uma barra de ferramentas que tem os elementos os objetos que você vai posicionar no seu diagrama então por exemplo o primeiro elemento aqui é uma entidade como é que eu crio uma entidade cinho na entidade e um cliquez na tela Prontinho posicionamos uma entidade você pode movimentar essa entidade pela tela clicando sobre ela e arrastando para posicionar onde você quiser depois é só largar E aí com entidade selecionada você vem aqui
do lado direito a gente tem uma folha de propriedades e aqui você pode alterar algumas propriedades né posicionamento altura largura etc e mais importante dar um nome pra entidade por exemplo entidade funcionário só escrever funcionário pressionar enter e o nome aparece aqui dentro bem simples ã vamos supor que eu queira acrescentar outra entidade clico no mesmo botão clico na tela posiciono e troco o nome aqui em cima por exemplo departamento enter e o nome aparece beleza logo abaixo a gente tem o rel a criar relação que é o relacionamento a gente clica aqui nesse losango
clica na tela e aí é só posicionar a relação e é o mesmo esquema vai aqui do lado direito e dá um nome para ela que por exemplo funcionário trabalha em departamento muito fácil e finalmente para você interligar esses elementos aqui basta você clicar nesse botão aqui de baixo Ligar objetos dá um Clique nele e aí como é que a gente faz interligação ó cursor do mouse muda vocêa no elemento por exemplo em funcionário e clica no segundo elemento que vai ser conectado E aí é feita a lição clico de novo no botão cli em
outro elemento no segundo elemento e tá feita a ligação cer E aí você pode movimentar o objeto e a linha de ligação ela acompanha você pode alinhar deixar bonitinho veja que já vem com a cardinalidade aqui essa cardinalidade a gente tem que mudar obviamente num passo mais adiante tá porque não é a cardinalidade correta necessariamente da do do relacionamento clicando na cardinalidade em si você pode editá-la aqui dá para você colocar uma descrição tá uma observação e aqui embaixo mudar a cardinalidade um para um zero para um um para N zero para n tá lembrando
que quando tem zero significa que Você tem uma uma uma opcionalidade ali o elemento pode ou não existir O N significa muitos e o um significa um tá um para um um para muitos etc muito bem Além disso depois da gente colocar a entidade e o relacionamento a gente precisa colocar os atributos das entidades e os atributos você vai encontrar aqui ó no na forma dessa bolinha aqui com uma uma barrinha embaixo então clicou nela Clique em cima da entidade Onde você quer colocar o atributo por exemplo um funcionário E aí o atributo é posicionado
aqui clica sobre o atributo vai na telinha de edição e você põe um nome para ele por exemplo nome funk nome do funcionário enter Tá feito aí você pode arrastar inclusive posicionar em outro lugar para não ficar muito bagunçado o seu diagrama essa bolinha é uma bolinha vazada significa que é um atributo simples qualquer a gente pode utilizar um atributo determinante ou identificador nessa bolinha cheia Aí clica na entidade e dá o nome por exemplo ID funcionário D enter Opa alterei aqui a a entidade é funcionário tem que ficar esperto para não clicar no lugar
errado atributo então idun agora sim da mesma forma a gente pode clicar e reposicionar para não ficar uma bagunça só certo bem simples né ah tem alguns outros tipos também de atributos que a gente pode colocar por exemplo atributo composto atributo opcional ou atributo multivalorado tá vamos supor atributo multivalorado dou um clique aqui Clique em cima dele não esqueça e aí você dá um nome telefone telefone é um bom exemplo de atributo multivalorado aí a gente coloca um pouquinho mais para baixo ele vai mostrar aqui dentro de parênteses uma espécie de cardinalidade indicando que esse
atributo ele pode ter múltiplos valores Ou seja que o funcionário pode ter vários telefones além disso a gente também pode colocar um atributo ã composto tá vamos clicar aqui atributo composto é esse iconeinstagram dois e o atributo três aí você dá um nome para ele aqui no caso vai ser endereço endereço e aqui embaixo você pode ir colocando os sub atributos por exemplo Rua e CP entre outros e aí se quiser colocar mais sub atributos clica no atributo simples e em vez de clicar em cima da entidade clica no atributo composto e aí ele é
adicionado olha só ele já até deu uma organizada melhor aqui ó você pode selecionar todo o conjunto e arrastar ele todo de uma vez para reposicionar tá aí eu vou colocar o atributo composto aqui o o terceiro sub atributo como sendo ruep e sei lá conjunto tanto faz aí você dá uma arrumadinha nele aqui certo e aí você vai assim dessa forma montando o seu ã diagrama entidade de relacionamento no caso aqui é um diagrama conceitual tá do esquema conceitual tranquilo é bem tranquilo bem fácil e assim a gente vai montar o nosso diagrama entidade
de relacionamento temos alguns outros tipos também de elementos como por exemplo as especializações né a gente pode criar especialização com criação de entidades ou não exclusiva com criação de entidades a gente também vai acabar usando isso aí ao longo do tempo ã temos a entidade associativa também que pode ser criada você vai lembrar a gente cria quando temos até relacionamentos Muito muitos para muitos Então você acaba gerando uma entidade associativa e é bem simples só clicar colocar aqui e preencher com com as informações clicando aqui você dá um nome etc tá mostra os relacionamentos e
assim por diante para apagar um dos um dos objetos só clicar em cima dele delete no teclado e o objeto está apagado isso se aplica para qualquer objeto que você tem aqui bom vamos supor que você terminou de fazer o diagrama tá você salva o diagrama Você vai em sistema e salvar tá você pode exportar ele paraa imagem também se quiser para bitmap ou JPEG vamos supor que esteja criando uma documentação do seu banco de dados da sua modelagem e você precisa de uma imagem mostrando a o diagrama então você pode exportar para para bitmap
ou para JPEG e coloca na documentação também é possível gerar um dicionário do esquema um dicionário de dados desde que você tenha preenchido todas as observações de cada elemento direitinho aí só D um f12 ele vai gerar um um um dicionário de dados bem simplesinho na verdade tá outra coisa que a gente pode fazer vamos dar uma olhadinha aqui ã esquema conceitual gerar esquema Lógico tá você dá um cliquez inho Nesse cara aí ele vai te falar ó vamos gerar o esquema Lógico ele vai te fazer algumas perguntas baseando-se na forma como está criado o
seu esquema conceitual tá por exemplo aqui ele diz assim atributo composto e multivalorado encontrado observação o que você deseja fazer criar uma tabela para acomodar os atributos incluir como atributos na tabela funcionário ou deste ponto em diante aceitar todas as sugestões aí você vai decidir o que fazer dependendo de como tá o andamento da sua modelagem eu vou dar um ok aqui só para demonstrar OK depois de novo ok E aí ele gerou esse cara aqui pra gente temos aqui um um modelinho criado Olha que beleza o modelo criado tá esse obviamente esse modelo não
tá correto né só uma demonstração de como usar a ferramenta para colocar os elementos Mas essa é a ideia que a gente vai trabalhar no nosso projeto beleza e pro esquema Lógico é a mesma coisa se você começar direto pelo esquema lógico ou quiser editar o esquema lógico aqui estão os objetos Aliás quando você está com esquema lógico na tela perceba que as ferramentas aqui mudam aí você tem criar tabela do modelo lógico relacionamento Campos chave estrangeira chave primária que que você vai terminar esses papéis específicos tá ã e aqui em modelos abertos é onde
você pode alternar entre os modelos conceitual e lógico legal clicou no modelo conceitual ele volta lá onde a gente tava clicou no modelo Lógico ele abre o outro modelo tranquilo acho que não tem muito segredo não uma ferramenta bastante simples de utilizar tá ah essa é a versão 2.0 do BR modelo a versão 3.0 também tem um aberta aqui vou mostrar rapidinho para vocês é essa daqui é muito mais recente tá a última atualização dessa versão acho que foi agosto de 2017 Então ela bem mais recente do que a outra perceba que ela tem uma
cara mais moderna assim eh Área Central para você colocar os objetos e a barra de ferramentas com os objetos fica do lado direito e aí você vai ter entidade relacionamento autorelacionamento as especializações entidade associativa os atributos tá ligações e também opção de desenhar colocar rótulos de texto em cima para ilustrar né seu diagrama e assim por diante mas a ideia é a mesma então por exemplo eu vou colocar uma entidade só clicar no objeto e clicar aqui na tela tá adicionada A Entidade aí você clica na entidade e o painel de propriedades fica do lado
esquerdo aí você clica lá no nome da entidade e coloca funcionário tranquilo tá bem fácil aqui Você pode adicionar observações que não faz parte do modelo diagrama ou informações para o dicionário de dados isso É bem interessante Você pode adicionar informação que depois vai ser usada no dicionário de dados com objeto selecionado você também tem alguns botõezinhos por exemplo clicando sobre objeto você pode movimentar pela tela e aparece essa grade para você poder posicionar com precisão que não tinha na versão do também tem essa Âncora que quando clicada ela fica preta e o objeto não
se move mais quando ela tá vermelhinha você consegue movimentar o objeto ã a borrachinha para apagar o objeto tá tem alguns outros elementos também por exemplo aqui a gente pode adicionar atributos enfim isso aqui a gente pode fazer manualmente também E aí eu vou adicionar outra entidade adicionei outra entidade ã vou dar um nome para ela departamento a gente estava usando no exemplo enter e o mesmo esquema né posiciona etc aí pra gente criar o o relacionamento entre elas você pode fazer o seguinte você pode clicar no silang clicar aqui no meio e da mesma
forma a gente como a gente fez no na versão 2.0 clicar aqui na linha de ligação e fazendo as ligações entre as entidades perfeito é uma forma ou você pode fazer assima no entidade vai aqui no painel de propriedades vai em relacionamento ó e manda selecionar a tabela com a qual ela vai se relacionar então eu quero relacionar funcionário com departamento só seleciono departamento ele já cria um relacionamento pra gente que beleza aí é só você editar o relacionamento trabalha então facilita um pouquinho Nessa versão Lembrando que essa versão é Beta Então pode ter coisas
que não funcionam ainda não está pronta tá ajuda não aparece aqui por exemplo algumas coisas podem travar podem não funcionar então de repente se você quiser ter mais segur utiza a versão 2.0 Tá mas tanto faz a versão que você vai usar porque na verdade o que a gente precisa mesmo é desses elementos tá dos retângulos para entidades relacionamentos os atributos e assim sucessivamente os atributos mesmo esquema clica aqui na bolinha clica na entidade E aí Edita o atributo ID funk enter aqui no esquema você ainda pode pode marcar essa caixinha para dizer se isso
aqui é um atributo identificador ou não Sim aí ele fica pretinho não tem o botãozinho pretinho mas você consegue fazer da mesma forma aqui mesma coisa se ele é opcional se ele é composto se ele é multivalorado e assim sucessivamente tá aí você pode ir acrescentando outros carinhas aqui ó nome do funcionário e assim sucessivamente tá vou clicar em departamento eu também posso fazer o seguinte posso fazer o seguinte também editar atributos aí você pode adicionar os atributos aqui d o nome ID dep aqui o tipo de dados Você pode escrever aqui texto número etc
Por enquanto não não é necessário e marcar como identificador ou não adicionar outro nome do departamento depois adiciona outro local e assim sucessivamente aí quando você fecha já estão os três atributos adicionados então facilita um pouco nesse sentido legal para você criar o seu modelo conceitual também dá para criar modelo lógico aqui modelo lógico aqui em cima aí você cria o modelo lógico e da mesma forma a gente pode trabalhar com um ou com outro a Você pode adicionar tabelas fazer o preenchimento fazer a conversão de um para outro também é possível estando aqui no
modelo ah conceitual você consegue também converter é só clicar aqui em cima no nome do modelo sem nenhum objeto selecionado vem na folha de propriedades aqui embaixo a gente tem converter Aí clica no botãozinho e vai abrir um assistente Zinho para te ajudar a fazer a conversão do modelo conceitual pro modelo Lógico vou fechar não vou cancelar não vou converter nada agora tá voltar aqui e claro você pode dar um nome também para esse elemento né se você quiser na hora de salvar para para identificar o seu projeto caso você tenha vários projetos aí e
dá para alterar outras coisas como alinhamento fonte dimensões etc e aí você vai dar uma explorada Espero que você dê uma explorada na ferramenta também Beleza então é isso nesse vídeo eu quis apenas mostrar para vocês sucintamente algumas das funções desse software que a gente vai usar na nossa modelagem para criar os os diagramas nos próximos vídeos tá ã levei quase 20 minutos para fazer essa explicação então não queria torrar esses 20 minutos dentro da própria análise dentro dos vídeos de análise em si para não ficar muito complicado agora você já sabe mais ou menos
como usar a ferramenta alguns outros detalhezinhos aí eu vou explicando ao longo do da da criação dos nossos diagramas bom então lembrando nosso projeto é um banco de dados para gerenciamento de uma faculdade ã e o objetivo desse banco de dados é realizar o controle Centralizado dos alunos professores cursos disciplinas históricos escolares dos alunos e da turmas tá as fases do projeto nós já fizemos uma um levantamento de requisitos já identificamos algumas entidades e relacionamentos e agora a gente vai começar a trabalhar com o diagrama entidade e relacionamento tá Note que esse processo de análise
e modelagem ele não é um processo que ocorre em uma única etapa ã a gente vai eventualmente ao longo né do do processo de análise e modelagem fazendo modifica ações tá nos nossos diagramas no nosso mer etc porque a gente vai descobrindo aos poucos elementos que fazem parte e elementos que não fazem parte do das nossas tabelas das entidades dos relacionamentos etc Tá bom então vamos relembrar onde a gente parou no último vídeo então uma revisão das entidades atributos relacionamentos que a gente já descobriu até o momento então a gente determinou por enquanto que nós
teremos uma entidade de disciplina entidade professor aluno departamento e curso e Aqui nós temos alguns dos atributos os atributos que a gente já descobriu os relacionamentos entre elas estão indicados por essas setas verdes tá então foi aqui que a gente parou no no último vídeo tá na verdade a gente teve um vídeo intermediário onde eu mostro como utilizar o software BR modelo pra gente fazer os diagramas na tela de uma forma um pouquinho mais profissional e usando o BR modelo Eu Fiz alguns diagramas mostrando esses relacionamentos entre essas entidades nesse vídeo de hoje a gente
vai trabalhar só com as entidades e os relacionamentos os atributos eu vou acrescentar no próximo vídeo dessa forma o vídeo não fica muito comprido muito pesado então baseando-se nisso eu comecei desenhando os relacionamentos da entidade Professor a gente vai fazer uma entidade por vez separadamente depois a gente junta tudo num diagrama só tá então voltando aqui na nossa tabelinha nosso modelo da do último vídeo você vai perceber que a entidade professor se relaciona com disciplina e com departamento então a gente desenha tá um modelo entidade de relacionamento um diagrama pro professor dessa forma Professor relacionamento
pertence ao departamento e professor ministra uma disciplina nó que aqui eu não coloquei os atributos ainda a gente vai P isso no próximo vídeo e também as cardinalidades a gente vai fazer a análise das cardinalidades no vídeo subsequente então aqui tá aparecendo como zero para n mas ignorem isso a gente ainda vai colocar essas cardinalidades certo então começando o desenho do nosso Dr Professor pertence a departamento e professor ministra disciplina aqui os atributos da entidade professor que a gente vai acrescentar posteriormente código do professor nome do professor código do departamento e status e aqui é
uma coisa importante no último vídeo a gente que que eu mostrei né o as entidades os relacionamentos etc eu pedi pro pessoal deixar comentários aqui embaixo a respeito de do que eles achavam que a gente deveria ou poderia incluir na no processo de modelagem para esse projeto e várias pessoas deram sugestões eu filtrei algumas dessas sugestões e acrescentei aqui então por exemplo alguns dos atributos que vão aparecer e até mesmo algumas entidades relacion foi o pessoal que comentou aqui embaixo que trouxe e a gente acrescentou e depois a gente vai fazendo análise de tudo isso
bom vamos ver o próximo relacionamento então com as suas entidades entidade departamento o departamento se relaciona com disciplina professor e curso Então a gente criou Ah esses três relacionamentos e Departamento gerencia a disciplina departamento controla o curso e e o professor pertence ao departamento ou a um departamento pertence a um professor certo ah também aqui o mesmo esquema sem os atributos e sem as cardinalidades mas a gente tá criando o diagrama aos poucos os atributos da entidade de departamento que a gente até o momento conseguiu ã determinar são o código departamento e nome do departamento
que no outro vídeo a gente vai acrescentar vai jogar lá no diagrama também relacionamentos da entidade curso Curso se relaciona com disciplina aluno e Departamento Então a gente tem que disciplina pertence a curso o departamento controla o curso e o aluno está matriculado no curso tá então são os três relacionamentos da entidade curso que a gente identificou até o momento lembre-se isso é importantíssimo isso aqui é provisório não significa que o banco de dados vai ficar assim a gente tá num processo de análise descobrindo aos poucos o que pertence o que não per a esse
banco de dados e os locais corretos para colocar os dados as informações para entidade curso por enquanto a gente determinou a os atributos código do curso nome curso e código do departamento provavelmente vai precisar de mais alguma coisa aí a gente vai analisar isso posteriormente relacionamentos da entidade aluno o aluno se relaciona com disciplina e com o curso tá então o aluno curso é uma disciplina e está matriculado em um curso certo ã é importante notar que a disciplina também tem relacionamento com os cursos de modo que que o aluno ã por cursar uma disciplina
não dá para você saber em qual curso Ele está mas pelo aluno estar matriculado em um curso é possível prever as disciplinas que ele vai cursar Tá mas é importante que haja esses dois relacionamentos separados por quê porque nem sempre você vai saber exatamente em quais disciplinas o aluno está matriculado né ou está cursando por estar matriculado em um curso porque isso vai depender muito do semestre em que ele está por exemplo ou das disciplinas que ele pegou o DP ou das que ele já eliminou por isso a gente tem os dois relacionamentos aqui mesmo
disciplina estando também relacionada com o curso certo muito bem e aí pro aluno a gente já tem um monte de entidades pessoal identificou várias entidades pro aluno que a gente acrescentou aqui como ra nome endereço código do curso que ele tá fazendo telefone que é multivalorado CPF status né se ele tá trancado ou não com a matrícula trancada ou não filiação sexo um contato tá e o código da turma a qual ele pertence talvez a gente temha que colocar mais alguma coisa aqui ou retirar isso a gente vai analisar posteriormente E aí entidade disciplina que
é a entidade que tem mais relacionamentos ela se relaciona com curso com professor com departamento com aluno e até consigo próprio então a disciplina pertence a um curso o aluno cursa a disciplina o professor ministra a disciplina o departamento gerencia a disciplina e a disciplina depende da disciplina ou seja Na verdade uma disciplina pode depender de uma outra tá como a gente viu nas regras de negócio então a gente identifica todos esses elementos aqui colocamos todos os relacionamentos no nosso diagrama e os atributos que a gente identifico até o momento são código da disciplina nome
disciplina descrição código do departamento número de alunos e a carga horária da disciplina bom Ah esses aqui eram as entidades e os relacionamentos originais que a gente discutiu no último vídeo mas aí o pessoal trouxe mais informações mais dicas mais ideias e aí eventualmente a gente vai ter mais entidades e mais atributos então foi algumas pessoas identificaram também a entidade histórico e a entidade turma ã com esses atributos que vocês estão vendo código do histórico notas média frequência período ra e código da disciplina pro histórico e no caso da turma um código de turma período
código do curso quantidade de alunos ou número de alunos e as datas de início e fim da turma tá então só mais entidades E aí essas entidades teriam novos relacionamentos que a gente identificou dessa forma a turma se relaciona com curso e com aluno tá então o curso gera uma turma por exemplo curso técnico em redes aí esse curso vai gerar as turmas do curso técnico em redes uma turma de manhã uma tarde uma noite ou duas turmas à tarde ou três à noite né eu posso ter várias turmas do mesmo curso por isso é
interessante que a turma Talvez seja uma entidade e o aluno pertence à turma o aluno não pertence necessariamente diretamente ao curso ele faz o curso Ele cursa um curso específico Mas ele também pertence a uma turma ele pode estar matriculado na turma da manhã da tarde ou da noite do mesmo curso em uma delas e o histórico o histórico pertence a um aluno e as disciplinas compõem o histórico tá então a princípio a gente colocou a entidade histórico dessa forma e aí juntando tudo a gente vai ter o nosso produto final aqui desse vídeo que
é o nosso Dr nosso diagrama entidade de relacionamento intermediário aqui a gente tem todas as entidades que a gente identificou até o momento com os seus respectivos relacionamentos tá departamento Professor curso turma aluno histórico e a disciplina todo mundo aqui junto o que aqui ação ah desses outros relacionamentos intermediários que a gente viu nos slides anteriores então eu fiz separadamente para ficar mais fácil da gente trabalhar e assim que você vai fazer no no mundo real né você vai fazer separadamente depois você vai juntar todos eles no único diagrama que é esse diagrama aqui então
um exemplo a gente tem aqui Professor pertence a departamento e ministra disciplina o aluno está matriculado no curso pertence a uma turma e per e o histórico pertence ao aluno assim como a disciplina compõe o histórico e pertence ao curso e depende de si próprio e é ministrada pelo professor e assim por diante É só você ir olhando aqui os relacionamentos que você vai identificar cada um deles beleza bom o que que falta a gente fazer agora Agora falta a gente colocar os atributos PR as entidades que a gente identificou e as cardinalidades que é
extremamente importante a gente precisa preencher as cardinalidades Porque elas estão todas zeradas até o momento então nos próximos vídeos o que a gente vai fazer é isso colocar os atributos que a gente identificou e acrescentar no outro vídeo As cardinalidades E aí qual que é a sua tarefa e comentar aqui embaixo quais atributos vocês acham que a gente tem que colocar em cada uma dessas entidades Eu já mostrei alguns aqui que a gente identificou Mas pode ser que você que você ache que que hajam outras outros atributos para serem colocados ou talvez alguns atributos que
a gente não deva colocar então dá o seu comentário embaixo aí a gente vai analisar e prosseguir na segunda etapa do Dr certo e aí depois a gente vai trabalhar com as cardinalidades e posteriormente fazer a normalização disso tudo e aí nessa hora a gente vai descobrir que entidade realmente faz parte qual não faz parte os dados duplicados e a gente vai poder eventualmente chegar num num consenso aqui nessa modelagem beleza pessoal bom essa parte é bem simples A gente só vai acrescentar os atributos nas entidades correspondentes então ficou definido por enquanto que as entidades
terão determinados atributos eu vou passar agora por cada uma delas mostrando os atributos que até o momento a gente conseguiu descobrir então para a entidade Professor começando pelo professor nós definimos o seguintes atributos código do professor que é a chave primária é o atributo determinante dessa entidade vai ser a chave primária posteriormente E também temos o nome do professor o sobrenome do professor código do departamento ao qual o professor pertence e o status do professor Então são cinco atributos pra entidade Professor próxima entidade departamento essa entidade tem apenas dois atributos o código do departamento que
é o determinante e o nome do departamento tá não tem nenhuma nenhum outro atributo por enquanto lembre que o processo de modelagem ele é contínuo e ao longo do processo a gente vai inserindo mudanças conforme necessário entidade curso são três atributos código do curso nome do curso e o código do departamento ao qual pertence o curso e o atributo determinante é código do curso próxima entidade aluno a entidade aluno tem bastante atributos temos o ra que é o atributo determinante Então a gente vai identificar os alunos pelo ra também temos o nome do aluno sobrenome
do aluno o endereço do aluno sendo que o endereço ele é um atributo composto a gente pode ver aqui do lado na ilustração que o endereço El ele pode ser decomposto em rua número CP bairro e até até mesmo em mais elementos a gente vai definir mais pra frente quais serão esses elementos também temos o código do curso que o aluno está cursando telefone que é multivalorado um status filiação sexo contato também é multivalor tá ã código da turma e o CPF tá o contato ele é um atributo que pode ter mais de um valor
porque o contato pode ser feito de mais de uma forma eventualmente a gente pode vai poder tratar esse contato como sendo um atributo composto n definido por WhatsApp e e-mail a gente vai tratar disso exatamente um pouquinho mais paraa frente na na normalização desse banco de dados é que a gente vai definir exatamente quais Campos ficam aqui quais Campos vão para outras tabelas e quais Campos serão eliminados muito bem a entidade disciplina código da disciplina atributo determinante E também temos o nome da disciplina uma descrição código do departamento ao qual perten a disciplina que gerencia
essa disciplina número de alunos matriculados e a carga horária de cada disciplina tá então esses aqui são os seis atributos da entidade disciplina veja que aqui também temos o pequeno diagrama específico só dessa entidade com os seus atributos tranquilo e a entidade turma entidade turma tem como atributo determinante o código da turma período código do curso ã o número de alunos matriculados na turma data de início e data de fim tá lembrando que se você julgar que são necessários mais atributos lembre-se É só colocar nos comentários aqui embaixo do vídeo tá eh Essa é a
ideia dessa série de vídeos é fazer uma interação tá nessa primeira rodada aqui de do do nosso curso de modelagem de dados finalmente A Entidade histórico que vai ter como atributo determinante o código do histórico cod underline histórico né Tá grifado aqui mostrando que é o determinante tem as notas média frequência período de realização o RA do aluno a qual per histórico e o código da disciplina que o histórico traz todas as disciplinas aqui nessa entidade a gente já pode perceber que tem muita coisa para ser trabalhada né muita coisa aqui que vai causar problemas
e a gente vai descobrir esses problemas na normalização então bastante coisa pra gente trabalhar aqui em cima Beleza então a gente tem aí as os atributos por enquanto que a gente vai trabalhar nesse nessa modelagem de banco de dados e para finalizar como é que com o nosso Dr intermediário então então eu peguei o Dr que tinha as entidades com seus relacionamentos do vídeo passado e agora eu acrescentei todos esses atributos que a gente viu olha que perceba que ele já começa a ficar confuso tem bastante informação agora sendo representada aí nesse diagrama Ainda faltam
algumas coisas na verdade falta a gente definir a cardinalidade que é o que a gente vai fazer no próximo vídeo definir as cardinalidades e depois trabalhar aí com um pouco mais com as entidades relacionamentos verificar se a gente vai fazer algum desdobramento acrescentar Possivelmente mais atributos E aí então partir pra normalização não esquecendo de fazer também um dicionário de dados Beleza então é isso aí pessoal nesse vídeo A gente só acrescentou os atributos que é o próximo foi um passo né à frente na na modelagem de dados o próximo passo em relação ao vídeo passado
e no próximo vídeo a gente vai trabalhar com as cardinalidades bom então vamos lá vou fazer um pouco diferente nesse vídeo a gente vai fazer mais ou menos ao vivo né a determinação das cardinalidades então para isso eu tenho aqui Ah o nosso diagrama entidade de relacionamento mostrando as entidades e seus respectivos relacionamentos já criados no software BR modelo eu tirei os atributos nesse momento para não ficar muito confuso muito embaralhado senão você não vai entender e nem eu vou conseguir enxergar direito o que eu tô fazendo aqui Tá mas Lembrando que no modelo final
todo mundo vai est aí incluso os atributos as entidades relacionamentos etc Então vamos trabalhar com as cardinalidades no momento você vai você pode perceber que todas as cardinalidades aqui estão como 0 v n ou seja zero ou muitos para todos eles isso é padrão desse software Então quando você cria um relacionamento entre duas entidades automaticamente ã o software ele coloca ah essa cardinalidade zero para n Mas é claro que na prática ã esse essa cardinalidade não é correta para todos os casos a gente vai ter que alterar de acordo com o nosso projeto E é
isso que a gente vai fazer a partir de agora e vai ser uma coisa bem simples A gente vai pegar cada um dos relacionamentos entre entidades e vai fazer uma análise rápida alterando ah as cardinalidades para eles eu vou começar por aqui então vamos lá eu vou começar com esse relacionamento entre departamento e professor aqui diz que um professor pertence a um departamento ou se você lê o contrário em um a um departamento pertence Professor como é que a gente e cria ou modela essas cardinalidades a gente sempre vai olhar da seguinte forma você vai
olhar para uma entidade professor no caso vai ler o relacionamento pertence e vai ler a outra entidade departamento e é aqui nessa outra ponta que você vai colocar a cardinalidade que você determinou Então nesse caso a gente faz uma pergunta um professor sempre partindo do pressuposto de uma Instância da entidade então um professor né pertence a quantos departamentos Essa é a técnica que a gente vai usar fazer essa pergunta né uma Instância da entidade se relaciona com quantas instâncias da outra Entidade então no caso um professor pertence a quantos departamentos um professor pertence a um
departamento tá então se o professor pertence a um departamento essa cardinalidade aqui está errada tá zer para n correto é um para n no mínimo um no máximo n tá então a gente clica aqui na cardinalidade vem aqui no canto direito e aqui embaixo embaixo do esquema no último item a gente pode determinar a cardinalidade é só dar um clique e escolher então um professor pertence a quantos departamentos apenas a um departamento se é só um departamento então é 1,1 acho que eu disse um para n agora H pouco tá errado é um para um
tá então um professor em um departamento beleza Só que essa é só metade da história Na verdade eu também preciso determinar o relacionamento inverso do departamento para o professor tá E aí você faz a mesma pergunta só inverte aqui que o a ideia do relacionamento então em um departamento pertencem Quantos professores ou a um departamento pertencem Quantos professores Agora sim num departamento eu posso ter vários professores então este esta cardinalidade na outra ponta que tá zero para n Essa vai ser um para n então a gente vem aqui e ajusta um para n beleza temos
as cardinalidades ajustadas para esse relacionamento entre o departamento e o professor certo muito bom Depois a gente vai poder calcular hã a cardinalidade total do relacionamento somando as duas cardinalidades tá muito bom então a gente fez a primeira vamos prosseguir vamos vamos terminar aqui o departamento tá então eu vou fazer agora a cardinalidade entre departamento e curso aí você faz a pergunta né o departamento controla Quantos cursos o departamento pode ter vários cursos tá então lá na outra ponta em vez de zero para n é um para n e o inverso um curso é controlado
por quantos departamentos nesse caso um curso um departamento então a gente vem aqui em cima Em vez de zero para n a gente vai colocar um para um que que significam esses dois números Você deve lembrar da aula teórica no primeiro número é a cardinalidade mínima o número mínimo de ocorrências da entidade e o o segundo número depois da vírgula é a cardinalidade máxima o número máximo de ocorrências para aquela Instância de entidade tá então fizemos o a cardinalidade entre departamento e curso e para terminar a entidade e Departamento eu vou fazer também entre departamento
e disciplina e a pergunta é um departamento gerencia quantas disciplinas bom um departamento pode gerenciar várias disciplinas né se ele controla vários cursos que Dirá as disciplinas que existem em quantidade nos cursos então aqui tá também é um para n e a pergunta inversa uma disciplina é gerenciada por quantos departamentos uma disciplina gerenciada por apenas um departamento então a gente coloca aqui um também legal podia ser diferente sim poderia ser diferente a disciplina poderia ser gerenciada por vários departamentos um ou mais departamentos tá tudo depende da regra de negócio tá é isso que manda no
no na nossa determinação das cardinalidades não é necessariamente o bom senso né ou a prática usual que a gente vê por aí e sim o que regra de negócio manda o que nosso requisito Manda fazer aqui no banco de dados beleza muito bom então finalizamos o departamento fizemos departamento com professor com disciplina e com curso e fizemos Professor com departamento falta um um relacionamento pro professor que é entre professor e disciplina Então vamos terminar o professor também aí um professor ministra quantas disciplinas tá a gente tem essa informação lá nos nossos requisitos a gente sabe
que um professor pode lecionar mais de uma disciplina então aqui é uma ou mais disciplinas uma ou mais disciplinas e uma disciplina ela é ministrada por quantos professores Ah agora acontece um caso diferente uma disciplina pode ser ministrada por mais de um professor eu posso ter dois professores de matemática por exemplo na minha escola então aqui também será um vírgula n mínimo um no máximo n e veja o que aconteceu agora a gente tem esse esse essa cardinalidade um para n dos dois lados se a gente somar ambos a gente vai ter ã uma cardinalidade
n para n um relacionamento muitos para muitos provavelmente Então a gente vai ter que transformar esse relacionamento ministra tá no mente entidade associativa ou seja vai surgir uma outra entidade aqui quando a gente for fazer a normalização ou antes disso já sabendo disso a gente pode eventualmente criar essa entidade e é uma coisa que a gente vai fazer no próximo vídeo beleza mas fiquem esperto sempre que aparecer um para n dos dois lados significa que a gente vai ter que trabalhar um pouco mais em cima daquele relacionamento tá muito bom então agora a gente terminou
o departamento e professor vamos fazer o curso né a gente já fez o relacionamento entre departamento entre curso agora vamos fazer entre curso e disciplina e a pergunta sempre né ã uma disciplina pertence a Quantos cursos bom uma disciplina ela pode estar presente em mais de um curso né vamos supor a disciplina matemática ela pode est presente no curso de física no curso de TI até mesmo no curso de biologia então uma disciplina pertence a um ou mais cursos 1 v n e a um curso perten em quantas disciplinas também um curso vai ter várias
disciplinas o curso não é composto por uma única disciplina tá ã Claro existem cursos que só tem uma disciplina por exemplo um curso livre se a gente pensar em curso livre numa numa escola como a escola onde eu trabalho curso de Excel tem uma disciplina só Excel Mas aqui é uma faculdade lembre-se disso então os cursos eles têm mais de uma disciplina então é uma ou mais disciplinas 1 v n e de Novo Aconteceu o relacionamento n para n Então a gente vai ter que trabalhar um pouquinho melhor posteriormente neste relacionamento aqui certo beleza vamos
fazer entre curso e turma agora então um curso gera quantas turmas o curso pode gerar uma ou mais turmas tá a gente pode ter por exemplo vamos supor um curso técnico em eletrônica o curso é um só técnico em eletrônica mas eu posso ter várias turmas desse curso rolando ao mesmo tempo na escola eu posso ter uma turma de manhã uma de tarde uma de noite ou duas de noite duas de manhã e assim por diante tá na época em que eu fiz o curso técnico de eletrônica chegava a ter quatro turmas simultâneas no mesmo
período Então tinha bastante turmas só que aqui tem um detalhezinho na verdade o curso gera uma ou mais turmas não necessariamente uma mas pode ser zero ou mais turmas por quê Porque eventualmente eu posso não ter nenhuma turma sendo ofertada daquele curso naquele momento tá Como já aconteceu também no meu local de trabalho a gente tem vamos supor um curso de redes técnico em redes e não tá sendo ofertado aí se você perguntar Quantas turmas tem o curso técnico em redes nenhuma não tá rolando esse curso Então o curso Ele pode gerar zero ou mais
turmas Esse é um detalhe crucial então aqui vai ficar realmente 0 VN tá agora o inverso uma turma é gerada por quantos cursos então supondo que a turma exista ela é gerada por um curso ela é derivada de um curso tá mas de Quantos cursos um ou mais então uma turma do curso técnica eletrônica obviamente ela só pode ser gerada pelo curso técnico em eletrônica então a turma a do do técnica eletrônica pertence apenas Então somente a esse curso Então aqui é apenas um mínimo um no máximo um Olha que relacionamento curioso esse aqui ficou
diferente dos demais mas é important fazer essa anlise dessa forma muito bom a gente já fez aqui o curso com quase todo mundo Falta só com o aluno Então vamos fazer relacionamento entre curso e aluno aí a pergunta o aluno um aluno está matriculado em Quantos cursos aqui depende o aluno ele pode estar matriculado em um ou mais cursos dependendo do negócio da regra de negócio que a gente vai apresentar tá no geral pro nosso exemplo o aluno tem que estar matriculado em um curso e no máximo em um curso ou seja ele não pode
fazer dois cursos simultaneamente ele não pode estar no curso técnico em informática e no curso técnico em eletrônica ao mesmo tempo então um aluno está matriculado em apenas um curso 1,1 agora em um curso quantos alunos podem estar est matriculados aí vários um ou mais alunos certo um ou mais alunos agora a gente também pode pensar assim ã no curso eu posso ter zero matrículas de alunos né Depende se não tiver nenhuma turma sendo ofertada eu não tenho nenhum aluno matriculado correto né então eventualmente poderia ser zero para n Aqui também tá vamos deixar como
zero para n então e depois na hora de normalizar a gente vai trabalhar em cima disso aqui um pouco melhor certo muito bom Apesar de que a gente também pode pensar da seguinte forma o aluno estar matriculado em um curso mas a turma Não Ter iniciado ainda esse é um outroo então não existe a turma ainda mas o aluno está matriculado no curso eu me matriculei no curso técnico eletrônica mas não formou turma ainda a gente pode pensar assim mas vamos deixar como zero para n muito bom terminamos então relacionamentos do curso agora a gente
tem um relacionamento entre turma e aluno tá aí a pergunta um aluno pertence a quantas turmas se ele só pode se matricular em um curso Ele só pode estar numa turma tá então o aluno pertence a uma única turma e a uma turma pertencem quantos alunos a mesma coisa uma turma pode ter zero ou mais alunos só que agora é diferente se a turma existe tem tem que ter aluno matriculado certo se não tem aluno a turma não existe Então aqui tem que ter no mínimo aluno para que exista a turma então aqui é um
para n tá toma bastante cuidado quando você tiver fazendo essa análise porque é parecido o curso com a turma mas na verdade são entidades diferentes que existem momentos distintos aí o relacionamento entre elas e outras entidades pode ser diferente tá beleza vamos terminar o aluno o aluno ele cursa disciplinas então o aluno pode cursar quantas disciplinas tá o aluno pode cursar uma ou mais disciplinas se ele tiver matriculado num curso ele eventualmente tá cursando várias disciplinas Tá mas o aluno também ele pode não cursar nenhuma disciplina mesmo estando matriculado em um curso a nossa regra
de negócio prevê isso ela diz que o aluno Pode trancar matrícula E se ele estiver com a matrícula trancada ele não está cursando nenhum uma disciplina então aqui é de zero a n no mínimo nenhuma no máximo várias certo e em uma disciplina quantos alunos eu posso ter cursando essa disciplina eu posso ter também Zero ou vários alunos tá depende da disciplina tá sendo ofertada ou não então aqui fica do jeito que está zero para N zero para n não precisamos modificar e o último relacionamento do aluno é com o histórico então um um histórico
aqui é o inverso né um histórico pertence a quantos alunos bom um histórico em particular uma Instância de histórico pertence a um único aluno então aqui é 1 v1 e a um aluno pertence em quantos históricos bom o aluno só tem um histórico então aqui também do outro lado é um para um 1,1 mínimo um no máximo um a gente matou também o relacionamento entre aluno e histórico que que tá faltando a gente terminar tá faltando a gente terminar apenas os relacionamentos da disciplina tem um com histórico e um com ela própria Então vamos fazer
esse relacionamento que é o compõe disciplina compõe histórico uma disciplina compõe quantos históricos n históricos né uma disciplina pode est no histórico do aluno a do aluno B do aluno C do aluno d de 1000 alunos então é de um a mais certo supondo que o histórico exista tem que ter a disciplina lá agora um histórico é composto por quantas disciplinas Provavelmente por várias se é um histórico de um curso de faculdade então você vai ter várias disciplinas não apenas uma então aqui também é um para n e de novo temos um relacionamento muitos para
muitos que vai ter que ser trabalhado posteriormente cer ESSEA do compõe a disciplina ela tem um auto relacionamento a gente sabe que uma disciplina Depende de outra disciplina mas qual é a cardinalidade que a gente vai empregar aqui a pergunta é a seguinte uma disciplina Depende de quantas disciplinas bom uma disciplina pode depender de uma ou mais disciplinas ou não depender de nenhuma então eu posso ter uma disciplina no meu curso que pode ser cursada independente do que o aluno já cursou então ela não depende de nada mas eu posso ter uma outra disciplina que
depende de uma anterior por exemplo física do pode depender do cara ter cursado física 1 certo então Depende de uma disciplina ou de várias por exemplo cálculo integral três pode depender do cara ter cursado o cálculo integral 1 e 2 Então na verdade uma disciplina pode depender tá de zero ou mais disciplinas pode não depender de nenhuma ou pode depender de várias e o inverso também uma disciplina Depende de quantas disciplinas 0 n aqui na verdade como é um autor relacionamento tá nos dois sentidos vai ficar igual certo zero para n e zero para n
beleza E assim a gente termina de criar as cardinalidades aqui no nosso diagrama entidade de relacionamento h tá pronto não ainda não tá a gente tem algumas alguns problemas para resolver aqui por exemplo quando a gente tem as cardinalidades n para m muitos para muitos que são esses relacionamentos muitos para muitos a gente vai ter que trabalhar em cima disso e a gente vai fazer isso posteriormente tá E e posteriormente a gente vai fazer a normalização também dessas tabelas tranquilo pessoal então é isso aí no próximo vídeo a gente vai trabalhar em cima dessa desses
relacionamentos problemáticos e fazer mais alguns ajustes aqui no nosso diagrama entidade de relacionamento de modo Aqui nós temos o o Dr intermediário que é o que a gente acabou de fazer tá E na próxima lição a gente vai fazer os ajustes no modelo conceitual tá E vamos também derivar o modelo lógico em cima dele para depois poder fazer a normalização vamos dar uma olhada no nosso Dr no nosso diagrama entidade de relacionamento intermediário que é o que foi gerado a partir do do último vídeo da nossa última lição que foi a lição onde nós ajustamos
as cardinalidades bom nós ficamos então com esse diagrama tem várias entidades muitos relacionamentos e a gente tem as cardinalidades já configuradas só que nós temos um pequeno problema aqui algumas das cardinalidades de alguns dos relacionamentos são cardinalidades muito muitos para muitos n para m tá então são relacionamentos que vão certamente apresentar problemas mais paraa frente se você tentar implementá-los num banco de dados físico o relacionamento muitos para muitos ele deve ser na verdade eliminado Tá ele deve ser desmembrado para que você possa efetivamente Criar o seu banco de dados sem ter nenhum tipo de problema
de repetição de dados ou de integridade tá então a gente vai identificar aqui alguns desses relacionamentos muitos para muitos que a gente tem por exemplo se a gente olhar com atenção a gente vai descobrir que o relacionamento entre professor e disciplina é muitos para muitos veja ele é 1 v n e 1 n dos dois lados se você soma essas cardinalidades Você tem um relacionamento muitos para muitos aqui a gente vai ter um problema qual é o problema Professor ministra disciplina o professor Pode ministrar muitas disciplinas mas uma disciplina pode ser ministrada por vários professores
também então na hora de você registrar isso no banco de dados você pode acabar tendo informações cruzadas ou duplicadas a gente vai ter que trabalhar em cima disso um outro relacionamento desse tipo é o entre histórico e disciplina também a disciplina compõe histórico legal uma disciplina pode estar em vários históricos obviamente e o histórico pode ter muitas disciplinas então novamente nós temos o problema do relacionamento muitos para muitos tá E aí vamos ver se a gente tem mais algum problema desse temos aqui curso com disciplina então um curso pert uma disciplina pertence a um curso
certo na verdade já pode pertencer a vários cursos na nossa faculdade ficou acordado que uma disciplina pode estar em vários cursos por exemplo matemática pode estar no curso de ti e de engenharia também e um curso a um curso pertencem muitas disciplinas obviamente um curso tem várias disciplinas Então a gente tem que dar um jeito de de desmembrar esse tipo de relacionamento e como é que a gente faz isso bom a gente faz isso por meio de uma entidade associativa que que é uma entidade associativa é uma entidade que a gente que a gente implementa
para resolver esse problema dos relacionamentos muitos muitos a gente também chama isso aqui de tabela associativa ou gera uma tabela associativa tá e a ideia é mapear duas ou mais tabelas que estejam relacionadas entre si e sempre fazendo referência às Chaves primárias de cada tabela então o segredo tá em pegar as chaves primárias das tabelas no relacionamento muitos para muitos e a partir dessas Chaves primárias gerar uma outra tabela intermediária que vai ser a nossa entidade associativa tá nessa entidade obviamente essas chaves primárias vão ser Chaves estrangeiras para que você possa criar relacionamentos entre elas
tá E assim a gente vai resolver esse problema criando dois ou mais relacionamentos um para muitos onde antes a gente tinha um relacionamento muitos para muitos beleza A Entidade associativa ela pode receber vários nomes depende da literatura que você tiver consultando como por exemplo tabela de referência cruzada tabela de intersecção tabela de junção que é bastante comum tabela de mapeamento transição outros nomes Tá mas o nome técnico mais usual é entidade associativa beleza bom dito isto a ideia básica É essa a gente tem duas entidades relacionadas num relacionamento muitos para muitos e a gente quer
desmembrar isso em uma entidade associativa que permita interligar as duas entidades usando relacionamentos um para muitos como a gente tá vendo aqui nessa ilustração bom a gente Já identificou lá no no nosso diagrama entidade de relacionamento as ocorrências dos relacionamentos muitos para muitos a gente vai relembrar deles aqui então a gente sabe que o relacionamento curso pertence disciplina tem esse problema disciplina compõe histórico tem esse problema e professor ministra disciplina também tem esse problema tá a gente viu isto aqui tá no diagrama entidade de relacionamento que são esses relacionamentos entre Professor disciplina histórico disciplina e
Curso disciplina tô desenvolvendo disciplina né E como é que a gente resolve isso então a gente vai ter que gerar entidades associativas pros relacionamentos pertence cõ e ministra esses três relacionamentos desaparecem e no seu lugar vão aparecer entidades relacionadas com as outras entidades que estão envolvidas Então o que a gente vai fazer é isto aqui pessoal vamos criar as entidades associativas desta forma no relacionamento entre curso e disciplina a gente vai criar uma entidade intermediária que Eu batizei de curso disciplina isso aqui é bastante usual quando você cria uma entidade associativa dar nomes a essa
entidade fazendo referência as tabelas que a geraram as tabelas que estavam relacionadas anteriormente tá para deixar bem claro do que se trata aquele relacionamento então é curso disciplina e aí nesse caso a gente tem o relacionamento entre curso e Curso disciplina entre disciplina e Curso disciplina tá ã curso um para n com curso disciplina e disciplina um para n com curso disciplina também tá essa é a ideia gerar esses relacionamentos um para n Vamos pensar um pouquinho no que tá acontecendo aqui tá um curso possui quantos cursos de disciplina vários né um curso tem vários
relacionamentos com disciplinas mas um curso disciplina em si né uma associação de um curso com disciplina só pode fazer parte de um único curso né porque a gente já tem discriminado o curso em si no próprio relacionamento por isso esse relacionamento que antes era n para m virou um para n e a mesma coisa acontece do outro lado tá Ahã uma disciplina pode est em vários cursos disciplinas eu posso Tera combinada com vários cursos mas uma combinação de curso com disciplina só tem uma disciplina que é a disciplina Justamente que que está combinada aqui tá
é um pouco Esotérico isso mas a ideia é justamente essa né de você ter aqui o relacionamento um para n e a mesma coisa vai se repetir nos outros por exemplo disciplina com histórico foi desmembrada e a gente criou o dis rist Aqui eu abreviei porque não Coube o nome ficou muito grande para esse retangulo Zinho disciplina histórico e a mesma ideia né uma disciplina compõe múltiplos múltiplos históricos com disciplina Tá mas a combinação de uma disciplina com histórico é composta por apenas uma única disciplina a discriminada e a mesma coisa o histórico é composto
por disciplina histórico mas a combinação de disciplina com histórico é de um único histórico Então aquela disciplina x com aquele histórico y pertence ao histórico de um aluno em particular Apenas não de vários históricos diferentes e finalmente o relacionamento entre professor e disciplina que também era muitos para muitos foi desmembrado criando a entidade Prof disciplina e a ideia é a mesma né um professor pode lecionar várias Prof disciplinas ou seja ele pode estar associado com várias disciplinas Essa é a ideia mas uma associação de professor com disciplina diz respeito apenas aquele Professor único assim como
uma disciplina pode ser lecionada n várias vezes por vários professores distintos portanto pode estar associada com vários professores mas uma associação em particular de professor com disciplina diz respeito apenas a uma disciplina né então se tiver uma associação por exemplo Professor Fábio com bancos de dados tá Ahã nessa Associação eu tenho apenas uma disciplina que é banco de dados mas a disciplina bancos de dados pode estar associada comigo ou com outros professores então nós temos aí um relacionamento de um para muitos onde antes era muitos para muitos isso isso resolve esse problema dos relacionamentos n
para n tá assim dito isso a gente tem as três entidades associativas que surgiram no nosso projeto criadas tá provavelmente você vai ter que pensar um pouquinho ah em cima desse diagrama para conseguir absorver legal a ideia porque não é tão simples assim quanto parece na verdade você analisar e chegar à conclusão de que tem essa entidade mas é fácil identificar quando precisa trabalhar com ela é só ver o relacionamento muitos para mos aí você já sabe aqui eu vou criar uma associativa e depois disso a gente só tem que pegar essas entidades todas e
jogar no nosso diagrama entidade de relacionamento então aqui está agora a nossa nova etapa do diagrama entidade de relacionamento um intermediário já com as entidades associativas inseridas Então a gente tem aqui curso disciplina o prof disciplina e o dis histórico n disciplina histórico já colocados nos seus locais correspondentes vejao que ficou bem mais complexo o diagrama entidade de relacionamento ficando complexo provavelmente vai ter alguns ajustes pra gente fazer ainda tá mas a gente vai fazer esses ajustes já nas próximas etapas do do nosso projeto Claro a gente poderia ter feito um projeto com com banco
de dados muito mais simples com duas três ou quatro entidades mas a ideia desse projeto foi justamente ter várias entidades vários relacionamentos para ser algo mais próximo do mundo real é muito comum a gente ver por aí ah em aulas de modelagem Professor explicando ã como criaram um um relacionamento entre duas tabelas e só acabou aí e aí quando o aluno vai pro mundo real ele se depara com banco de dados que em vez de duas tem 30 tabelas E aí ele se confunde então por isso esse projeto está ficando um pouco mais complexo mas
a ideia justamente é essa que a gente consiga modelar algo aí ã que traga bastante aprendizado beleza bom É isso aí então pessoal temos o nosso IDR intermediário depois de criar as entidades associativas Lembrando que ã essas entidades novas obviamente também terão os seus atributos tá E os atributos que elas vão conter com certeza são as chaves primárias das entidades que a geraram na forma de Chaves estrangeiras e eventualmente uma chave primária para cada tabela isso a gente vai preencher a gente vai colocar na nas entidades na próxima etapa que é a etapa de ajustes
finais mais no modelo conceitual e a derivação no modelo Lógico tá já um passo antes da gente fazer a normalização e depois a implementação física tá chegando no final do projeto pessoal a gente vai chegar lá em breve agora a gente vai criar um dicionário de dados para depois poder poder dar continuidade nesse projeto criando modelo lógico vocês já sabem como criar um dicionário de dados porque a gente já viu isso na nossa aula teórica lá no começo do curso então a coisa que vai ser bem simples e bem rápida esse aqui que vocês estão
vendo na tela é o Dr intermediário que foi gerado no último vídeo tá depois de criar as entidades associativas nós temos aqui 10 entidades tá E os relacionamentos entre essas entidades e agora a gente vai criar um dicionário de dados englobando essas entidades com esses relacionamentos e também adicionando os atributos de cada entidade Ah esse dicionário de dados depois ele vai servir de base pra gente poder criar modelo lógico fazer a normalização e enfim criar o banco de dados para valer usando SQL Beleza então vamos prosseguindo bom a gente vai fazer da seguinte forma eu
vou criar o dicionário de dados nesse formato de tabela tá e eu vou começar descrevendo as entidades ã só que eu vou passar assim rapidamente pelas entidades e pelos atributos para não ficar algo muito repetitivo e chato na verdade eu vou deixar alguns segundos cada uma das tabelinhas que eu vou mostrar aqui na tela e aí se você tiver interesse em se aprofundar você pausa o vídeo e dá uma analisada em cada uma delas e quando tiver alguma coisa mais específica eu vou falar um pouquinho mais a fundo certo Então primeiramente as entidades no nosso
dicionário de dados a gente vai listar todas as entidades que são 10 tá aqui eu tenho as três primeiras A Entidade departamento A Entidade professor e a entidade turma eu também tenho a listagem dos relacionamentos de cada entidade por exemplo a entidade departamento é ela se relaciona com professor com curso e com disciplina é só olhar no diagrama entidade de relacionamento para ver isso de forma gráfica e eu também tenho a listagem dos nomes desses relacionamentos os nomes que a gente deu para para eles então por exemplo o relacionamento entre departamento e professor é o
pertence Professor pertence ao departamento departamento com curso controla departamento controla o curso e Departamento e disciplina gerencia departamento gerencia a disciplina e temos pro final ã uma coluna de descrição de cada uma das entidades então o departamento tabela para cadastro dos departamentos da faculdade legal bem tranquilo paraa professora a mesma coisa tem os relacionamentos e os nomes dos relacionamentos né as tabelas com as quais ele se relaciona e a descrição tabela para cadastro os professores da faculdade é a mesma coisa para turma Note que eu não eu não criei uma tabelinha não vou criar uma
tabelinha especificamente para para descrever os relacionamentos mais a fundo isso pode inclusive ficar de lição de casa para você complementar o dicionário de dados criando uma tabela extra só para falar sobre os relacionamentos por exemplo relacionamento entre departamento e professor é o pertence que que significa Exatamente esse pertence Tá o que que faz esse relacionamento ele discrimina a qual departamento um professor pertence seria uma descrição para esse relacionamento né se você quiser eh ter essa informação a parte em uma outra tabelinha que pode ser interessante certo eu não vou fazer isso aqui eu só vou
descrever as entidades com os relacionamentos e seus atributos um pouquinho mais paraa frente aqui na segunda parte temos mais duas entidades curso e aluno curso tem quatro relacionamentos e aluno também tá ã e os nomes dos relacionamentos também listados como anteriormente depois mais duas entidades disciplina e histórico histórico só tem relacionamento com com duas outras entidades mas a disciplina se relaciona com seis né a disciplina é bem relacionada aqui no caso então tem os relacionamentos cursa gerencia é lecionada pertence depende compõe muito bom e temos ainda mais três entidades essas aqui são as entidades associativas
que a gente criou no vídeo passado Disk IST disciplina com histórico curso de disciplina Prof disciplina tá elas se relacionam com as entidades que deram origem a essas tabelas associativas no caso de dis que is é disciplina histórica o curso de disciplina curso com disciplina e professor disciplina Prof disciplina é professor com disciplina tá Não se perca aí é só olhar na tabelinha aqui e na descrição eu mostro que são tabelas associativas entre as outras duas tabelas ou entidades ã que as originaram certo beleza então a gente descreveu as entidades no dicionário de dados agora
a gente vai descrever os atributos extremamente importante ter os atributos porque é a partir deles que a gente vai poder criar as tabelas posteriormente em SQL e também fazer a normalização E aí eu fiz da seguinte forma eu coloquei uma tabelinha para cada entidade e listei os atributos da entidade tá para ficar um pouco mais simples assim a gente também tem a informação de a qual entidade pertence qual atributo aqui eu vou passar mais rápido porque são 10 entidades tem um monte de atributos só vou falar especificamente daqueles que forem mais importantes então paraa entidade
departamento Nós temos dois dois atributos código do departamento e nome do departamento os tipos de dados são listados então pro código do departamento o tipo de dados é inteiro é o domínio dele números inteiros e pro nome do departamento domínio é caracter literal textos letras números e símbolos o comprimento é Quanto espaço por padrão ele vai ocupar no banco de dados então cada código de departamento ocupa 4 bytes devido ao tipo do inteiro que a gente escolheu e o nome do departamento vai ocupar 40 bytes um byte para cada caracter Ou seja eu consigo armazenar
40 caracteres no nome do departamento E se o nome do departamento for maior né tiver mais do que 40 caracteres a gente vai ter que aumentar isso aqui isso tem que ser previsto anteriormente e pro código do departamento cumprimento de 4 byes também padrão de acordo com o tipo de dado que a gente vai usar inteiro mas pode ser diferente né Na hora da gente criar o banco de dados mesmo a gente vai ver os tipos específicos para cada produto para cada sistema de gerenciamento de bancos de dados aí eventualmente a gente vai fazer pequenas
alterações Além disso essa entidade tem dois atributos mas ela poderia ter mais isso aqui ainda não é definitivo tá eventualmente no processo de normalização a gente vai acrescentar algum atributo ou provavelmente tirar e trocar atributos de lugar por exemplo aqui poderia ter a localização do departamento não foi pedida a localização quando a gente começou o nosso projeto então nos requisitos do projeto não dizia que a gente tinha que armazenar a localização por isso ela não está aqui mas ela pode ser colocada sim sem problemas como é uma faculdade Imagine que a gente tem um campus
universitário num campus universitário os departamentos podem ficar distantes entre si em prédios diferentes e aí pode ser interessante ter a localização legal fica uma dica aí se você quiser tiver implementando esse banco da modelagem você pode acrescentar esse campo sem problemas bom vamos prosseguir Então vamos acelerar um pouquinho entidade professor vai ter como atributos o código do professor também o número inteiro tá veja que a gente tem a coluna de restrições tá não falei anteriormente dessa coluna Deixa eu voltar aqui a gente tem eh restrições not nu ou seja obrigatório Preencher esses dados quando a
gente for cadastrar informação no banco e no caso do código departamento ele PK primary Key ele é a chave primária dessa tabela certo muito bom agora a gente pode avançar na tabela código do professor ah Professor a gente tem o código do professor que é a sua chave primária temos o nome sobrenome do professor o código do departamento aparece aqui de novo para indicar de qual departamento esse professor faz parte e aqui ele é uma chave estrangeira FK foreign Key E aí nesse caso como ele é chave estr gera de um campo que tá em
outra tabela ele tem que ser exatamente do mesmo tipo de dados isso é importante tá não pode colocar um tipo de dados distinto E também temos o status do professor se ele tá lecionando ou não o status ele pode ser o tipo boleano tipo Lógico que ocupa um bit né 01 verdadeiro ou falso só para indicar se ele está lecionando ou não se você preferir armazenar essa informação na forma de caracter como um texto uma frase também vai funcionar basta que você ajuste corretamente a aqui certo próxima entidade curso tem os atributos código do curso
nome do curso e código do departamento código do curso vai ser a chave primária código do departamento é uma chave estrangeira para dizer de qual curso aliás de qual departamento o curso pertence certo próxima turma Turma tem vários Campos código da turma e código do curso período número de alunos data de início e data de fim o código da turma é a chave primária o código do curso é a chave estrangeira para ligar a turma com o curso saber de qual curso é aquela turma período manhã Tarde ou noite então um caracter é um texto
poderia ser também um caracter de um byte apenas uma letrinha MT e n fica seu critério coloquei 10 B para poder escrever por extenso o texto a palavra amanhã Tarde ou noite número de alunos vai ser um número inteiro comprimento Menor 2 bytes porque provavelmente eu não vou ter deas de milhares de alunos nessa turma então não precisa ser algo que ocupe muito espaço tá a gente sempre tem que pensar também nesse nesse lado da otimização do espaço no banco às vezes usar um tipo de dados com um byte a mais ou a menos pode
fazer uma diferença enorme se você tiver muitos registros armazenados no banco data início e data de fim Ambos são do tipo de dados data que existe nos bancos de dados aqui o comprimento padrão 4 by Depende de como você vai armazenar essa data se só dia mesiano se vai armazenar hora junos Minuto segundo ela pode ser um pouco maior ou menor mas a princípio é isso aqui prosseguindo a entidade aluno é a que mais atributos possui tem como chave primária o RA do aluno Tá então não teremos ras repetidos ã E aí nós temos nome
do aluno sobrenome CPF telefone do aluno veja que aqui na descrição eu coloquei telefones porque esse aqui é um atributo h multivalorado o aluno pode ter mais de um telefone a gente vai tratar disso na normalização o status da matrícula do aluno contato formas de contato com o aluno também no plural a gente vai tratar na normalização e temos mais alguns atributos pro aluno código da turma código do curso ao qual ele pertence Ambos são Chaves estrangeiras Então temos duas Chaves estrangeiras na tabela de alunos sexo ã filiação que é o nome da mãe do
cidadão aí eu coloquei 80 by para poder escrever o nome da mãe inteiro dentro desse único campo em vez de separar em nome sobrenome e finalmente o campo de endereço o atributo endereço que é um atributo composto ele vai ser dividido em rua número e CP então ele é do tipo caracter eu já fiz uma separação prévia 80 bytes paraa Rua 10 para número e 10 para CP todos eles note nul porque número entra como como caracter também porque o número do do endereço geralmente você não usa para fazer cálculos tá e muitas vezes o
número ele pode incluir letras n né ã como por exemplo letra f de fundos então o cara mora na rua sei lá Rua dos ciclames 28 Fundos tá então a gente vai usar como caracter nesse caso próximo entidade disciplina montão de atributos também código da disciplina é a chave primária temos também o nome da disciplina descrição código do departamento que a chave estrangeira opa aqui ficou faltando colocar FK então anota aí FK aqui em código do departamento escapou um que aparecer na normalização de qualquer forma carga horária e número de alunos esses três últimos Campos
são números inteiros tá Ah número de horas do curso a quantidade de alunos e o código do departamento que tem que ser igual ao código do departamento que tá na outra tabela aqui para carga horário número de alunos eu coloquei 4 bytes mas pode ser 2 bytes também a gente vai vai depois ajustando isso para ficar Ahã da melhor forma possível para implementar no banco e um último detalhe nessa tabela é a descrição que eu coloquei como comprimento 200 byes é um campo de texto grande Tá para poder colocar uma descrição completa da disciplina e
esse campo eu usei como restrição nul nulo ele vai aceitar nulos ou seja se eu não quiser colocar descrição de uma disciplina eu poderei pular essa informação certo Note que na maioria dos casos os Campos São note nul não nulos vamos lá mais um entidade histórico três campinhos código de histórico ra e o período de realização que é duração da realização da disciplina ã em meses a princípio então o código do histórico é número inteiro e a chave primária o ra chave estrangeira para você saber de quem é aquele histórico tá então tá vinculado ao
ra de um aluno e o período de realização eventualmente esse período ele pode ser desmembrado ou até desaparecer da tabela na normalização a gente vai cuidar disso também e agora ficaram faltando as tabelas associativas então entidade disciplina histórico as tabelas associativas elas vão ter obviamente os campos que vieram ã das tabelas que deram origem a elas então aqui por exemplo code histórico e cod disciplina que vieram das tabelas de histórico e disciplinas elas são Chaves primárias e Chaves estrangeiras ao mesmo tempo nessa tabela então ess é outra novidade chave primária também pode ser chave estrangeira
e aqui eu acrescentei os campos nota e frequência eles fazem mais sentido nessa tabela do que direto na tabela de histórico então nota daquela disciplina e número de faltas daquela disciplina prosseguindo curso disciplina então tem aqui só dois Campos código curso e código disciplina as restrições chave primária e chave estrangeira também e são os códigos de Identificação do curso e da disciplina tá se você acha que a gente tem que incluir mais um campo mais um atributo nessa tabela deixa nos comentários aqui embaixo que a gente vai discutindo e vai colocando e finalmente a entidade
Prof disciplina que tem como atributos o código do professor e o código da disciplina também tá mesmo esquema Ambos são chave primária e chave estrangeira Tranquilo então assim a gente finaliza o nosso dicionário de dados e agora a gente tem um monte de informações interessantes para poder prosseguir com a criação do nosso banco de dados por exemplo criando o modelo lógico só que antes disso vamos dar uma olhadinha no modelo conceitual e ver como é que ele ficou depois de colocar os atributos Olha que beleza esse é o novo nosso novo modelo conceitual completo agora
com as entidades com os relacionamentos e também com os atributos veja que ele fica um pouco complexo né ã veja que interessante ele é realmente bastante completo a gente começou a partir de um texto né que era uma ideia de um de um banco de dados e chegamos já até esse ponto aqui então o nosso próximo passo será a partir desse cara gerar o nosso modelo Lógico que vai conter ainda as entidades com os atributos só que a gente vai sumir com esses losangos de relacionamentos e vamos representá-los de uma outra forma na verdade tudo
vai ser representado de uma forma um pouco diferente e a partir dali a gente vai conseguir fazer a nossa nor normalização agora a gente vai passar pro modelo lógico esse aqui é o o diagrama entidade de relacionamento do modelo conceitual que a gente tem até o momento na prática ele não tá pronto ainda ainda tem algumas coisinhas pra gente ajustar Aqui Nós criamos na outra semana algumas entidades associativas para eliminar relacionamentos muitos para muitos Porém uma delas ficou aí ainda para ser trabalhada aqui no no modelo e inclusive num dos vídeos no no último vídeo
que a gente tratou desse assunto Ah uma das pessoas que acompanha né do dos nossos estudantes aqui do canal notou isso e apontou que Falta aí um relacionamento pra gente pra gente trabalhar não disse exatamente qual era mas a gente sabe qual que é a gente tem o o relacionamento entre aluno e disciplina aluno cursa disciplina no qual um aluno pode cursar muitas disciplinas mas uma disciplina pode ser cursada por muitos alunos Então a gente tem um relacionamento muitos para muitos ainda que ficou aqui tá a gente pode ver aqui a cardinalidade tá zero para
n e zero para n do outro lado então a gente tem que eliminar esse cara e é bem simples para isso basta criar uma entidade associativa se você não tinha reparado nisso ainda então agora você vai ver como é que a gente resolve o problema criando uma nova entidade que eu chamei de aluno dis de disciplina que tá aqui então agora eu tenho um relacionamento entre aluno e aluno dis e disciplina e aluno dis o aluno cursa o aluno dis e a disciplina é cursada pelo aluno dis nesse caso a gente vai ter a o
relacionamento da seguinte forma com a seguinte cardinalidade um aluno ele pode cursar zero ou mais alunos dis que mais disciplinas mas a combinação de um aluno com uma disciplina é cursada apenas por um aluno então a gente resolveu esse relacionamento muitos para muitos desse lado e do outro lado a mesma coisa é uma disciplina ela pode ser cursada por um por zero ou mais alunos né posso não ter ninguém matriculado nela mas posso ter um monte de alunos mas a combinação de aluno com disciplina é cursada apenas por uma disciplina a pertence apenas a uma
disciplina certo então a gente tem que acrescentar essa nova entidade com esses relacionamentos ao dicionário de dados Isso é uma tarefa que fica aí para você fazer em casa tá e parabéns aí pro pro nosso amigo que conseguiu detectar que faltava um relacionamento para pra gente trabalhar beleza Ah E aqui nessa nessa entidade Eu utilizei apenas dois atributos código disciplina e código de aluno ambos das tabelas correspondentes aluno e disciplina certo bom agora que a gente tem o modelo conceitual completo A gente vai criar o modelo lógico Olha que interessante vamos relembrar como é que
a gente relaciona as entidades no modelo conceitual a gente faz da seguinte forma a gente tem as entidades a gente tem os atributos e existe um relacionamento entre elas aqui para facilitar eu tirei né o o nosso losango que indica o relacionamento para não ficar muito poluída a tela mas aqui existe um um relacionamento entre turma e Curso a turma pertence a curso esse relacionamento tem uma cardinalidade específica e aqui estão os atributos para cada uma das entidades incluindo os atributos determinantes códe turma para turma e códig curso para curso Então aqui é o nosso
modelo conceitual como como é que fica isso esse relacionamento no modelo lógico no modelo Lógico o que a gente vai fazer é o seguinte nós vamos ainda representar as duas entidades com o relacionamento entre elas e suas cardinalidades só que agora a representação é feita num formato parecido com de uma tabela e essa tabela vai conter os seguintes elementos os nomes dos Campos dos atributos para ambas as tabelas o tipo de dados que a gente vai utilizar e aqui você pode ser bem específico se Se você quiser eu não fui muito específico eu coloquei por
exemplo pro código da turma apenas o número inteiro legal eu não especifiquei qual o tamanho desse número inteiro pro código do curso a gente tá usando caracter poderia ser numérico também ã pro período caracter número de alunos número inteiro data de início e fim tipo data essa informação tá lá no dicionário de dados de lá a gente puxou esses dados para montar essa tabelinha tá a mesma coisa pro curso e aí a gente representa o relacionamento em entre eles eu tô puxando aqui ah código curso como sendo chave primária e aí eu tenho essa Coluninha
Extra pequenininha para mostrar quem é chave primária e quem é chave estrangeira então PK primary Key é a chave primária é ficar chave estrangeira a gente tem na tabela de curso uma chave estrangeira chamada código do departamento porque a tabela de curso também se relaciona com a tabela de departamentos que não tá aparecendo aqui aqui é só para exemplificar como é que a gente cria Ah um relacionamento no modelo lógico e na tabela de turmas a chave primária é o código da turma e a chave estrangeira é o código do curso opcionalmente você também pode
grifar aqui a chave primária nas tabelas para mostrar que são atributos determinantes mas a coluna que tem as letras PK já indica isso certo e aí para criar o modelo lógico completo é só você extrapolar essa ideia para todas as entidades relacionamentos e atributos que a gente tem lá no modelo conceitual tá é um pouco trabalhoso legal mas fica bem completinho e bastante útil para depois a gente poder fazer a normalização e enfim fazer a implementação do nosso banco de dados bom então vamos ver como é que fica isso aqui eu vou utilizar o BR
modelo que eu já utilizei anteriormente para mostrar como é que a gente faz o modelo conceitual pra gente fazer o modelo lógico aqui no BR modelo aqui em cima na na barra de ferramentas a gente tem a esse botãozinho C para criar um modelo conceitual e o botãozinho L para criar um novo modelo lógico clicando no botãozinho L você vai ter uma tela em branco e aqui você tem as tabelas os relacionamentos e os campos três tipos de Campos básicos Campo comum chave estrangeira e chave primária e aí a gente cria da seguinte forma Olha
que legal clica aqui na tabela põe uma tabelinha clica aqui coloca a segunda tabelinha aí você clica na tabela e vem aqui no canto superior direito e d um nome para ela exemplo vamos chamar essa tabela de turma e depois na outra tabela curso Beleza agora a gente precisa pôr os campos nessas tabelas então na tabela de turma a gente vai ter uma chave primária eu venho aqui clico em criar campo de chave primária e acrescento o primeiro campo cujo nome aqui em cima vai ser C turma Opa o t aqui é maiúsculo beleza veja
que ele tem um tipo de dado S sendo mostrado aqui tá Ah aqui no esquema a gente tá vendo que ele é uma chave primária sim é chave estrangeira não e o tipo tipo é obrigatório ele tá como número quatro posições beleza para esse código de turma tá bom esse esquema ah a gente vai acrescentar algumas outras informações também se a gente olhar aqui só para relembrar tem um monte de Campos para turma eu não vou colocar todos para não estender muito o vídeo ok A ideia é mesma para todos mas falta a gente colocar
no mínimo o código do curso para poder fazer o relacionamento com a tabela de curso tá e eu vou colocar também só para Conar o período e o número de alunos então voltando aqui a gente vai colocar a um campo comum que vai ser o período aí você vem aqui em cima e escreve período e um outro Campo comum só clicar aqui embaixo tá que vai ser o número de alunos número underline alunos veja que o período tá como numérico mas na verdade ele é caracter então a gente pode vir aqui e escrever caractere abro
o parêntese e coloco o número de caracteres máximos que vão caber nesse Campo por exemplo 20 caracteres e fecho parêntese depois clicando aqui na entidade eu posso clicar nesses quadradinhos nas laterais para arrastar e ampliar um pouquinho o tamanho da do quadro naé tabelinha para você poder ler todo o texto que tá ali dentro muito bom e ficou faltando então a chave estrangeira a chave estrangeira é essa aqui ó criar Campo chave estrangeira vai ser o código do curso Então a gente vem aqui e escreve C curso beleza é número também certo criamos uma tabelinha
aqui no noso modelo lógico na tabela de curso a gente faz a mesma coisa campo de chave primária que eu vou chamar de C curso beleza numérico e um campo comum com o nome do curso Então venho aqui e o nome desse Campo é nome curso beleza E esse cara aqui ele é caracter caracter 20 posições também vamos supor beleza e aí a gente amplia um pouquinho Tranquilo então tá aqui as duas tabelinhas agora A gente precisa relacionar as duas tabelas então eu C na linha de criar relacionamento clico em turma clico em curso e
aparece um relacionamento certo tem as cardinalidades desse relacionamento aqui tá a gente tem que colocar as cardinalidades também olhando aqui olha só zer para n e um para um então a gente vem aqui esse primeiro cara é zer para n mínimo zero máximo n e esse é um para um e a gente também pode alinhar aqui para ficar mais bonitinho beleza e volta só uma coisinha agora na tabela de turma eu queria uma chave estrangeira código curso mas eu não disse com quem essa chave tá conectada então eu vou selecionar de novo códig curso venho
aqui nas informações sobre o campo onde tá escrito chave estrangeira assim porque eu queria como campo de chave estrangeira tipo obrigatório e aqui olha só tabela de origem já aparece ali as tabelas nome curso de Turma no caso ela é a tabela nome curso a tabela de origem e o campo de origem lá em nome curso é o có curso veja que ele já traz a chave primária pra gente beleza agora sim tá temas outras coisas que a gente pode trabalhar os on update on delete né Tem umas Ah Umas opções como no Action restrict
set só que isso aqui é lá do SQL a gente vai ver mais pra frente do que se trata isso na hora de criar as tabelas fisicamente usando SQL Tranquilo então a gente assim a gente fez criou o relacionamento entre duas entidades no modelo lógico E aí é extrapolar isso para todas as entidades que a gente tem no nosso projeto Claro que eu não vou fazer isso agora porque vocês viram que demorou para fazer essas duas que são simples senão a gente vai ficar um tempão aqui na verdade eu já fiz isso tudo então se
você olhar com atenção eu tenho aqui já A modelagem completa Então esse aqui é o nosso modelo lógico baseado naquele nosso modelo conceitual que eu acabei de mostrar no comecinho do do vídeo já incluindo a nova tabelinha aluno disciplina tá que é uma tabela associativa que que a gente deixou para colocar depois certo E aí qual que é a sua atividade Agora você que tá estudando aí acompanhando esse curso sua atividade é pegar o modelo conceitual que a gente já tem que você já fez e criar este modelo Lógico tá crie esse modelo lógico a
partir daquele modelo conceitual você mesmo eh só para finalizar você vai lembrar que nesse modelo na tabela de disciplina a gente tem um um auto relacionamento código de disciplina com o código de disciplina porque uma disciplina pode depender de outra disciplina para ser cursada nesse caso a representação pode ser feita com uma linha conectando a tabela a si própria ou aqui no BR modelo a gente cria uma tabelinha Extra que eu chamei de depende e coloca o código da disciplina que é a chave primária daqui embaixo eu coloquei possui código da disciplina Também nenhuma das
duas é chave primária porque isso aqui é só para indicar que o código da disciplina possui o código de outra disciplina ele pode possuir o código de outra disciplina ou seja uma disciplina ela pode depender da existência de uma uma disciplina prévia ou não então o aluno para cursar cálculo dois tem que ter cursado o cálculo um por exemplo tá só para lembrar como é que a gente faz isso aqui nesse modelo certinho então é isso aí pessoal ã nesse vídeo eu mostrei como é que a gente pode criar o modelo lógico pro nosso banco
de dados que é muito importante porque ele já vem nesse formato de tabelinha e a partir daqui a gente vai poder fazer a normalização dos dados porque ainda tem coisa pra gente alterar aqui e refinar e só então poder criar o banco de dados implementado para valer certinho bom é isso então ah antes que eu me esqueça esse programa BR modelo Na verdade ele permite gerar esse modelo lógico automaticamente a partir do modelo conceitual então se você tiver no no esquema conceitual você tem a opção gerar esquema lógico e se você tiver no esquema lógico
tem a opção gerar esquema físico posteriormente que é gerar o SQL da brincadeira tá mas na prática não não fica perfeito então eu preferi fazer manualmente mesmo mostrar isso aqui do jeito que eu quero que seja para não ter que ficar eh olhando tabela por tabela e corrigindo pequenos probleminhas que porventura sujam Mas se você quiser fazer dessa forma né a partir do esquema conceitual gerar direto esquema lógico e depois olhar a tabela tabela e arrumando fica à vontade também dá para fazer a gente tá agora na fase da normalização dividida em três etapas primeira
segunda e terceira formas normais se necessário for a gente vai avançar em outras formas normais tá ã já vimos o levantamento de requisitos identificamos as entidades relacionamentos e atributos criamos os diagramas entidad de relacionamento com cardinalidades fizemos o dicionário de dados e o modelo lógico então Então vamos para a etapa da normalização o vídeo passado a gente parou aqui modelo lógico completo Antes da normalização e a gente vai usar como base esse modelo lógico para fazer a análise das tabelas que estão compondo até o momento o nosso banco de dados Então a gente tem aqui
várias tabelas a gente vai aplicar a normalização em cima de cada uma delas então eu vou analisar cada uma delas separadamente na sequência então sem mais delongas vamos lá normalizando as tabelas primeira forma normal revendo que que é a primeira forma normal então uma tabela ela vai estar na primeira forma normal quando existir uma chave primária então se a tabela não tem a chave primária ela não está na primeira forma normal somente possuir valores atômicos valores indivisíveis a tabela ou relação não possuir atributos que sejam multivalorados ou ainda relações alinhadas ou seja tabelas dentro de
tabelas e a relação também não pode possuir atributos compostos tá se a relação tiver atributo multivalorado composto ou valores que não sejam atômicos a gente vai ter que trabalhar em cima da tabela para Pod levá-la à primeira forma normal Então a gente vai comear fazendo análise das tabelas que a gente tem no Banco aquele modelo Lógico que vocês viram eu já passei a cada uma das tabelas separadamente aqui pr pra apresentação uma em cada slide a gente vai fazer a análise de cada uma delas separadamente algumas tabelas são muito simples por exemplo a tabela departamento
ela só tem dois Campos n o código do departamento e o nome do departamento tipo numérico E caracter então lembrando a gente só pode ter valores atômicos não podemos ter atributos compostos nem tão pouco multivalorados e tem que existir uma chave primária Então a gente vai aplicar esses critérios em cada tabela para determinar se ela está ou não na primeira forma normal no caso da tabela departamento ela tem uma chave primária código do departamento o campo código do departamento ele é um valor atômico é apenas um único número não é multivalorado porque um departamento não
tem vários vários códigos também não é composto e a mesma coisa se dá com o nome do departamento o nome é único para cada departamento você não vai ter vários nomes distintos para esses nomes Portanto ele não é multivalorado e também não é composto tá então a tabela departamento a gente pode dizer que está já na primeira forma normal ela já passou esse teste da primeira forma normal então nessa tabela a gente não precisa mexer por enquanto depois nas próximas fases da normalização algumas coisas podem mudar aqui também vamos para a próxima tabela tabela Professor
bom ela tem uma chave primária a gente tem aqui indicada código do professor Beleza o código do professor ele é único para cada professor ou seja não é um atributo composto nem multivalorado o mesmo se dá para o nome e para o sobrenome do professor tá E aqui tem que tomar cuidado para não confundir as coisas o professor ele pode ter um sobrenome composto por várias palavras né Por exemplo ele pode se chamar ã José Manuel Xavier dias vamos supor Então são várias palavras mas na verdade todas elas ã remetem a um único sobrenome não
são vários sobrenomes e a ideia do atributo multivalorado é ter V Vários valores diferentes referindo-se a aquele Campo tá então um sobrenome com várias palavras continua sendo um único sobrenome então ele não é um atributo multivalorado é um atributo simples Beleza o status do professor que é do tipo buan ele também não é um atributo composto nem tampouco multivalorado é um valor atômico ele vai ser simplesmente sim ou não verdadeiro ou falso n o professor Está ou não está com turmas alocadas e o código do departamento também é só um número no caso vai ser
uma chave estrangeira ã o professor não nesse nosso caso aqui né no nosso projeto Ele só pode fazer parte de um único departamento então aqui pros nossos requisitos esse código do departamento nessa tabela é um atributo atômico em outros casos n poderíamos ter ã por exemplo um professor fazendo parte de dois departamentos aí a gente teria um atributo multivalorado e teríamos de trabalhar em cima dessa tabela mas não é o caso do nosso projeto Então essa tabela professora ela já está na primeira forma Normal também tá a gente vai manter essa tabela assim por enquanto
próxima tabela tabela de turma ela tem a chave primária Beleza o código da turma é um valor atômico e não se repete o código do curso é um valor atômico o período da turma bom a turma ela pode estar e ocorrendo de manhã Tarde ou noite e veja a palavra-chave ou a conjunção ou diz e que a turma ela só pode ocorrer em um dos períodos ela não ocorre em mais de um período ao mesmo tempo então o período é um só atributo simples valor atômico no caso número de alunos é um valor numérico comum
né que vai atribuir a quantidade de alunos da turma data de início e data de fim também simplesmente um valor que vai indicar quando começa e quando termina a turma aqui tem que ficar um pouco esperto também porque a data Ela poderia Teoricamente ser desmembrada em dia mês e ano só que para todos os efeitos aqui a gente vai colocar a data como um valor único a gente entra com a data completa no único campo e acabou existem tipos de dados específicos lá na implementação do banco de dados que permite a gente fazer isso então
a gente pode deixar as datas tanto de início quanto de fim sendo consideradas como valores atômicos então a tabela de turmas também já está na primeira forma normal muito bom então a gente prossegue tabela de curso geralmente quando a tabela tem poucos Campos é bem mais fácil bem mais provável que ela já esteja na primeira forma normal é o que vai acontecer com essa tabela também ela tem uma chave primária código do curso que é um valor atômico A Chave estrangeira código do departamento também é um valor atômico e o nome do curso também é
um valor atômico não é multivalorado um curso não tem dois nomes e nem o nome dele é composto por várias partes distintas tá cada curso tem o seu nome específico mesmo que o nome do curso seja composto por mais de uma palavra tá por exemplo curso análise de sistemas são três palavras mas o nome do curso é um só análise de sistemas não tem dois nomes diferentes a gente não chama o curso de análise de sistemas ou de processamento de dados por exemplo tá então aqui também é um valor atômico maravilha por enquanto não tivemos
de fazer nenhuma modificação no nas tabelas tabela aluno bom essa tabela é grandona ela tem um monte de Campos e tabelas grandes tem maior probabilidade de de a gente encontrar alguma anomalia ter que arrumar então Eh vamos analisar essa tabela com mais cuidado ela tem a chave primária Então esse teste passou tranquilo é o ra do tipo numérico temos o nome do aluno também é um atributo simples valor atômico sobrenome do aluno atributo simples valor atômico mesmo esquema do nome e sobrenome do professor nome da rua é também um atributo simples aliás nós temos aqui
nome da rua número da rua e CP esses três atributos juntos lá no comecinho do projeto eles compunham o endereço do aluno e o endereço é um atributo composto se a gente tivesse mantido o endereço até agora ao chegar nesse ponto teríamos de desmembrar esse endereço aí a gente ia criar nome da rua número da rua isep não vai ser necessário fazer isso porque nós já fizemos isso numa etapa anterior então sempre que você detectar esse tipo de de dado de atributo quando você tiver começando a modelar o banco você já pode desmembrar logo de
cara para quando chegar na normalização você ter menos trabalho para realizar então esse trabalho já foi realizado foi normalizado anteriormente por assim dizer o status bullan o aluno tá matriculado ou não tá tá ã depois vem afiliação e a afiliação apresenta um problema tá o que que é afiliação afiliação diz de quem esse aluno é filho só que geralmente o aluno é filho de um pai e de uma mãe mesmo que eles não sejam vivos mas lá nos documentos do aluno deve ter o nome do pai e da mãe pra maioria dos alunos Vai Ter
ambos então aqui a gente tem um atributo que é multivalorado ele vai ter o nome do pai e o da mãe e esse cara a gente vai ter que desmembrar a gente pode por exemplo criar dois Campos aqui na tabela nome do pai e nome da mãe tá ã para que que a gente consiga eliminar esse problema a gente vai fazer isso em breve então a gente encontrou aqui um probleminha na tabela de aluno para deixar el na primeira forma normal vamos ter que eliminar o campo filiação e criar os campos nome do pai e
nome da mãe tranquilo vamos continuar sexo também é um atributo simples tá só um valor pro sexo não importa qual seja contato o contato também é problemático Ele também é um atributo que pode ser considerado multivalorado por quê Porque o contato pode ser por e-mail pode ser por telefone pode ser por WhatsApp tá então el pode ser feito de várias formas distintas como é que a gente vai armazenar essa informação tá então o contato vai ter de ser desmembrado no mínimo a gente vai colocar por exemplo e-mail e WhatsApp telefone eu não vou colocar aqui
por qu porque a gente tem o Campo telefone já do qual a gente vai falar já já então contato é outro Campo outro atributo que a gente vai ter que trabalhar na tabela de aluno prosseguir CPF tranquilo valor atômico código do curso e código da turma são valores atômicos também não tem problema aqui ã inclusive são Chaves estrangeiras e o telefone lá no final Ah também é um atributo multivalorado porque o aluno pode ter mais de um telefone Claro que isso aqui vai depender muito do requisito do do seu banco tá porque se na hora
de de criar os requisitos se eu disser só vamos registrar um único telefone Então nesse caso o telefone não é multivalorado a gente só vai colocar um telefone Mas se a gente der espaço para colocar mais de um telefone então ele passa ser um atributo multivalorado veja que a coisa não é engessada né vai depender muito do requisito do do negócio do seu cliente do que é necessário no banco então se a gente considerar o telefone como sendo um atributo multivalorado a gente precisa desmembrar por exemplo telefone residencial e telefone celular dá pra gente fazer
ISO tudo isso nessa mesma tabela sem a necessidade de criar uma outra tabela em algum alguns outros casos a gente precisa colocar os dados em outra tabela mas geralmente na primeira forma normal a gente consegue resolver dessa forma desmembrando os valores compostos e multivalorados tá E criando Campos adicionais se eles vão permanecer nessa tabela ou não aí as próximas formas normais é que vão ditar certo então a gente tem três probleminhas na tabela de aluno que a gente vai resolver daqui a pouco vamos prosseguir vai marcando aí tabela curso disciplina Essa é bem simples é
uma tabela associativa e é muito comum que as tabelas associativas estejam na primeira forma normal tá Elas têm essa tabela tem a chave primária composta inclusive com o código da disciplina e o código do curso dois valores atômicos aqui não tem nada a ser feito por enquanto tabela Professor disciplina mesma coisa a mesma coisa também uma tabela associativa que a gente criou aí anteriormente e ela também tem a chave primária e valores atômicos vamos prosseguir tabela de história bom a tabela de histórico tem a chave primária tranquilo e o código do histórico ele é um
valor atômico cada histórico tem o seu código o RA do aluno que é a chave estrangeira também é um valor atômico é apenas um único valor só vai ter um histórico para cada aluno tá período de realização aqui a gente tem um problema a palavra período ela denota a ideia de que você tem um início e um fim né É de uma data x até uma data Y portanto são duas datas duas datas são dois valores e a gente só tem um campo então a gente tem aqui um outro atributo que precisa ser desmembrado aqui
eu recomendo por exemplo a gente fazer e a criação de dois Campos né o atributo data de início e data de fim eliminando período de realização então a gente também vai ter que trabalhar na tabela de histórico a gente vai acrescentar esses campos tá então a gente tem a tabela de alunos e a tabela de histórico para trabalhar daqui a pouco a gente vai acrescentar os campos tabela de disciplina essa tem vários Campos hein vamos ver o que acontece com ela ela tem a chave primária beleza código da disciplina valor atômico código do departamento que
é a chave estrangeira valor atômico nome da disciplina cada disciplina tem um único nome e não é o nome composto então valor atômico descrição descrição vai ser um texto que descreve a disciplina uma frase tá por exemplo também é um valor atômico não importa Quantos caracteres tem ali tá então aqui a gente não vai ter problemas número de alunos só um número que indica a quantidade dos alunos também não tem problema e carga horário é o número de horas não é o horário no qual o curso ocorre né de hora tal até hora tal aí
teríamos um problema com esse atributo mas aqui na verdade é só a carga horária Quantas horas dura a disciplina 40 horas 80 horas 120 horas então também temos aqui um valor atômico sem problema algum vamos passar adiante tabela aluno disciplina mais uma tabela associativa tem sua chave primária e dois valores atômicos o RA do aluno e o código da disciplina também não tem problema nenhum nesta tabela bom então a gente ficou com valores com com problemas nas tabelas de alunos e histórico tá Ah faltou mais uma tabela aqui tabela na disciplina histórico ã que tem
a sua chave primária código histórico e código disciplina também são valores atômicos a nota é um número que mostra a nota final do aluno que é um valor atômico também toma cuidado Se eu quisesse registrar as notas de todas as avaliações dos alunos aí a gente teria problemas com esse campo mas aqui a nota média final o conceito final do aluno então valor atômico e a frequência também é um valor em porcentagem por exemplo que indica a porcentagem de assiduidade do aluno nas aulas então Sem problema nenhum aqui também então como eu tava dizendo a
gente teve problemas na tabela de alunos e de histórico e agora a gente vai lá no BR modelo recomet o nosso modelo Lógico tá acrescentando os campos que faltam e retirando os campos que a gente não vai utilizar Então vamos voltar aqui só pra gente relembrar ó na tabela de histórico a gente precisa trabalhar com esse cara aqui ó período de realização Então deixa eu abrir aqui o R modelo já está aqui Ah o nosso modelo lógico e eu vou aqui no histórico Olha só período de realização tá como data Isso vai virar data de
início e data de fim tá então a gente vai eliminar esse cara dou um delete e vou acrescentar aqui Opa mais um e mais outro canto dois Campos esse primeiro aqui eu vou nomear como data underline início certo tipo data e o outro campo eu vou nomear como data de fim ou finalização ou data final tanto faz tá E esse cara também é do tipo data olha aqui Beleza depois é só voltar naquelas tabelinhas e acrescentar essa informação que a gente vai fazer pro próximo vídeo tá pra parte dois que vai ser a segunda forma
normal então pr pra gente ter Aquelas mesmas tabelinhas e trabalhar na segunda forma normal a gente depois transporta esses dados para aquelas tabelinhas por enquanto eu vou deixar só no modelo lógico Então olha só histórico a gente consertou agora o histórico também está na primeira forma normal o outro elemento que a gente precisa alterar é aqui aqui na tabela de alunos ah os atributos filiação contato e o telefone então vamos lá cadê aluno a gente vai sumir com filiação apago o contato apago e o telefone tranquilo e aí eu vou acrescentar um campo esse campo
que a gente vai colocar como sendo nome do pai Ops nome do pai tipo dele é caracter vamos colocar caracter 50 porque aqui eu quero colocar o nome completo do pai não vou dividir em nome sobrenome vamos colocar o nome da mã nome da mãe Ops também caracter também 50 Beleza então eliminamos aquele problema do da afiliação agora a gente vai eliminar o problema do contato a gente vai acrescentar mais um campo e esse campo eu vou chamar de endereço de e-mail ou simplesmente e-mail tudo juntinho tipo dele também é caracter o e-mail eu vou
deixar como 50 também mais paraa frente a gente vai vai trabalhar um pouco melhor com esses tipos de dados no final da normalização e a gente também vai colocar o o campo WhatsApp Campo WhatsApp beleza esse aqui ele vai ser por exemplo caracter 20 certo caracter 20 depois a gente vai acertar direitinho os tamanhos exatos para cada tipo então resolvemos o campo de contato se precisássemos de mais informações de contato a gente poderia colocar mais alguns Campos E aí o telefone telefone a gente convencionou de utilizar Residencial e telefone celular então a gente vai acrescentar
um campo aqui embaixo que eu vou chamar de telefone ou Residencial esens tipo dele eu V vou usar caracter 11 vamos supor número do telefone mais o DDD e pro telefone celular a gente vai fazer a mesma coisa tel underline [Música] celular e aí a gente acrescenta também caracter 11 e acrescentamos assim assim a gente resolveu acrescentando esses dois Campos o problema aqui da da da primeira forma normal na tabela aluno e agora todas as tabelas do nosso banco estão na primeira forma normal legal conseguimos normalizar então todas as tabelas do nosso projeto até a
primeira FM Qual o próximo passo segunda forma normal esse passo a gente vai ver no próximo vídeo para não ficar extremamente estenso aqui a gente já se Estendeu bastante nesse vídeo mas acho que deu para ter uma boa ideia de como de como realizar a normalização primeira parte da normalização tranquilo pessoal E aí depois a gente passa esses dados aqui que a gente criou esses novos Campos lá para aquelas tabelinhas que eu usei na apresentação pra gente poder fazer a segunda forma normal após aplicarmos a primeira forma normal no nosso banco de dados nós obtivemos
este modelo Lógico que que está na primeira forma normal foi normalizado e que já possui os campos adicionados alguns Campos Novos que a gente teve que criar por exemplo pro histórico a gente teve que adicionar a data de início e data de fim e pro aluno a gente criou Campos como e-mail WhatsApp e fizemos uma divisão de telefone residencial e telefone celular tudo isso graças à primeira forma normal e agora a gente vai aplicar a segunda forma normal nessas tabelas do banco bom normalizando as tabelas segunda forma normal primeiramente uma pequena revisão rápida do que
é a segunda forma normal então quant que uma tabela está na segunda forma normal quando ela já está na primeira forma normal então é obrigatório que já tenha passado pela primeira etapa E quando todos os atributos não chave forem funcionalmente dependentes de todas as partes de uma chave primária caso ela seja composta então A ideia é a seguinte qualquer atributo da tabela que não seja uma chave primária estrangeira tem que ser dependente funcionalmente da chave primária se a chave primária for composta esses atributos não chave tem que ser dependentes de todas as partes da chave
composta portanto não podem existir dependências parciais e os atributos não podem depender de possíveis Chaves candidatas caso contrário se você anisar na análise das tabelas atributos que não sejam funcionalmente dependentes da chave primária você vai ter que gerar uma nova tabela e levar esses atributos para essa tabela tá será que a gente vai ter atributos desse tipo no nosso banco a gente vai descobrir já já então vamos lá como é que a gente vai fazer vou passar a tabela por tabela assim como eu fiz paraa primeira forma normal e a gente vai aplicar essas ideias
das dependências dos atributos para verificar se eles já estão ou não na segunda forma normal e a gente começa pela tabela departamento que é uma tabela bem simples só tem dois atributos código do departamento e nome do departamento e aqui tá bem claro né o nome do departamento depende do código do departamento e pronto não tem mais o que discutir nessa tabela Então essa tabela já está na segunda forma normal você vai perceber que muitas tabelas com poucos atributos geralmente estão na segunda forma normal então a tabela departamento fica como está tabela de professores bom
a chave primária aqui é código do professor Aí a gente faz a seguinte pergunta os atributos nome do professor sobrenomes e status dependem do código do professor Vamos às respostas o nome do professor depende do código do professor tá ele diz respeito ao mesmo professor e o sobrenome acompanhando o nome ele também depende do código do professor se eu mudo o código do professor eu mudo de professor portanto eu mudo nome e sobrenome e o status do professor bem depende do código do professor né saber se ele está dando aula ou não depende de eu
saber de qual Professor eu estou falando então o status é dependente do código do professor também Então nesse caso essa tabela já está na segunda forma normal veja que no caso a da do atributo código do departamento que é uma chave estrangeira não precisa aplicar essa análise a gente aplica simplesmente nos atributos não chave e não chave são esses três aqui apenas Então é isso bom então tabela professora está na segunda forma normal vamos para a próxima tabela tabela de turmas a chave primária é código da turma código do curso a gente não precisa analisar
vamos olhar o período número de alunos e as datas período depende do Código da turma ã sim depende tá Se eu te disser período da manhã esse período da amanhã de qual turma então eu preciso associar o período com a turma para saber do que eu estou falando e o número de alunos também depende da turma Se eu disser 30 alunos mas 30 alunos de qual turma data de início mesma ideia data de início de qual turma ou data de fim data de fim de qual turma e como é que eu identifico a turma a
partir do Código da turma que é a chave primária dessa tabela Então essa tabela pode ser considerada também na segunda forma normal muito bom vamos para a próxima então tabela de curso isso é bem simples código do curso é a chave primária código do departamento a chave estrangeira e sobra o nome do curso como Campo não chave e aí a pergunta é nome do curso eh tem a ver com o código do curso sim nome do curso depende do código do curso se eu mudo o código do curso muda o nome do curso tá essa
é a ideia que você tem que tem que aplicar nas tabelas para determinar se existe essa dependência ou não Então essa tabela também está na segunda forma normal olha que legal tabela de alunos Opa essa tabela é grandona tem um monte de Campos então aqui existe uma probabilidade maior da gente encontrar Campos que não deveriam estar aí vamos fazer a análise ah a chave primária dessa tabela é o RA do aluno Então a gente tem que encontrar Campos que não sejam dependentes do RA do aluno tá se a gente não encontrar nenhum Campo que não
seja dependente do Ra ã essa tabela estará na segunda forma normal quer dizer que não seja dependente que também não dependam de outros Campos Então vamos lá nome e sobrenome do aluno estão atrelados ao RA do aluno mudou o ra muda o nome o sobrenome nome da rua número da rua e c Opa aqui a gente tem um problema o nome da rua não necessariamente tá atrelado ao ra de um aluno tá por porque numa rua podem morar vários alunos diferentes e se a gente muda o ra necessariamente muda o nome da rua porque eu
posso ter um outro aluno com outro ra que more na mesma rua então na prática o nome da rua não é dependente direto do RA do aluno da mesma forma o número da rua e o CP seguem a mesma ideia então a gente tem aqui três atributos que já identificamos que fazem com que essa tabela de alunos não esteja na segunda forma normal a gente vai ter que tratar esses atributos Guarda aí nome da rua número e CP vamos prosseguir olhando os próximos o status do aluno se ele tá matriculado ou não depende do aluno
Óbvio nome do pai e nome da mãe depende do aluno sexo depende do aluno o e-mail o e-mail é o endereço de identificação pessoal do aluno então ele também depende do aluno assim como o seu WhatsApp que a gente optou por colocar aqui na tabela então o WhatsApp ele é pessoal do aluno também e o CPF Sem dúvida depende do Ra né são são dois valores que estão intrinsicamente ligados Aliás a gente até pensou no começo da criação das tabelas em usar o CPF como chave primária nessa tabela depois a gente optou por usar o
ra então o CPF certamente depende do Ra código do curso e da turma A gente não precisa analisar e os telefones Residencial e celular aqui a gente também tem um problema o telefone depende exclusivamente do Ra depende tá o telefone celular talvez Mas e o e o residencial dentro de uma residência eu posso ter um telefone mas posso ter várias pessoas que usam aquele mesmo telefone então a ideia de alterar o ra e você ter um telefone diferente nem sempre vai ser verdade então a gente encontrou aqui mais campos problemáticos pra segunda forma normal e
que eventualmente vão ficar melhores se a gente colocar em outra tabela agora note o seguinte normalização não é algo obrigatório eventualmente Se eu quisesse deixar esses telefones aí e os nomes das duas números eu poderia também só que eu teria uma tabela um pouco mais complexa e talvez com uma performance menor ou com algum problema na hora de gravar dados ou alterar ou excluir tá mas ninguém pode me obrigar a tirar esses campos daqui porque isso não é de fato obrigatório Mas é uma melhor prática então a normalização é importante para isso para que você
obtenha as melhores tabelas possíveis no seu banco de dados tá Então nesse caso do telefone é recomendável que a gente tire os telefones daqui e os coloquemos em outra tabela Então guarda essa informação também telefone residencial e celular a gente vai ter que tratar daqui a pouco a tabela de alunos Tranquilo então vamos passar para as próximas tabelas curso disciplina tá muito fácil é uma tabela associativa e ela sequer tem atributos não chave então não tem nem o que olhar nessa tabela segundo a forma normal Prof disciplina também não tem atributos não chave segundo a
forma normal tabela de histórico a chave primária é o código de histórico ra é uma chave estrangeira aí fica a data de início e data final a a pergunta é as datas elas dependem do código do histórico sim se eu mudo histórico mudam as datas tá porque depende se o aluno entrou no meio do ano no começo do ano Em qual ano ele entrou em qual semestre Então as datas estão atreladas ao histórico em particular então tanto início quanto data final são dependentes funcionais do código do vamos mantê-los aí está na segunda forma normal tabela
de disciplinas essa tem alguns Campos a mais vamos ver código da disciplina é a chave primária código do departamento é chave estrangeira nome da disciplina depende do Código da disciplina Sem dúvida nome e código estão sempre bastante próximos e a descrição também depende porque a descrição tem a ver com a disciplina número de alunos quantidade de alunos que disciplina possui depende da disciplina quantos alunos tem a disciplina X tem Y alunos e a carga horária também vai depender da disciplina algumas disciplinas tem carga horária menor e outras é maior então a carga horária Depende de
qual disciplina a gente tá falando tá se eu mudo o código da disciplina eventualmente muda a carga horário número de alunos etc Então nesse caso a gente pode deixar nessa tabela esses campos também descrição nome disciplina número de alunos e carga horária Então segunda forma normal aqui aluno disciplina tabela associativa tá aí segunda forma normal disciplina histórico Ah temos uma chave primária composta aqui código de histórico e código da disciplina juntos Olha que interessante aí a pergunta é a nota e a frequência que são os campos não chave dependem da chave primária na sua íntegra
ou não então anota depende do histórico depende se eu quiser saber uma nota eu preciso saber de qual histórico a gente tá falando mas não só do histórico eu preciso saber de qual disciplina eu tô falando então a nota depende dos dois Campos simultaneamente da disciplina e do histórico se eu perguntar qual é a nota de matemática mas de matemática de quem de qual histórico tá ou então qual é a nota do histórico do Joãozinho sim a nota do histórico mas de qual disciplina Então eu preciso das duas informações para identificar a nota e para
frequência A ideia é a mesma ela vai depender também de qual histórico e de qual disciplina a gente tá falando ao mesmo tempo Então nesse caso aqui também estamos na segunda forma normal e os dois Campos não chave dependem integralmente da chave primária composta que é a definição básica da segunda forma normal então aqui não temos problema segunda forma normal agora vamos lá resolver os probleminhas da nossa tabela de alunos já que a gente olhou todas as tabelas do banco nós tivemos problemas com telefone e com endereço e aí para resolver ess esses problemas eu
recomendo fazer o seguinte pros telefones a gente vai criar uma tabela extra para armazenar os telefones e eu vou chamar essa tabela de telefones aluno pode chamar do que você quiser nessa tabela eu vou colocar uma uma chave primária que eu chamei de código telefones aluno eu vou ter também e uma chave estrangeira que vai ser o RA do aluno que é para poder vincular o telefone com o aluno vou ter o n do telefone óbvio que é o mais importante e também vou ter uma outra chave estrangeira que eu chamei de código do tipo
do telefone por quê Porque eu resolvi criar uma outra tabela ainda separada para armazenar os tipos possíveis de telefones telefone pode ser comercial pode ser Residencial pode ser o telefone da Escola telefone de recados pode ser fixo pode ser telefone celular tá e pode ser até algum outro tipo de telefone que não inventaram ainda mas a minha tabela ela vai ser capaz de armazenar esse tipo por quê Porque eu tenho uma tabela específica só para isso cuja chave primária é código do tipo de telefone e o campo não chave é tipo do telefone onde a
gente vai poder escrever por extenso o nome desse tipo e depois via chave estrangeira puxar ele para cá pra tabela de telefones aluno assim eu consigo preencher os telefones dos alunos e mais do que isso o aluno vai poder ter quantos telefones ele quiser tá se ele tiver 10 telefones com esse esquema a gente consegue cadastrar os 10 telefones dos alunos na nas suas tabelas respectivas então isso aqui resolve o problema da segunda forma normal pros telefones dos alunos tá E lá na tabela de alunos obviamente a gente tem que eliminar os campos de telefones
as tabelas vão ficar vinculadas pelo RA do aluno que aqui é uma chave estrangeira muito bom bom e vamos resolver então o problema dos endereços pros endereços Eu fiz algo parecido criei uma tabela chamada endereço aluno e também criei uma outra tabelinha chamada tipo de l our que não é obrigatório poderia deixar assim essa tabelinha mas eu dei uma incrementada aqui na tabela de endereço aluno eu coloquei código de endereço aluno com uma chave primária quase uma chave surrogata isso aqui eu vinculo essa tabela com a tabela de alunos via ra e também com a
tabela de tipo de logradouro via código do tipo do logradouro que que é o tipo do logradouro se o cara mora numa avenida numa rua numa Alameda num beco tá não importa o tipo de endereço do cara a gente tem esse tipo de endereço armazenado E aí eu venho com os campos não chave nome da rua número coloquei um complemento caso a pessoa mole num apartamento por exemplo apartamento 38b e o CP aqui a gente não tem nome da cidade nome da cidade bairro eh estado país esse tipo de informação se tivéssemos era só acrescentar
aqui e provavelmente criar uma outra tabelinha do lado para colocar listas de cidades estados países etc como é muito comum você já deve ter se cadastrado em algum em algum site na internet preenchendo um formulário e você clica num no menuzinho e Abre ali com todos os nomes de cidades de estados etc tá e a gente pode fazer isso também mas não foi pedido aqui nesse nesse projeto então não coloquei tranquilo e o endereço do aluno via código do tipo de logrador tá ligado com essa outra tabela E assim a gente elimina esse problema da
tabela de alunos e colocamos a tabela de alunos na segunda forma normal tá e a tabela de alunos vai ficar portanto desta forma ficou um pouco mais simplificada vai ter os campos de ra nome sobrenome status nome do pai nome da mãe sexo e-mail WhatsApp e o CPF e as duas Chaves estrangeiras vinculando o aluno com o curso e com a turma tranquilo veja que ficaram apenas dados que são realmente pessoais do aluno dados que estão relacionados diretamente com o aluno em si e com aquele único aluno tá E assim a tabela de alunos está
na segunda forma normal assim como todas as outras tabelas do nosso banco portanto finalizamos a normalização na segunda forma normal e aí a gente pode ver o modelo lógico completo que está aqui no BR modelo deixa eu puxar aqui pra gente enxergar Olha que beleza esse aqui é o modelo lógico completo eu acrescentei já essas tabelas novas que a gente criou elas estão aqui embaixo tabela de alunos diminuiu um pouquinho como você pode ver e nós temos as tabelas telefone aluno tipo do telefone endereço aluno e tipo do lograd duro e também colocamos as cardinalidades
que é importante tá as cardinalidades que você tá vendo aqui um aluno pode ter um único endereço mas o endereço pode ter mais de um aluno por exemplo irmãos que estudam na mesma faculdade um aluno pode ter zero ou ou um ou mais telefones aqui na verdade em vezes de z01 seria zeren tá tem um errinho aqui e o telefone Ele pode pertencer a um ou mais alunos por exemplo um telefone residencial ou até mesmo um comercial dois alunos que trabalhem na mesma empresa tá e assim por diante tranquilo depois a gente vai dar uma
corrigida nisso aqui e no próximo vídeo a gente vai dar mais um passo na normalização Chegamos na segunda forma normal no próximo vídeo a gente vai aplicar a normalização até a terceira forma normal porque é bem provável que ainda haja problemas aqui pra gente resolver por exemplo esses problemas de cardinalidades que a gente viu aqui tá Isso a gente vai deixar paraa terceira forma Normal beleza pessoal então foi aqui que a gente parou no último vídeo tá nesse modelo Lógico ele já está completo já na segunda forma normal com as tabelinhas que foram criadas novas
adicionadas por exemplo endereço aluno e tipo de logradouro se você tá na dúvida não lembra muito bem o que foi feito ã ou não lembra como que é a estrutura do nosso banco de dados até o momento você pode dar um pause no vídeo nesse momento e dar uma estudada rápida Ah nesse modelo Lógico tá E aí a gente vai prosseguir agora aplicando a terceira forma normal Então vamos lá deixa avançar aqui normalizando as tabelas terceira forma normal primeiro uma pequena revisão sobre o que é a terceira forma normal então quando é que uma tabela
está na terceira forma normal ela vai estar na 3fn se ela já estiver na segundo a forma normal é um pré-requisito e não existirem dependências transitivas tá então o que que é uma dependência transitiva é uma dependência funcional entre dois ou mais atributos não chave então qualquer atributo que não seja um atributo chave da tabela ele não pode depender de outro atributo que também não seja chave ele tem que depender apenas Então somente dos atributos chave da tabela se aparecer um atributo Ah nesse sentido a gente sabe que a tabela não está na terceira forma
normal então ela vai estar na terceira forma normal se ela estiver na segunda forma normal e se nenhuma coluna não chave depender de outra coluna não chave se isso acontecer a gente precisa gerar uma nova tabela tá basicamente a gente vai verificar se os atributos não chave dependem de outros atributos não chave é isso e como é que a gente resolve a terceira forma normal se aparecerem atributos nesse nesse desse tipo então para cada atributo ou grupo de atributos que não são chave e que forem determinantes na relação a gente cria uma nova tabela tá
esse atributo vai ser a chave primária na nova relação a gente vai mover todos os atributos que são dependentes funcionalmente do atributo chave né que agora passou a ser chave e esse atributo é nova relação obviamente fica na tabela original pra gente poder fazer o relacionamento entre elas ele vai servir como chave estrangeira para associar as duas tabelas tá essa é a ideia básica da terceira forma normal que a gente já viu no vídeo de teoria bom dito isto agora a gente vai analisar uma por uma todas as tabelas que nós temos até o momento
no nosso banco de dados e verificar se elas já estão na terceira forma normal ou não o nosso banco aqui eles está bem simples e é possível que não seja necessário aplicar as regras da terceira formaa normal como a gente vai ver tá mas vamos analisar uma por uma pra gente aprender como é que se faz primeiro tabela departamento a gente só tem dois Campos o código e o nome do departamento como a gente só tem um campo não chave é impossível que esse campo não chave dependa de outro não chave porque não existe outro
Campo não chave então obviamente não tem como aplicar regra de tabela de terceira forma normal nessa tabela ela já está na terceira forma Normal beleza é só só passar adiante tabela Professor essa tem vários atributos não chave que são nome do professor sobrenome do professor e o status o código do departamento é uma chave chave estrangeira não entra nessa nessa jogada então a gente só tem que analisar se o nome sobrenome e status dependem um do outro aí a pergunta é a seguinte o status depende do nome do professor Claro que não depende do sobrenome
do professor não se eu elimino um nome de professor o status desaparece não desaparece os status Eles continuam existindo se eu elimino o nome do professor o sobrenome desaparece também não eu posso ter vários professores na minha tabela com o mesmo sobrenome e vice-versa se eu eliminar um sobrenome o nome desaparece também não eu posso ter vários professores com o mesmo nome então esses atributos não dependem diretamente uns dos outros eles dependem do código do professor o código do professor sim é que diz quem é exatamente aquele professor e qual status dele porque junto o
nome sobrenome mais o status Então essa tabela já está na terceira forma normal não tem nada para ser feito nela tá e a gente prossegue pra próxima tabela tabela turma também temos quatro atributos chave período número de alunos data de início e data de fim que também é simples a data de fim depende da data de início não não depende não dá para saber quando termina Ah o curso sabendo quando ele inicia se não sei qual Qual é a turma tem turmas que tem um curso mais alongado do que outras então a data de fim
não depende diretamente da data de início e vice-versa e Ambos não dependem do número de alunos posso ter mais ou menos alunos que isso não influencia nas datas de início e fim dos cursos e também não dependem do período tanto faz o período manhã Tarde ou noite as datas de início e fim não são afetadas por isso tão pouco o número de alunos assim como o período também não depende de número de alunos nem das datas de início Enfim tudo isso depende única e exclusivamente do Código da turma é o código da turma que vai
determinar qual é o período quantos alunos eu tenho quando comece quando termina aquele curso mas precisamente aquela turma em particular Então essa tabela também não tem nada para ser feito já está na terceira forma normal adiante tabela curso cai no caso da primeira tabela que a gente estudou só tem um atributo que não é chave então não tem como ele ser e como ele depender de outro atributo não chave então já está na terceira forma Normal também avancemos tabela de aluno essa tabela que deu problema pra gente na segunda forma normal porque ela tem muitos
Campos que a gente tem que descobrir se um desses Campos não chave que são todos os campos exceto o ra código do curso e código da turma se eles dependem uns dos outros e não é difícil é só fazer as perguntas entre os campos uns com os outros por exemplo sobrenome do aluno depende do nome do aluno não o cidadão pode se chamar Renato Vieira ou Renato dos Santos ou Renato marqu tanto faz né o sobrenome não depende do nome do aluno eu posso ter vários nomes diferentes com o mesmo sobrenome ou vice--versa né vários
sobrenomes pro mesmo nome então sobrenome não depende do nome do aluno nem o nome do aluno depende do sobrenome o status também não depende de nome nem de sobrenome nome do pai da mãe também não dependem nem de nome nem de sobrenome nem de status se eu mudo o nome de um aluno não necessariamente vai mudar o nome do pai tá ou o nome da mãe então eles não dependem desses atributos sexo depende do nome do aluno também não depende tá o e-mail não depende do nome do aluno se o aluno se chama Marcos o
e-mail depende da palavra Marcos do nome Marcos não o e-mail pode ser totalmente independente do nome do aluno e o WhatsApp também não depende do nome nem do sobrenome nem do status nem do nome da mãe nem do nome do pai assim como o CPF Olha que aqui é um pouco mais problemático a gente costuma associar sempre o CPF por ser um documento único com o nome do aluno aquele aluno Só tem aquele CPF e eles estão amarrados entre si mas na tabela da forma como ela foi construída isso não acontece o CPF não depende
do nome do aluno eu posso ter por exemplo 30 alunos chamados e Ana na minha escola e cada uma tem seu CPF diferente mas todas TM o mesmo nome então o CPF não depende do nome em si ele vai depender de um conjunto de fatores E aqui nessa tabela o conjunto de fatores na verdade se resume ao campo ra é o ra que determina quem é o aluno Qual o cpf dele de quem é o e-mail qual o WhatsApp se eu mudo o ra todas essas informações mudam mas se eu mudo por exemplo só o
nome ou o sexo tá as informações permanecem as mesmas Então nesse caso a gente não tem também Campos que dependam uns dos outros diretamente ã todos os campos dependem única e exclusivamente da chave primária que é o ra e aí você pode até argumentar pera aí o CPF é problemático se eu mudo o CPF vai mudar o nome do aluno também não necessariamente eu posso ter 20 alunos com cpfs diferentes como eu acabei de citar e com o mesmo nome o que provavelmente eu não vou ter são 20 alunos com mesmo CPF com o mesmo
nome elás com cpfs diferentes mas com o mesmo nome sobrenome nome do pai e nome da mãe juntos tá ã só que isso tá contemplado a partir do Ra é o ra que manda nessa tabela então o CPF não depende de um outro Campo que não seja a chave portanto essa tabela também já está na terceira forma normal você vai perceber que conforme a gente vai avançando nas formas normais e a quantidade de anomalias vai diminuindo Você tem cada vez menos anomalias até o ponto que talvez não tenha nenhuma e a tabela já esteja na
forma normal adequada para você fazer a implementação do banco então na primeira forma normal a gente sempre encontra um monte de problemas na segunda forma normal encontramos vários problemas mais menos na terceira forma normal a gente costuma encontrar menos problemas ainda e às vezes nenhum problema como é o caso até agora então vamos avançar tabela curso disciplina essa sequer tem campo não chave então a gente não precisa se preocupar com ela Prof disciplina não precisamos nos pre com ela também não tem campo não chave tabela histórico tem dois Campos não chave data de início e
data de fim e recai naquele naquele naquela mesma questão que a gente já viu anteriormente data de fim Depende de data de início não necessariamente tá porque a gente não sabe quanto tempo dura esse curso Então não tem como dizer eu altero a data de início vai alterar a data de fim ou eu altero a data final Altera a data de início depende do curso quem manda aqui é o código do histórico tá se aério histórico aí sim eu vou ter início e fim diferentes porque isso depende de aluno para aluno do curso que cada
aluno fez Então nesse caso como e esses atributos não dependem uns dos outros e sim só da chave primária essa tabela também está na terceira forma normal então avançamos tabela de disciplinas aqui temos os campos não chave nome da disciplina a descrição número de alunos e a carga horária bom a carga horária não depende do nome da disciplina isso é Bem óbvio muito menos da descrição e tem absolutamente nada a ver com o número de alunos o número de alunos também não depende de carga horária não depende de descrição e também não depende do nome
da disciplina tá ã o nome da disciplina não depende da descrição não depende da quantidade de alunos e não depende da carga horária é Bem óbvio também já a descrição aparentemente ela pode depender do nome da disciplina não depende obviamente do número de alunos d na carga horária mas é um um pouquinho capciosa a descrição porque pode levar a gente a aquer que ela depende do nome da disciplina a descrição afinal de contas é da disciplina só que aqui é o seguinte eu posso ter uma disciplina com um nome cuja descrição varia de um lugar
para outro por exemplo se eu disser para você disciplina matemática qual a descrição dessa disciplina não dá para saber né não posso descrever essa disciplina só com base no nome dela tá não posso dizer que matemática é a disciplina na qual Vamos estudar Cálculo 1 2 e TR ou então logaritmos ou então funções porque isso depende muito do currículo da escola então a descrição não depende exatamente do nome da disciplina porque ela pode variar ela vai depender do Código da disciplina o código é único cada disciplina tem o seu código e vai determinar o que
vai ser ministrado nessa disciplina ã E aí é dado um nome para aquela disciplina então eu dou um nome para para uma disciplina de acordo com o código e aí eu escrevo uma descrição para esse código de disciplina então neste caso a gente não considera a descrição como sendo dependente do nome da disciplina mas tem que ficar muito esperto em alguns casos no mundo real poderia sim a descrição depender do nome da disciplina Depende de como você fez o arranjo da tabela nesse caso se eu altero o código da disciplina todas as informações são alteradas
incluindo a descrição tá agora se eu alterar os outros Campos da tabela eles não dependem uns dos outros entre si eles dependem apenas Então somente do Código da disciplina Então a gente vai considerar a descrição como dependente só do código e essa tabela assim dessa forma está na terceira forma Normal também e prosseguindo tabela aluno Disk não tem nenhum Campo não chave podemos passar adiante Disc histórico nota e frequência uma depende da outra a frequência não depende da nota não tem nada a ver uma coisa com a outra assim como a nota não depende da
frequência também então terceira forma normal telefones do aluno só tem um campo não chave então não tem como ter e problemas de terceira forma normal aqui ela já está na terceira forma Normal também tipo do telefone também só tem um campo então tabelas que só tem um campo não chave já estão na terceira forma normal é bem facinho de trabalhar com elas então avançando o endereço do aluno vamos lá que temos quatro Campos não chave o nome da rua número da rua complemento e o c CP Depende de complemento não depende de número de rua
também não depende do nome da rua Nem do nome da rua o CP depende porque eu posso ter várias ruas com o mesmo nome tá eu posso ter uma rua com um nome e outra rua com o mesmo nome em bairros diferentes os ses vão ser diferentes Não por conta do nome da rua assim como o complemento não depende do CP nem do número da rua e nem do nome da rua o número da rua também não depende de complemento nem de CP e nem do nome uma coisa não tem nada a ver com a
outra e o nome da rua em si não depende do número não depende de complemento e não depende do CP na prática o nome da rua poderia depender do CP sim se eu mudo o CP muda o nome da rua tá mas aqui no nosso banco de dados o nome da rua depende na prática do código do endereço do aluno a tá então o nome da rua a gente vai considerar também Como estando ã já normalizado e essa a tabela na terceira forma normal basicamente assim se eu tirar o CEP dessa tabela o nome da
rua desaparece não o nome da rua continua existindo então ele é independente do CEP portanto a gente ã percebe dessa forma que o nome da rua não depende do CEP olha como é é capcioso também esse caso é fácil a gente pensar que o nome da rua vai depender do CEP Porque se o mudar o CEP e muda o nome da rua mas a ideia aqui é a seguinte e se eu tirar o CEP da tabela o nome da rua continua existindo continua sendo válido continua fazendo sentido continua por quê Porque ele não depende do
CP para existir nessa tabela tá então essa tabela também já está na terceira forma normal e aqui cabe um adendo ã Professor Joaquim que é um um uma das pessoas que acompanham o curso que tá acompanhando o curso de modelagem aqui da boson ele deixou uma mensagem interessante ele o seguinte que seria interessante adicionar os campos cidade bairro e estado a essa tabela Porque como se trata de uma faculdade a gente pode ter alunos que são oriundos de outras cidades e de Estados da Federação sim eu concordo plenamente com ele a gente poderia sim colocar
cidade bairro e estado Eu só não coloquei para tentar manter isso aqui um pouco mais simples porque como você já deve ter percebido Tá bastante complexa a tabela bem grande então por isso eu não coloquei cidade bairro estado mas na prática sim podem ser colocados vão deixar a tabela bem mais completa e provavelmente para você colocar cidade bairro e estado você vai ter que criar uma tabela a parte tabela de cidades tabela de bairros talvez e tabela de estados para não ter que cadastrar manualmente essas informações sempre tá pode até ficar como lição de casa
para vocês tentar implementar ou reimplementado ah essa modelagem acrescentando esses campos cidade bairro estado nas tabelas apropriadas tá eu não vou acrescentar mas fica essa essa sugestão perfeitamente válida muito boa pro sinal PR você usar como exercício aí na sua modelagem Legal muito bom dito isto ficou faltando o tipo do logradouro tabela com apenas um campo não chave então já está na terceira forma Normal beleza então só Resumindo a gente passou por três etapas de normalização nessa tabela do projeto partimos das tabelas Não normalizadas removemos os atributos valorados e compostos para primeira forma normal removemos
as dependências parciais caímos na segunda forma normal e as dependências transitivas que nós não encontramos na verdade nas tabelas portanto essas tabelas já estão na terceira forma normal estão prontinhas para serem implementadas no banco de dados a gente poderia até eh ir mais adiante trabalhar com forma normal de boy cod por exemplo mas como na terceira forma forma normal a gente já não encontrou nenhum problema não é necessário ir mais adiante do que isso essas tabelas estão prontas para a implementação que vai ser o assunto da nossa próxima lição e no vídeo passado a gente
gerou esse modelo lógico modelo lógico completo na verdade não tem Basicamente nada para ajustar nesse modelo lógico a gente só vai passar esse cara para um dicionário de dados criar umas tabelinhas aqui na apresentação pra gente poder utilizar posteriormente para criar mesmo o banco de dados para valer banco de dados físico foram criadas a algumas entidades extras nos últimos vídeos ao longo da normalização algumas foram desmembradas a gente criou algumas entidades associativas também e agora a gente vai falar sobre o nosso amigo dicionário de dados nós já temos um dicionário de dados desse projeto um
dicionário simples que foi realizado ao longo do caminho só que é um dicionário intermediário agora a gente tem o dicionário final nesse dicionário eu vou abordar apenas as entidades e os atributos os relacionamentos a gente vai utilizar o próprio diagrama o modelo lógico para na hora de criar implementar esse banco de dados saber com quem as entidades se associam Apesar de que aqui no dicionário de dados a gente também tem uma descrição Então vamos dar uma olhada rápida nesse dicionário de dados a gente tem aqui ã as entidades foram criadas os relacionamentos dessas entidades cada
relacionamento tem um nome e a descrição para as entidades é isso que é disso que se trata um dicionário de dados então nós ficamos com uma entidade departamento que se relaciona com professor curso e disciplina uma entidade professor que se relaciona com departamento e com prof disciplina uma entidade associativa e uma entidade turma que se relaciona com curso e aluno cada entidade dessas vai gerar uma tabela no banco de dados tá que mais temos também as entidades curso e aluno curso que se relaciona com departamento turma aluno e Curso disciplina e o aluno que se
relaciona com curso turma aluno Disk de disciplina histórico e telefones aluno muito bom também temos a entidade disciplina importantíssima nesse banco que se relaciona Olha só com outras seis entidades com aluno disciplina departamento Prof disciplina curso disciplina disciplina em si e disciplina histórico Como assim entidade disciplina se relaciona com disciplina aqui existe um autorelacionamento um relacionamento da tabela com ela própria mais para frente a gente vai ver na hora de implementar como criar isso temos entidade histórico que se relaciona com aluno e com dis disque histórico disciplina histórico A Entidade disque histórico que se relaciona
com disciplina e histórico curso disciplina curso e disciplina Como o próprio nome diz Prof disciplina professor e disciplina são entidades associativas que foram criadas durante a normalização também foram criadas as entidades endereço aluno que se relaciona com o aluno e tipo do logradouro A Entidade tipo logradouro que se relaciona apenas com endereço aluno e a entidade aluno e disciplina que se relaciona com aluno e disciplina Como o próprio nome diz Tranquilo então temos aí as entidades que foram criadas ao longo do nosso projeto e mais duas para finalizar telefones aluno e tipo telefone tá que
se relacionam com o aluno e tipo de telefone bom dito isso a gente passa pro pros atributos agora Quais são os atributos vamos descrever cada um dos atributos de cada uma das tabelas ah teórico pode ser um pouco chato ficar lendo essas tabelas mas é importante pra gente entender porque que a gente escolheu determinadas informações e outras não mas de qualquer forma eu vou passar rapidamente para não ficar cansativo tá então eu vou eu vou falar sobre os atributos para cada entidade começando pela entidade departamento aqui a gente tem dois atributos código do depart ento
e nome do departamento O importante no dicionário de dados na hora de listar os atributos é colocar as informações sobre os tipos de dados e comprimento de dados que esses atributos terão E também algumas restrições que eles utilizarão porque essas informações elas vão ser utilizadas na implementação Então na hora de criar as tabelas usando SQL a gente vai além de fornecer o nome do atributo que vai ser uma coluna A gente vai fornecer também o tipo de dados e as restrições necessárias tá então isso é muito importante ã eu vou fazer o seguinte eu vou
assumir todos os códigos que a gente tiver em todas as entidades como sendo tipo numérico inteiro com dois bytes tá em alguns casos eu posso usar ã um código menor com um byte isso vai depender do tamanho do código possível a ideia aqui é a seguinte como é que Eu determino qual vai ser o comprimento de um valor inteiro depende da faixa de números que esse valor pode assumir então números que podem assumir faixas grandes eles vão ter comprimentos maiores dois ou até mesmo 4 byes números que TM faixas Muito pequenas 1 byte Lembrando que
1 byte dá para você representar no máximo 256 valores de 0 a 255 por exemplo ou números negativos e positivos Ah então se você não espera que aquele atributo vá assumir valores fora dessa faixa você pode usar a faixa de 1 byte caso contrário use de dois ou até mesmo de 4 byes Essa é a ideia e a ideia justamente é para você poupar espaço no banco de dados porque esse comprimento é para cada um dos registros que forem inseridos no banco então se você tiver um registro de um para 2 bytes é uma diferença
de um byte minúscula irrelevante Mas se você tiver 10 milhões de registros a diferença fica grande Tá então é sempre importante colocar o comprimento correto e o tipo de dados também então pro código do departamento a gente vai assumir um tipo inteiro dois bytes ele tem duas restrições ele é a chave primária pk e not nul note nul significa que é um campo não nulo é um campo obrigatório Quando eu for cadastrar dados nessa tabela Obrigatoriamente eu preciso colocar um código pro departamento então toda informação que for crucial que não pode estar ausente na tabela
a gente vai marcar como not nul na prática a maioria dos Campos dentro dos bancos de dados são not nul em alguns poucos casos é que o campo vai permitir nulos ou seja permitir que você não cadastre informação naquele momento tá então a grande maior el vai ser not nu eu não vou precisar nem ficar lendo isso ã o nome do departamento tipo caracter o tipo de dados aqui é caracter porque vai ser escrito tá comprimento 20 bytes creio que 20 by seja suficiente paraa gente cadastrar os nomes dos diversos departamentos Mas pode ser que
a gente tenha que aumentar isso pode ser que a gente tenha que aumentar tá por exemplo de 20 para 25 by vai depender de como você vai representar os nomes do departamentos o exemplo típico é o departamento de Tecnologia da Informação tecnologia da informação tem mais do que 20 caracter 20 caracteres e cada caracter equivale a um byte então ele não cabe nesse Campo Mas se a gente abreviar para departamento de ti aí ele vai caber obviamente Então tudo vai depender de como você vai representar a informação vou deixar com 20 bytes por enquanto também
not nu Beleza então os atributos da entidade departamento vamos adiante entidade professor tem cinco atributos código do professor de novo é um código então dois bytes número inteiro esse vai ser a chave primária nome do professor e o sobrenome são caracteres Campos de caracter pro nome eu deixei 20 bytes pro sobrenome 50 porque o sobrenome costuma ser bem maior código do departamento inteiro 2 bytes o código do departamento ele é chave estrangeira e a gente vai marcar isso com FK com a sigla FK de foreign Key indicando que esse código do departamento ele tá vinculado
com um campo uma coluna em outra tabela onde ele é chave primária isso é importantíssimo porque na hora de criar a tabela eu preciso de um comando para fazer esse vínculo que é o relacionamento e o status vai ser o tipo de dados boleano ou tipo Lógico que ocupa apenas um bit 01 verdadeiro ou falso tá todo mundo aqui é not n vamos adiante paraa entidade curso três Campos código do curso nome e código do departamento pros códig do byes código do curso é a chave primária e o código do departamento é uma chave estrangeira
vai tá conectando em outra tabela e o nome do curso é campo de caracter 40 by deve ser suficiente pra gente colocar os nomes dos cursos tá para cada nome de curso para entidade turma nós temos código de turma que é a chave estrangeira e código de curso que é uma chave aliás ao contrário desculpe código de turma que é a chave primária e código de curso que é a chave estrangeira tá com dois bytes Aí temos o período que é caracter coloquei C bytes porque eu vou utilizar cinco caracteres para representar os períodos os
períodos são manhã Tarde ou noite E por coincidência todas as três palavras TM cinco caracteres então dá para usar cravado ali 5 byes se você pretende representar de forma diferente os nomes dos períodos coloque um comprimento diferente número de alunos é um número inteiro de 2 byes suficiente data de início e data de fim vão ser do tipo data é um tipo específico que a gente encontra nos sistemas pré gerenciamento e esse tipo geralmente ocupa quatro bytes então é importante deixar isso aqui marcado tá prosseguindo entidade aluna entidade aluna tem vários Campos o ra que
é o principal ele vai ser do tipo caracter com oito bytes de comprimento ou seja eu vou utilizar oito ã caracteres para representar o ra mas na prática eu acho que se a gente colocar 6is bytes no ra é suficiente porque com seis byes dá para fazer muitas combinações de ra e dificilmente a gente vai ter repetição ou praticamente impossível ter repetição porque a gente pode usar qualquer caracter no ra então isso aqui eu vou mudar posteriormente para 6 bytes onde você lê se 8 bytes para ra será 6 bytes de agora em diante pra
gente economizar espaço e esse campo é a chave primária nome e sobrenome do aluno caracter 20 50 by igual do professor CPF caracter 11 by um by para cada dígito do car do do CPF ã e aqui a gente vai colocar uma restrição nova que é a Unique quando a gente põe a restrição e o Nick numa coluna ã a gente não consegue repetir aquele valor em outras em outros registros Então a gente vai garantir que o CPF seja único nessa tabela que não haja de forma alguma mesmo sem querer dois alunos com o mesmo
CPF muito importante essa restrição e un Nick aqui para status caracter de um bit ã o e-mail caracter coloquei 60 by creio que seja suficiente para registrar o e-mail Apesar que al umas pessoas tem um e-mail gigantesco talvez precise mudar e pro WhatsApp 11 byes caracter tá geralmente o WhatsApp é o número de telefone né que a gente vai registrar então 11 byes deve ser suficiente Por que não usar numérico né porque a gente não vai fazer cálculos com esse valor né são apenas símbolos esses números então a gente utiliza como campo caracter e no
WhatsApp eu coloquei a restrição como nulo e não not n o que significa que ao cadastrar um aluno é possível deixar esse campo em branco ou seja sem colocar nada porque nem todo mundo tem WhatsApp ou quer cadastrar o WhatsApp já o e-mail aqui ele é obrigatório então pro aluno poder ser matriculado ele precisa ter um e-mail tá claro que dependendo do da regra de negócio da empresa pode ser diferente isso e por exemplo o e-mail também ser nulo aqui ele é not nul muito bom então prosseguindo tem mais alguns Campos na entidade aluno os
códigos de turma e de curso 2is bytes ambos S são chave estrangeira o sexo caracter um bite Então a gente vai escrever né ah uma letrinha apenas para representar o sexo m ou f por exemplo ou qualquer outra letra e fica seu critério como vai ser feita a representação e pro nome da mãe e do pai caracter também só que eu coloquei 80 by porque no campo vai o nome completo da mãe e no outro campo o nome completo do Pai então queria que seja suficiente pro n nome do pai eu deixei n lávia é
possível deixar em branco o nome do pai mas não o nome da mãe obrigatório ter o nome da mãe tá isso é bastante comum entidade disciplina código de novo dois bytes o da disciplina é chave primária e o código do departamento é uma chave estrangeira ficou faltando colocar o FK aqui Ó então anotem aí para não não se confundirem falta FK no código do departamento aqui nome da disciplina caracter assim como a descrição pra descrição eu coloquei 200 byes porque é um texto a gente vai escrever essa disciplina isso isso isso e aquilo mas também
coloquei uma restrição como nulo ela é nável posso eventualmente deixar em branco a descrição deixar vazia a descrição para carga horária número de alunos número inteiro not nul Beleza então tem umas diferencas aqui não esqueça hein código departamento tem uma chave estrangeira que ficou faltando escrever aqui histórico só quatro Campos código de histórico também ã número inteiro 2 bytes chave primário o ra ele é caracter 6 bytes a gente vai usar os 6 bytes pro ra de agora em diante e ele é chave estrangeira conectando essa tabela com a tabela de alunos data de início
e data final tipo data 4 bytes a data final eu coloquei como nulo porque o aluno pode requisitar o histórico dele no meio do curso Então obviamente vai constar a data de início mas não vai constar a data de fim porque não acabou o curso ainda então é possível deixar esse campo em branco tá muito bom disciplina histórico tabela que liga disciplina com histórico tem então os dois códigos de histórico e disciplina e Ambos são chave primária e também são chave estrangeira são a chave primária dessa tabela e conectam com outra tabela são chave estrangeira
importante nota é do tipo decimal ou seja um número que tem casas decimais um número quebrado geralmente 8 bytes de comprimento porque a nota pode ser um número que não é inteiro 3,5 7,5 9.8 por exemplo e a frequência é um número inteiro Você não tem uma falta e meia tem uma ou tem duas faltas então o número inteiro de dois bytes A Entidade curso disciplina é só uma entidade associativa cod curso CDE disciplina são os dois códigos Ambos são chave primária e Ambos são chave estrangeira bem bem simples PR disciplina iden a mesma ideia
com os atributos cod professor e cod disciplina que mais e aluno dis a mesma coisa também é uma entidade associativa que liga aluno com disciplina tem o RA do aluno e tem o código da disciplina Ambos são chave primária e chave estrangeira lembrando ra caracter se bytes entidade endereço aluno Uma entidade nova que a gente gerou durante a normalização vai ter o código do endereço que é o número inteiro dele aqui eu coloquei um byte só por que eu coloquei o cumprimento com um byte só porque o aluno provavelmente vai ter só um endereço né
não vai cadastrar mais do que um endereço então o comprimento pode ser um byte vai ser um número bem pequeno o número de endereços disponíveis pro aluno a gente pode até extrapolar essa ideia para outros códigos se for o caso dá para pensar nisso também para você ver como na verdade o o trabalho de criar essa modelagem Ele é bem de análise mesmo de raciocínio e às vezes dá para fazer de um jeito ou de outro e funciona só que de uma forma ou de outra pode ser aí mais interessante mais performática por exemplo então
V deixar como um byte aqui chave primária o ra chave estrangeira e chave primária também código do tipo de logradouro inteiro um byte é chave estrangeira os nomes o nome da rua complemento e o CP como caracter 50 28 by e o complemento também é caracter 20 by só que esse aqui anulável por quê porque nem sempre tem complemento você pode morar na Rua X número 30 acabou não tem complemento Mas você pode também morar num apartamento e ter como complemento o número do apartamento andar nome do prédio esse tipo de coisa então o complemento
ele pode ser nulo os outros elementos não quase no final hein pessoal vamos lá Aguenta Firme entidade tipo logradouro só dois atributos o código do tipo de logradouro também um bte porque não vai ter muitos tipos de logradouro né rua Alameda Avenida Travessa São poucos então o bite é mais do que suficiente e o tipo do logradouro caracter coloquei 10 bytes porque nenhuma dessas palavras que eu citei ultrapassa 10 caracteres para cada caracter é um byte Rua Alameda Avenida eventualmente Rodovia pode ser que tenha algum outro nome que eu deixei escapar se você lembrar de
algum nome que representa tipo de logradouro com mais de 10 caracteres deixa na descrição aqui embaixo por favor para na hora da gente implementar a gente fazer essa mudancinha tá muito bom a entidade telefones aluno tem o código do telefone do aluno inteiro um byte porque o aluno não vai ter muitos telefones o RA do aluno chave estrangeira o código do tipo de telefone inteiro um byte chave estrangeira e o telefone em si caracter 11 byes que dá para você colocar o número de telefone mais o DDD se quiser colocar mais alguma coisa por exemplo
o código de país você precisa aumentar esse comprimento tá todo mundo not nu e a última tabela que falta É tipo telefone só dois Campos código do tipo de telefone que vai ser número inteiro de um byte chave primária e o tipo do telefone que vai ser caracter porque eu vou escrever por extenso telefone residencial ou então comercial celular de recados esse tipo de coisa 12 bytes deve ser suficiente para 12 caracteres Tranquilo então é isso pessoal a gente viu aqui um dicionário de dados construído com os dados sobre as entidades e os atributos do
nosso projeto trazendo as informações importantes sobre tipos de dados comprimento e algumas restrições que a gente vai aplicar no próximo vídeo a gente vai pegar essas informações todas mais o nosso diagrama do modelo lógico e vamos fazer a implementação do banco de dados a gente agora está na fase da implementação Ou seja criar o banco de dados e depois a gente vai fazer os testes básicos nele tá no nosso banco o que a gente fez na até o último vídeo foi isso aqui a gente criou o diagrama entidade de relacionamento depois de de normalizar esse
banco até a terceira forma normal e geramos essas tabelas todas que vocês estão vendo aí com as suas chaves primárias Chaves estrangeiras e inúmeros atributos tá ã os atributos também já tem aí seus formatos de dados específicos dados e de texto número inteiro ponto flutuante data e assim por diante e agora a gente pode implementar esse banco Lembrando que na prática eu não vou ensinar Ness nesta série de vídeos como usar o SQL para implementar o banco para isso você precisa fazer o curso de SQL tá aqui na no canal da bos a gente tem
um curso completo de MySQL ã de SQL com MySQL e um curso completo também com SQL server além de outros cursos como post gre e Oracle que a gente tá iniciando e aos poucos ã vou dar continuidade nesses cursos também então qualquer um dos sqls que você escolher vai servir para implementação deste banco eu vou mostrar apenas na verdade o banco operacional e a gente vai fazer testes nesse banco para verificar a funcionalidade dele porque isso é importante fazer os testes para verificar se o banco atende ao que foi solicitado pelo nosso cliente virtual por
assim dizer a gente vai criar as tabelas as tabelas que são criadas são essas aqui eu já criei no no MySQL as tabelas tá aqui eu tenho um print da tela do do PHP my admin que eu utilizei para para criar as tabelinhas Então já mostro as tabelas todas existentes na verdade quem criou toda essa codificação Aqui foram os meus alunos do curso presencial que acompanharam também o curso de modelagem e nas aulas de modelagem que eles têm presenciais eles aproveitaram codificar tá então boa parte do código que vocês vão trabalhar aqui nesse nesse vídeo
e no próximo boa parte desse código foi criada por alunos também mostrando que eles aprenderam realmente um pouco de modelagem de dados e claro eu dei uma pequena corrigida em alguns elementos Ah esse aqui é o Dr o diagrama entidade de relacionamento criado no PHP myadmin qual é a diferença desse diagrama para este outro aqui esse aqui eu criei no BR modelo durante o processo de modelagem então a gente foi criando ali manualmente cada tabelinha cada entidade colocando os campos que são os atributos imaginando quem é a chave primária quem é a chave estrangeira fazendo
as ligações já este outro tem uma diferença crucial Apesar dele ser basicamente idêntico este cara ele foi criado pelo próprio software depois da codificação em SQL então depois de codificar todo o banco em SQL a gente tem lá um botãozinho clica no botãozinho ele gera a aplicação gera esse diagrama pra gente tá E aí a gente vê que o diagrama basicamente é igual ou extremamente parecido com o diagrama que a gente criou manualmente tá muito bem utilizei o phpm admin aqui para essa captura de tela porque é o software que a gente utiliza lá na
escola aqui na minha casa aqui na Boss treinamentos eu utilizo ml Workbench e é o Workbench que eu vou utilizar para mostrar para vocês o banco funcionando que faremos exatamente agora então vamos lá aqui está o myq Workbench e aqui está todo o código que gera o banco de dados do nosso projeto Olha que emocionante Então esse código vou passar al rapidamente é o código que gera o nosso banco nós temos uma carga de dados fictícios para fazer uns testes e depois algumas consultas pra gente verificar se ele realmente está funcionando ou não tá claro
que algumas coisas podem ser alteradas ainda aqui alguns tipos de dados alguns Campos podem ser alargados dá para acrescentar atributos ainda tá pode ser que alguma coisa precise de algum ajuste aí vai ficar a seu critério porque você vai obviamente implementar esse banco de dados para testar você acompanhou o curso até agora você quer ver o banco funcionando E aí vai ficar seu critério se você vai querer tentar alterar alguma coisa aqui para até melhorar esse banco e eu sugiro que você faça isso né que você Tente alterar esse banco até para poder entender legal
como que está funcionando ã de novo reitero você precisa ter estudado um pouco de SQL para poder entendu o que tá acontecendo aqui eu vou passar rapidamente então pelo código só para explicar as partes que o compõe então o banco a gente começa criando o banco tem uma instrução chamada Create Database que permite criar um banco de dados novo e Eu batizei esse banco de DB underline faculdade você pode dar o nome que você quiser pro seu banco e depois com com a declaração use eu instruo a minha aplicação a utilizar especificamente esse banco para
executar os próximos códigos então com esse codozinho a gente vai criar o banco e depois a gente começa a criar as tabelas são várias tabelas que nós temos a gente vai criar todas as tabelas utilizando a declaração Create table e especificando as colunas com suas características tipos de dados ã os constraints que são as restrições e se elas são Chaves ou não Eu recomendo que você comece a criação pela tabela departamento por quê Porque a tabela departamento ela não tem chave estrangeira então ela não tem nenhuma Dependência em relação a nenhuma outra tabela Então essa
tabela é ideal para você começar Se você começa criando o banco por uma tabela que tem dependência de outra tabela que tem uma chave estrangeira você vai acabar tendo erro na hora de tentar criar essa tabela porque a outra tabela não existe ainda tá então começa pela departamento E aí você vai criando as tabelas em sequência sempre respeitando essa ideia para criar uma tabela que depende de outra essa outra tem que ter sido criada primeiro então eu comecei com departamento depois eu criei criei a tabela de professor e aqui a gente já vê que tem
uma chave estrangeira sendo criada para isso a gente utiliza o comando constraint a declaração constraint do SQL que vai especificar uma foreign Key chave estrangeira tá e eu especifico qual que é qual que é a a coluna que vai ser essa chave estrangeira depois eu crio as tabelas de curso turma veja que na tabela de turma tem dados do tipo data date Ah uma coisa interessante eu utilizei autoincremento em boa parte das tabelas paraa chave primária para quê é para título de teste mesmo né deixo o próprio banco de dados gerar os códigos que compõe
essas chaves primárias para não ter que ficar entrando com esses valores bolando esses valores quando eu vou criar os os os dados de carga de teste no mundo real talvez você não vá usar o auto incremento talvez você tem que seguir um padrão específico de codificação que o seu cliente usa por exemplo na escola muito muito provavelmente teria isso então quando você for Criar o seu banco pro seu teste você pode optar por Usar auto incremento ou não hã e claro assista um vídeo sobre o auto incremento para saber exatamente como funciona isso aqui no
MySQL é o auto increment o comando no SQL server você usa o ident por exemplo Então vai variar um pouquinho o comando de um banco para outro bom aí a gente continua criando as tabelas disciplina Prof disciplina veja que Prof disciplina tem uma chave primária composta então a primary Key dela é composta por duas colunas cod professor e cod disciplina tá e elas também são Chaves estrangeiras Porque elas estão ligando essa tabela com outras duas essa é uma tabela associativa que é uma tabela intermediária entre outras duas que tinha um relacionamento muitos para muitos que
foi desmembrado em dois relacionamentos um para muitos Então você tá vendo aqui na prática o SQL que cria essa tabela Isso vai acontecer com outras tabelas também ao longo aqui dos nossos códigos por exemplo curso disciplina tabela de aluno é que tem mais Campos também estão todos criados aqui tabela aluno disciplina histórico disciplina histórico e assim vai muitos dos Campos São not n Às vezes eu não usei not n tá o ideal é você tentar usar not n sempre ã que você tiver criando um campo aqui a não ser que esse campo ã Obrigatoriamente possa
não ter um valor ou seja possa e compor nulos ter nulos ã caso contrário sempre coloque note nul tipo do telefone telefone de aluno tipo do logradouro veja que tem AL umas tabelinhas que tem só o código né para a chave primária e a gente tem um um campinho só para armazenar informação na tabela por exemplo tipo logrador é uma dessas ah essa tabela foi gerada a partir da normalização ela não não existia antes da gente normalizar o banco após a normalização ela surgiu ã endereo do aluno é a última tabela que a gente cria
aqui você tá se perguntando Legal tem todos esses códigos aí mas aí como é que eu faço eu fico pausando o vídeo copiando esse código não senhor todos os códigos eu vou disponibilizar no Website lá no nosso blog da boson treinamentos aqui embaixo tá o link para você eh pegar esses códigos só copiar para você bota aí no seu sistema de gerenciamento de banco de dados e faça os testes à vontade modificações código é seu tá você aguentou Ah você me aguentou até agora nessas aulas de modelagem Agora o seu prêmio é levar esse código
para casa tá sem precisar digitá-lo bom depois de executar o todos esses comandos até aqui você terá o banco de dados criado que já está criado no caso E aí você precisa carregar alguns dados para testes então usando a declaração insert into do SQL eu inseri dados em todas as tabelas comecei pela tabela de departamento e lembra aquela mesma regra como essa tabela não depende de nenhuma outra eu posso colocar os dados tranquilo nela mas se eu tentar começar por outra tabela que tem dependências o que vai acontecer é que você não vai conseguir inserir
um dado porque ele não tem o dado sendo referenciado em outra tabela tá então começ pela departamento E aí eu fui colocando dados nas tabelas de professor curso turmas disciplinas dá um trampinho aqui a gente digitar tudo isso mas todo esse código vai est disponível para você também depois é só você fazer as modificações algumas tabelas como as associativa só tem uns códigos tá no caso que por exemplo aluno Disk aluno disciplina tem o RA do aluno e o código da disciplina então você precisa saber o ra de cada aluno e o código das disciplinas
na que esse aluno tá cursando mesma coisa para CS disciplina Prof disciplina e outras histórico as datas tipo do logrador endereço do aluno e chegando aqui no final a gente tem toda todo nosso banco de dados com alguns dados de teste legal e assim o banco de dados do nosso projeto está criado e com alguns dados já carregados basicamente operacional no próximo vídeo eu vou fazer testes mais extensivos nesse banco eu vou criar consultas que puxam dados de duas ou até três tabelas ou mais se for o caso consultas complexas pra gente realmente forçar o
banco e ver se ele tá atendendo que o nosso pseudo cliente gostaria mas nesse vídeo aqui eu vou fazer umas três ou quatro consultas simples só pra gente Verificar se os dados realmente estão lá no banco Esse comando aqui select asterisco from aluno ele traz todos os dados que foram cadastrados na tabela de aluno então quando eu executo esse cara ele traz para mim olha só tabela de alunos completa com todos os dados que a gente cadastrou tá perfeito os dados estão cadastrados ten seis alunos cadastrados ótimo ã as disciplinas select tudo fromont disciplina executo
temos as disciplinas aqui aqui a gente tem uma coluna código disciplina depende lembra que tem um auto relacionamento porque ah nos requisitos desse banco a gente tinha o seguinte uma disciplina pode depender de outra para cursado então a gente acabou criando um código disciplina Depende mas é uma uma coluna que aceita nulos porque no geral as disciplinas não dependem de outras apenas algumas vão depender quando quando houver essa dependência a gente coloca o código aqui ã curso vamos ver os cursos cadastrados tem seis cursos também e os departamentos aos quais eles pertencem finalmente só para
dar um dá um gostinho do que a gente vai ver no próximo vídeo aqui eu tenho um código uma consulta que puxa D de duas tabelas da tabela de alunos e da tabela de cursos tá essa consulta ela vai trazer o nome sobrenome do aluno e o nome do curso que aquele aluno está fazendo então vamos executar aí funcionando perfeitamente nome do aluno sobrenome e o curso que cada um deles faz conforme foi cadastrado lá nos nossos inserts beleza pessoal bom então É isso aí gente nosso banco de dados está criado implementado demorou mas a
gente chegou até aqui modelamos esse banco e agora ele está funcional só que antes de entregar pro cliente a gente precisa fazer testes extensivos no próximo vídeo a gente vai fazer vários testes desse tipo com consultas mais complexas e enquanto isso enquanto não chega esse vídeo eu recomendo veementemente pegue os cursos de SQL e os estude aprenda a linguagem SQL porque você vai aproveitar muito mais desses dois vídeos Beleza então é isso aí pessoal no vídeo passado Nós criamos as tabelas com seus relacionamentos no banco de dados e inserimos alguns dados nessas tabelas e agora
a gente vai fazer alguns testes simples para verificar se essas tabelas estão bem relacionadas e funcionando corretamente na prática não vou fazer muitos testes para não tomar muito tempo Vou fazer cinco consultas básicas tá que vão englobar basicamente quase todas as tabelas que que você tem aqui no nosso banco de dados que você tá vendo aqui no no nosso Dr no diagrama entidade de relacionamento e a gente vai fazer então algumas consultas interessantes tá só Relembrando o nosso banco de dados ã que já foi modelado já foi normalizado já foi criado ele tem várias tabelas
que estão relacionadas entre si esse diagrama que você tá vendo aqui é o Dr completo após a terceira forma normal e é o que foi basicamente implementado Com pequenas modificações ele tá aqui mas pra gente Relembrar os nomes dos Campos para poder criar os códigos lembra Na verdade eu já criei e a gente vai falar um pouquinho sobre eles agora então vamos lá pro MySQL Workbench aqui temos uma mais scell Workbench Então a gente vai fazer os testes finais e mais do que isso as correções porque com certeza tem alguma coisa que a gente precisa
arrumar ainda nesse banco de dados e quando eu estava criando os códigos ah das consultas para mostrar aqui nesse vídeo eu já detectei alguns problemas do banco de dados É Para Isso que Servem os testes Não é só para verificar que está tudo bem É para verificar se está tudo bem se não estiver pra gente corrigir e eu detectei alguns probleminhas por exemplo na tabela Disk his que é a tabela que conecta a disciplina com histórico ã o campo nota ele foi criado como int tipo inteiro Isso foi um vacilo Na verdade o campo nota
não pode ser tipo int ele tem que ser tipo float número de ponto flutuante por quê Porque a nota pode ser um número quebrado tá a gente pode tirar o numa prova ou 8,5 E se o tipo for a gente não consegue registrar 8,5 Então a gente tem que fazer uma alteração nessa tabela o código que faz a alteração é esse aqui é bem simples é um alter table na tabela Disk his E aí eu mando modificar a coluna modify colum coluna nota especificando o tipo de dados float 42 significa qu dígitos duas casas decimais
só isso depois executar essas duas linhas o tipo de dados dessa dessa coluna ele passa a ser o tipo de dados correto pra gente poder trabalhar com as notas tá E outra coisa interessante ao tentar Inserir a notas nessa nessa tabela Ahã eu percebi que não tinha na verdade nada inserido antes eu tentar consultar Na verdade eu percebi que não tinha nada inserido antes então no vídeo passado a gente fez a inserção de dados nas tabelas mas a algumas tabelas ficaram sem dados então ao tentar fazer ah as consultas as as consultas retornavam tudo em
branco nulo por quê Porque não tinha dado inserido então com Este comando aqui a gente consegue inserir dados na na tabela de disciplina histórico que basicamente tem o código do histórico o código da disciplina a nota e a frequência então eu coloquei aqui ã três dados apenas só para Só para constar ã pro Marcos pro Gabriel e pra Beatriz esses três alunos aqui já foram cadastrados anteriormente Então agora eu cadastro o histórico de cada um deles que são esses códigos as disciplinas que Eles cursam as notas 7 8,5 e 6.8 olha aqui os números quebrados
tá e a frequência número de faltas então primeiro eu altero a tabela a coluna nota da tabela Disk rist para float aí depois eu faço a inserção desses dados aqui beleza lembrando não é um curso de SQL se você não tiver entendendo muito bem o que que fazem esses comandos Não se preocupe no final do vídeo eu vou deixar os links para vocês poderem fazer o curso de SQL completo para depois poder implementar os seus próprios bancos de dados bom feito isso a gente já pode começar a fazer alguns testes primeiro teste que a gente
vai fazer é esse aqui ó eu quero consultar eu quero que a o meu banco traga os R nomes e sobrenomes dos alunos os nomes dos cursos e os períodos das turmas que Eles cursam em ordem do primeiro nome do aluno então quero toda essa informação aqui sendo retornada então informações sobre os alunos ra nome sobrenome nome de curso e período das turmas se a gente olhar aqui a gente vai ver que as informações do aluno estão na tabela de alunos as informações de turma na tabela de turma que tá relacionada diretamente com o aluno
e as informações de curso na tabela de cursos também relacionada diretamente com o aluno então é uma consulta relativamente simples que vai englobar três tabelas como é que a gente faz isso é esse comandinho todo aqui 1 2 3 4 5 6 7 linhas de comando então mand ele fazer a seleção do Ra nome do aluno sobre nome período e nome do curso das tabelas de aluno curso e turma vou executar Esse comando e tá aqui toda a informação que que a gente quer os ras nome do aluno ou nome do aluno em ordem alfabética
sobrenome de cada um deles o período que eles estão cursando e o nome do curso que cada um deles está fazendo então beleza esse relacionamento tá funcionando perfeitamente essas tabelas estão com os dados ah perfeitamente alinhados muito bom primeiro teste ok fazer um segundo teste agora quero que sejam retornadas todas as disciplinas cursadas por um aluno em particular não todos os alunos mas eu quero consultar um aluno com as notas as respectivas notas tá então se o aluno crar de mais de uma disciplina vão aparecer as notas de todas as disciplinas se tiver uma disciplina
só vai aparecer só nota dessa disciplina e aí eu escolhi para fazer esse teste a aluna Beatriz cujo ra é o número três lembrando para saber qual é qual é o RA do aluno a gente faz um select asterisco from aluno vai trazer todas as informações sobre os alunos incluindo os ras os n de cada um deles foi assim que eu descobri qual é o RA da Beatriz como é que a gente faz para retornar essa informação veja que o comando ele é grandinho a gente tem que fazer um select trazendo o nome do aluno
sobrenome o nome da disciplina e a nota só que nome sobrenome do aluno ficam na tabela de aluno as disciplinas na tabela de disciplina e as notas estão na tabela Disk rist tabelas separadas Ah uma coisa interessante o aluno não tem um relacionamento direto com disciplina existe uma tabela associativa aluno disque interligando ambas Então a gente vai ter que envolver aluno Disk também no no comando e disciplina histórico tá relacionado com disciplina e com aluno por meio do histórico mas não tá relacionado direto com o aluno a gente vai ter que envolver também essas tabelas
então o comando ficou assim select os campos que eu quero da tabela aluno fazendo um Inner join com aluno Disk depois com discipl depois com histórico e depois com Disk his 1 2 3 4 Inner joins e ainda uso uma cláusula para determinar de qual aluno eu quero os dados se eu não uso essa última linha de comandos ele vai trazer todos os alunos com suas respectivas notas Mas eu quero só da Beatriz cujo ra é o número 3 Então uso a cláusula todos esses comandos estão explicados nos nossos vídeos sobre SQL tem um vídeo
específico muito divero por assim dizer sobre Inner join no nosso curso de mys no server também bom vamos executar então para ver o resultado seleciono o código clico aqui no Relâmpago e tá aí aluna Beatriz meneg sobrenome dela ela tá custando a disciplina raciocínio lógico e sua nota foi 85 perfeito conforme foi inserida anteriormente deixa fechar aqui tranquilo pessoal vamos fazer então mais um mais um teste agora eu quero os nomes e os sobrenomes dos professores todos os professores e as disciplinas que eles ministram com as cargas horárias então olhando no nosso Dr eu quero
os professores e as disciplinas com as cargas horárias a carga horária tá na tabela de disciplina e o professor tá na tabela Professor só que essas tabelas também não são ligadas diretamente existe uma conexão entre elas por meio da tabela associativa Prof disciplina Então essa tabela também tem que ser envolvida aqui na nossa consulta então ficou assim fiz um select com o nome do professor e o sobrenome nome da disciplina e a carga horária das tabelas Professor H conectadas com prof disciplina e com disciplina tá aqui eu usei uma função do MySQL chamada concat que
é para pegar o nome do professor e o sobrenome e juntar numa frase só em vez de ter dois Campos separados eu vou criar um campo só para exibição do nome completo é possível fazer isso E aí esse campo ele vai ser exibido como nome docente vou executar esse cara e tá aí os nomes dos professores com as disciplinas que eles ministram veja que a Sofie ela ministra duas disciplinas então o nome dela apareceu duas vezes aqui quando a gente cria uma aplicação a gente geralmente vai ter que evitar esse tipo de duplicidade eu não
quero que apareça duas vezes o nome do professor então a gente sempre vai criar Campos na na interface da aplicação para que o nome apareça só uma vez e as disciplinas todas listadas muito bem bom quero fazer mais um teste agora eu quero o seguinte eu quero gerar um relatório com os nomes sobrenomes CPF dos alunos tipo e número dos telefones e também o endereço completo Olha quanta informação Então se a gente olhar aqui no diagrama eu quero informações dos alunos informações sobre os telefones e informações sobre os endereços isso engloba as tabelas de aluno
telefone aluno tipo telefone endereço aluno e tipo logrador todo mundo vai ter que entrar no comando Então esse comando aqui é o que vai gerar essa informação porém ao executar Esse comando eu percebi mais um probleminha no banco que a gente vai ter que resolver então os nossos cestes acusaram o seguinte ficou faltando inserir dados na tabela tipo telefone e cadastrar os telefones dos alunos então eu vou inserir na tabela tipo telefone quatro tipos de telefones Residencial comercial celular e telefone de recados abreviados então eu insiro esses quatro caras É só usar esse insert in
aqui bem simples e depois eu insiro os telefones dos alunos para isso eu uso este outro comando inserindo na tabela telefones aluno ra o código do tipo do telefone e o número do telefone em si ã aqui tem um monte de telefones sendo inseridos Porque alguns alunos TM mais de um telefone tem por exemplo telefone residencial e celular ou Residencial e Comercial ao mesmo tempo então eles são todos inseridos aqui Não se preocupem com relação a esses códigos você não precisa ficar pausando o vídeo para digitar porque todos eles vão estar disponibilizados lá no site
da boson como eu fiz com a primeira parte da desses vídeos sobre implantação do banco de dados tá os vídeos de criação inserção anterior já estão lá no site esses aqui também estarão então depois de inserir os dados necessários Aí sim a gente vai conseguir fazer este comandinho aqui rodar E aí está o nome de todos os alunos seu cpfs número de telefone os logradouros complementos e o CP veja que o logradouro também eu concat a palavra Rua Alameda o tipo de logradouro com o endereço e o número então fiquei ficou tudo concatenado numa única
coluna a gente consegue fazer isso com comandos específicos com funções do MySQL legal então funcionou perfeitamente todos os dados dessas várias tabelas separadas estão corretamente relacionados Essa é a ideia do dos Testes é Verificar se os relacionamentos estão corretos e funcionando e verificar se falta alguma coisa uma coluna que tem que ter um tipo de dado alterado por exemplo ou então como no nosso caso colunas que estavam sem dados ainda muito bem e para finalizar eu quero listar todas as disciplinas trazendo informações sobre os departamentos cursos e professores olha quanta coisa então disciplina com informações
sobre os departamentos os cursos e os professores isso vai englobar também tabelas curso disciplina e Prof disciplina Bom vamos lá então para isso eu vou mandar selecionar o nome da disciplina o nome do curso nome do professor sobrenome do professor concatenados para aparecer numa coluna só o nome do departamento das tabelas de disciplina departamento Prof disciplina Professor curso disciplina e Curso olha quanta tabela comando grandão cheio de desses de Inner joins você já deve ter reparado que o Inner join é um comando muito important em myq assim como select então executando Esse Cara eu tenho
as disciplinas curso ao qual cada uma das disciplinas perem aula naquela disciplina e nome do departamento a que per a disciplina Olha que interessante Então funcionou perfeitamente too mundo tá conectado direitinho aparentemente nosso banco de dados Está ok nesse ponto a gente já poderia entregar esse banco de dados pro cliente começar a utilizar e é bem provável que o cliente em algum momento encontre ainda algum probleminha pra gente corrigir Então tem que ficar bem claro que na verdade esse trabalho de criar o banco de dados e implementar ele não termina na hora que você entrega
pro cliente ele provavelmente não vai terminar nunca Ele sempre vai ter alguma coisa para você trabalhar ou uma atualização ou uma correção em algum momento alguém pode descobrir um probleminha que passou em branco por aqui isso não é para se preocupar é assim mesmo é normal o que você precisa fazer sempre é certificar de que o máximo possível de problemas e erros foram corrigidos e que o banco está o mais perfeitamente possível utilizável E aí é só entregar pro cliente e fazer a implantação tranquilo gente ao longo do nosso curso de modelagem de dados eu
dei várias dicas de como realizar modelagem de forma efici performática e agora nesse vídeo final eu reuni algumas dessas dicas na forma de boas práticas e vou passar esse resumo para vocês bem a primeira dica tem a ver com os nomes de objetos é até uma dica meio óbvia mas a gente tem que falar a respeito para nomes de objetos a gente tem que usar sempre nomes significativos ou seja nomes que descrevam exatamente do que se trata aquele objeto então por exemplo para uma tabela de vendas a gente tem que utilizar por por exemplo a
palavra vendas no nome da tabela para o nome de uma coluna usa sempre um nome que descreva exatamente do que se trata aquela coluna sempre evitar utilizar nomes genéricos ou nomes contendo números por exemplo que podem causar algum tipo de ambiguidade Então os nomes devem ser sempre descritivos e evitar abreviações ou siglas por quê Porque abreviações ou siglas geralmente não significam muita coisa para quem não criou aquele banco de dados para quem vai dar manutenção ou vai trabalhar naquele seu projeto depois de você pode acabar ficando confuso a segunda dica tem a ver com os
tipos de dados é de extrema importância que você escolhe os tipos corretos de dados na hora que você tá modelando o seu banco e a dica clássica é sempre usar os menores valores possíveis então por exemplo para um campo numérico se aquela coluna vai acumul valores ou vai guardar valores vamos supor no intervalo de 1 até 50 não faz utilizar um tipo numérico que permita colocar valores de 1 até 1 bilhão você vai procurar o tipo de dados na qual esse pequeno intervalo se encaixe Para quê Para economizar espaço em disco você tem que lembrar
que mesmo que a diferença seja de um ou dois byes de um tipo para outro essa diferença vai ficar multiplicada pelo número de registros que você tiver no banco então uma diferença de dois bytes para 1 milhão de registros São 2 milhões de bytes que vão ser ã armazenados de forma desnecessária então usar os tipos corretos de dados é sempre muito importante para melhorar a performance do seu banco de dados a terceira dica também é meio óbvia normalizar as tabelas processo de normalização é muito importante durante a modelagem durante o final do processo de modelagem
então a normalização como você deve lembrar o princípio base do banco relacional na normalização a gente organiza os dados minimizando a redundância e também a gente coloca os dados nas tabelas corretas é recomendado que você normalize até a terceira forma normal se for necessário você pode tentar normalizar um pouco mais por exemplo usando a forma normal de boys cod mas até a terceira forma normal pra maioria dos bancos de dados é suficiente e se for necessário é possível também desnormalizar o banco então se depois de você normalizar até a terceira forma forma normal você perceber
que o banco não vai ter uma performance muito adequado ou ficou mais complexo você desnormalização Tá mas o adequado normalizar até a terceira forma normal é suficiente se você não lembra exatamente como é que faz a normalização Dê uma olhada nos vídeos anteriores aqui do curso de modelagem de dados quarta boa prática constraints ou as restrições sempre que você usar as constraints que você deve usar evidentemente você deve nomeá-las você deve nomeá-las não deixar o sistema de gerenciamento de bancos de dados dar um nome aleatório qualquer é legal que você escolha o nome por quê
Porque assim você vai ter mais controle futuramente na hora de fazer alterações no banco ou da manutenção nesse banco então eu recomendo por exemplo que você utilize prefixos para indicar exatamente a categoria da constraint da restrição PK de primary Key pra chave primária FK pra chave estrangeira você pode usar em português também não importa qual vai ser o tipo de prefixo que você vai usar desde que você siga um padrão que você mesmo Crie e coloque um nome significativo para constraint aqui eu tenho dois exemplos uma constraint de chave estrangeira ou de chave primária por
exemplo chave primária para ID de autor eu chamaria de PK underline ID autor batendo olho eu já sei é uma chave primária e ela tem a ver com a identificação dos autores a outra Constru de exemplo é F de Editora eu já sei só de bater olho é uma chave estrangeira e tem a ver com a identificação de uma editora que provavelmente está em uma outra tabela né cadastrada em uma outra tabela criando um relacionamento com a tabela Onde está esta constraint outra dica de boa prática é a ordem de identificação dos elementos na hora
de criar o modelo entidade e relacionamento Eu recomendo que você faça da seguinte forma sempre identifique Primeiro as entidades por quê Porque tudo gira em torno das entidades as entidades são os elementos que você realmente quer armazenar no banco de dados o cliente o produto o livro tá a venda e assim por diante Independente de ser uma entidade física ou ser uma entidade abstrata depois você você identifica os relacionamentos assim você vai relacionar as entidades entre si tá vai descobrir como é que uma entidade ela ela se relaciona com a outra na sequência você coloca
os atributos os atributos das entidades que são os principais tipos de atributos aí você vai preencher os atributos das entidades de acordo com os dados que você realmente precisa armazenar para cada uma delas nessa ordem e se houver atributos nos relacionamentos você coloca no quarto passo então você analisa o relacionamento e adiciona atributos e você deve lembrar que quando uma um relacionamento tem atributo muito provavelmente esse relacionamento vai se transformar numa tabela posteriormente Então tem que pensar nisso na hora de colocar os atributos direitinho ali outra dica importante tabelas associativas tem que prestar muita atenção
durante a modelagem quando surgirem relacionamentos muitos para muitos assim que você vira um relacionamento muitos para muitos que você detectar esse tipo de cardinal você já sabe Ali vai ter que ter uma tabela associativa então não deixe pro final já já deixe marcado durante a modelagem para você criar essa tabela associativa naquele ponto Se você deixar passar deixar em branco na hora que chegar na normalização você vai ter problemas ou se você tentar implementar o banco de dados sem ter criado a tabela associativa você vai perceber que você não conseguirá criar esse banco a implementação
física dele então lembre-se das tabelas associativas sempre sempre que ocorre o relacionamento n para m muitos para muitos simplifique esse relacionamento criando uma tabela intermediária associativa tá que vai desmembrar o relacionamento muitos para muitos em dois relacionamentos um para muitos aí você vai conseguir normalizar e implementar o banco de dados com facilidade outra dica são os relacionamentos eneos se você detectar durante a modelagem relacionamentos nários ou seja ternário quaternário ou maior que são os relacionamentos entre três ou mais entidades presta muita atenção esse tipo de relacionamento ele costuma causar problemas também na normalização e na
hora da implementação sempre que acontecer um relacionamento desse tipo tente simplificar criando tabelas associativas tá para transformar esses relacionamentos Em relacionamentos binários de uma entidade diretamente com outra nem sempre vai ser possível mas você precisa tentar fazer essa simplificação porque lá na frente na hora de implementar o banco você vai perceber que a diferença é grande inclusive de performance na hora de utilizar o banco de dados outra dica extremamente importante tem a ver com a documentação da sua modelagem muita gente não faz a documentação de forma adequada mesmo paraa modelagem que é um processo de
documentação mas é é de extrema importância que você crie depois A modelagem se o diagrama entidade de relacionamento detalhado que você crie o dicionário de dados e o dicionário de dados é é um ponto que muitas vezes fica de fora muita gente deixa de fazer o dicionário de dados e implementa o banco de dados direto com base no diagrama no desenho C do diagrama mas eu recomendo fortemente que você crie o dicionário de dados porque ali é onde você vai listar todos os elementos que compõem o banco de dados com seus detalhes detalhes do tipo
espaço que ele vai ocupar tipo de dado adequado para cada um né do dos elementos como eles vão se relacionar e assim por diante e na hora que você for codificar também tem a ver com a documentação isso coloque comentários para descrever cada um dos scripts que você tá criando não tem a ver exatamente com a modelagem e a codificação mas tem a ver com a documentação então não deixe de colocar comentários também na hora de criar os seus scripts Lembrando que a documentação é muito importante porque quando for necessário realizar algum tipo de mudança
profunda no banco de dados que envolva A modelagem a documentação ela vai ser De grande valia nesse ponto bom prefixos e nomes de objetos já falei um pouquinho sobre os nomes de objetos significativos Eu recomendo que além do nome ser significativo você também utilize prefixos para todos os objetos do banco tabelas views pro banco de dados em si e para elementos mais específicos como procedimentos armazenados e triggers que já tem a ver com a codificação na verdade então por exemplo paraa tabela você pode prefixar com tb ou tbl paraa View com VD ou simplesmente V
DB banco de dados é bastante comum SP para procedimento armazenado é muito comum SP de Storage procedure em inglês TG para Trigger e assim por diante você não precisa necessariamente seguir esses prefixos que eu tô mostrando aqui você pode criar os seus próprios desde que você siga sempre um padrão coerente usou em um local no seu projeto use em todos a mesma categoria de prefixos é importante que que que todo o seu processo de modelagem seja coerente ainda falando de nomes de tabelas e também de colunas é recomendável que você use termos no singular PR
os nomes das tabelas por exemplo tbl cliente em vez de tbl clientes por quê Porque uma tabela no geral ela ela representa uma coleção de entidades tá e não os elementos em si e a mesma coisa PR as colunas nome livro em vez de nomes nomes livros ou nome livros por quando você faz uma consulta em uma coluna você retorna um valor de cada registro tá um valor no singular Claro é obrigatório isso não você pode sim utilizar os nomes no plural se você assim o desejar desde que de novo você siga o mesmo padrão
para todo o banco de dados para todas as tabelas e para todas as colunas agora uma coisa que é muito importante isso sim tem que ser bem reforçado é procure não usar acentuação caracteres acentuados espaços e nem caracteres especiais não Coloque esse tipo de de caracter na hora de criar os nomes de tabelas colunas e outros elementos do banco Porque dependendo de onde esse banco de dados for utilizado esses caracteres eles podem causar algum tipo de problema banco pra web banco para pra máquina local banco em sistema operacional que tá em outro idioma banco para
ser utilizado em outro país então sempre procure não utilizar caracteres especiais acentuação e evidentemente não use espaços nos nomes se precisar separar com espaço uma palavra composta u utilize o underline o underline sim é permitido uma outra dica extremamente importante tem a ver com o levantamento e análise de requisitos que é algo que às vezes assim como a documentação também fica fica um pouco passado mas é muito importante saber levantar todas as informações necessárias para criar o banco é evidentemente de extrema importância porque sem todas as informações na sua mão você não tem como realizar
modelagem de forma adequada se uma informação falta durante o processo de modelagem você não pode simplesmente colocar uma informação que você acha que encaixa ali tá uma regra de negócio por exemplo se você não conhece a regra de negócio de forma adequada você não pode criar um relacionamento ou colocar uma coluna numa tabela só porque você acha que aquilo ali vai resolver o problema não é assim que funciona a regra da empresa pode ser diferente então o levantamento e análise dos requisitos é de extrema importância pergunte o máximo que puder pro seu cliente ou pro
usuário do banco de dados Anote a informação né não não se baseie só na sua memória e sempre que precisar Volte pro cliente ligue pro cliente entre em contato e pergunte novamente Não faça modelagem não prossiga no processo sem ter certeza de que aquilo que você está incluindo no no no modelo é realmente relevante na dúvida Contate sempre o seu cliente e para finalizar os campos de chave primária Olha uma dica interessantíssima as tabelas sempre devem possuir uma chave primária é possível ter uma tabela sem chave primária sim se você criar a tabela sem a
chave primária ela vai ser uma tabela mas é de extrema importância que elas TM uma chave primária porque isso vai ajudar muito no processo de relacionamento no processo de busca de dados e para evitar registros repetidos então sempre chave primária Procure sempre usar Chaves naturais então analise bem os campos que fazem parte da tabela e tente identificar Qual daqueles Campos pode ser a chave primária tente evitar de criar chave artificiais por exemplo joga uma coluna de códigos nem sempre dá para evitar Às vezes você vai ser obrigado a fazer isso nesse caso evidente que você
vai utilizar esse tipo de Campo que a gente chama de chave surrada entre uma chave composta e a sur rogada prefira sempre a sur rogada no caso porque simplifica na hora de você fazer relacionamentos e fazer consultas e olha isso é importante procure usar tipos numéricos na chave primária em vez de caracter A não ser que seja impossível por quê Porque isso economiza recursos os tipos numéricos no geral ocupam menos espaço que os tipos de caractere isso vai aumentar a performance na hora de fazer consultas você tem que lembrar que um banco de dados eh
muitas vezes ele vai ser usado por muitos usuários simultaneamente por exemplo um banco paraa web pode ser usado por milhões de pessoas ao mesmo tempo então aquela busca aquela consulta que você faz na sua máquina durante os testes que é rapidinha ela pode não ser tão rápida quando tiver online Então procure utilizar sempre um tipo numérico para aumentar a performance do seu banco tranquilo gente bom como bônus vou colocar mais cinco dicas agora relacionadas à programação do banco de dados a linguagem SQL em si Então você vai lá implementar o banco usando SQL recomendo que
você sempre utilize views procure usar as views para ocultar a complexidade do banco isso é muito importante também para fornecer dados agregados e também olha só segurança restringir acesso às linhas de colunas e tabelas as views simplificam muito na hora de criar consultas Principalmente quando as consultas elas englobam várias tabelas de uma vez utiliz uma vi para simplificar para sintetizar tudo isso e faça consulta navio muito important outra dica essa aqui é uma dica até bastante comum evite realizar consultas utilizando select asterisco ou seja trazendo todos os campos da tabela quando você tiver programando uma
aplicação Procure sempre retornar apenas e tão somente as colunas que são absolutamente necessárias naquele momento não traga tudo para usar uma ou duas colunas apenas tá sempre retorna as colunas necessárias por conta de performance velocidade do banco Campos de senha sempre que tiver um campo de senha que você precisa armazenar no banco de dados é até Evidente a senha ela tem que ser criptografada antes de ser armazenada no banco não vai guardar a senha no banco de dados tá isso é uma fha de segurança gravíssima sempre utilize um algoritmo de criptografia adequado de preferência que
utilize Salt e a decriptação sempre na aplicação então a é lido o valor que tá armazenado no banco o hash da senha criptografado e decriptar fazer dessa forma por questões de segurança usar procedures e views views Eu já falei procedimentos armazenados é a mesma ideia das views extremamente importante que você crie esses procedimentos para simplificar o acesso ao banco e porque você pode e acrescentar programação lógica dentro do próprio banco fora da aplicação isso também tira um pouco da carga em cima da aplicação que vai acessar o banco de dados assim você aumenta a performance
diminui a possibilidade de erros tá e simplifica a codificação da aplicação em si parte do código parte da lógica você transfere pro banco de dados e finalmente usar os índices então colunas que são muito consultadas é legal você indexar assim a a consulta o retorno do os dados ele vai ser mais rápido mais performático tá Então coloque índices mas lembre-se nem sempre é interessante usar o índice se a coluna se aqueles dados são muito alterados né são muito atualizados ou excluídos ou muito acrescentados eh Talvez o índice nesse caso diminua a Performance em vez de
aumentar então tem que tomar cuidado com colunas que são modificadas com frequência o índice é legal para bancos que T muitas muito mais consultas do que alterações na dúvida a gente tem vídeos aqui no canal explicando exatamente como utilizar os índices em SQL aliás vídeos sobre procedimentos armazenados views e tudo mais que você precisar e quiser aprender beleza gente as propriedades acid que é uma sigla significam atomicidade consistência isolamento e durabilidade e são quatro propriedades importantíssimas que os bancos de dados relacionais precisam garantir para que seja garantida a integridade dos dados armazenados essas propriedades permitem
garantir a validade dos dados quando eles são inseridos ou por exemplo atualizados e garante que as informações não sejam perdidas Por exemplo quando ocorre um problema no servidor de banco de dados ou com a Instância ou um problema qualquer durante a execução das transações dentro do banco assim essas propriedades são fundamentais pro sucesso do processamento de transações Então vamos falar sobre cada uma dessas propriedades suscintamente começando pela priedade da atomicidade ã antes de falar da atomicidade o que que são as transações quando você tem um banco de dados você realiza operações sobre esse banco no
caso operações são declarações SQL E essas operações geralmente são realizadas em blocos esses blocos a gente chama de transações e as transações no banco de dados permitem inserir atualizar Excluir dados fazer consultas etc e é muito comum que a que as operações n essas declarações SQL que são operações sejam executadas em conjuntos que dependem umas das outras ou seja elas TM que ser sempre executadas em blocos e não apenas individualmente um exemplo clássico disso para você entender melhor é quando a gente faz uma uma por exemplo uma transferência de dinheiro entre duas contas correntes essa
transferência ela tem no mínimo duas operações ocorrendo o dinheiro saindo da conta a e entrando na conta b e essas duas operações devem ser executadas com sucesso ambas não pode ocorrer o fato de uma operação ser realizada e a outra não senão alguém vai ter prejuízo ou banco ou o cliente Imagine se o dinheiro sai da conta a e não chega na conta B foi debitada uma conta operação com sucesso mas a outra conta não recebeu dinheiro falhou ou inverso o dinheiro não sai da conta a mas é inserido na conta b então De onde
veio esse dinheiro a conta B recebeu que deveria mas a conta a não foi debitada prejuízo então as duas operações que são distintas na verdade elas são um bloco que a gente vai chamar de transação E no caso atomicidade é a propriedade essa de que garante que a transação seja realizada por completo ou não seja realizada então a transação é tratada como uma entidade única como se fosse um único comando transferir dinheiro se ocorrer algum problema durante esse processo durante a execução das várias operações que compõem a transação nenhuma das operações será executada a atomicidade
garante que que tudo é desfeito e continua no estado anterior que estava o banco de dados portanto as transações elas são aplicadas de uma forma que a gente chama de tudo ou nada ou todas as operações funcionam ou nenhuma deve funcionar para garantir a integridade dos dados bom vamos então para a próxima propriedade asset que é a consistência essa propriedade diz que as transações devem levar o banco de dados de um estado que é válido para outro estado que continua sendo válido garantindo assim a estabilidade do banco os dados gravados eles devem ser sempre válidos
de acordo com regras pré-definidas como por exemplo as regras de constraints regras de chave estrangeira check etc dessa forma a gente evita que os dados gravados no banco sejam corrompidos por conta de algum tipo de operação ilegal no caso de operação ilegal no sentido de falha na operação um exemplo clássico é tentar inserir um registro em uma tabela H tabela essa que está relacionada com uma outra tabela chave primária com chave estrangeira e tentar inserir um registro fazendo referência a uma outra tabela sem que esse registro exista na tabela a né na tabela P Então
não é possível inserir esse registro porque a informação não existe ainda no banco de dados a informação relacionada então a consistência garante que esse registro não será inserido enquanto a gente não não inseri o registro na tabela P relacionada assim evitamos os problemas de inconsistência do banco de dados informação que não deveria estar no banco de dados vamos para a próxima regra então próxima propriedade é do isolamento o isol momento trata do seguinte em um banco de dados que é acessado por muitos usuários as transações elas podem e devem ser executadas de forma concorrente ou
seja várias operações ao mesmo tempo por vários usuários simultâneos o exemplo clássico é uma loja virtual A loja tá na internet e você pode ter dezenas centenas ou até milhares de pessoas efetuando transações naquela loja ao mesmo tempo e possivelmente alterando as mesmas tabelas dos bancos de dados O isolamento é uma propriedade que permite que garante que a execução concorrente deixe o banco de dados num estado estável também ou seja no mesmo estado que ele estava ã caso as transações fossem executadas em sequência e não simultaneamente quando as transações são executadas em sequência é muito
mais fácil você garantir a estabilidade do banco executou a primeira deu certo beleza vai pra segunda deu certo vai pra terceira deu errado desfaz e assim por diante mas quando elas estão ocorrendo ah de forma concorrente ao mes mesmo tempo é muito mais difícil você garantir o isolamento o exemplo clássico é quando dois clientes vão tentar comprar ã Um item o mesmo item dentro de uma loja uma loja virtual né um sistema na internet vamos supor que a gente tenha o último exemplar de um livro ou de uma câmera ou de um produto qualquer e
os dois estão ali na loja tentando comprar cada um em um local diferente tentando comprar aquele produto as transações estão ocorrendo simultaneamente o produto tá aparecendo pros dois ao mesmo tempo eles estão estão ali preenchendo dados clicando no carrinho de compras etc mas é óbvio você só tem um produto só um deles vai conseguir comprar então aquele que finalizar a compra primeiro consegue finalizar a transação a transação é executada e o outro não vai conseguir comprar o produto então o isolamento garante que essa outra transação ela vai ser também desfeita ah desfazer a transação se
chama Roll Back e finaliza o cara não vai conseguir Executar a compra que seria um grande problema se ele conseguisse finalizar a compra de um produto que já não existe mais como é que a loja vai entregar isso pro cliente então o isolamento é essa propriedade e a última propriedade que é a durabilidade já dá para imaginar um pouquinho do que se trata pelo nome durabilidade essa propriedade garante que quando uma transação for executada efetivada o termo técnico é comit a o banco de dados vai permanecer nesse estado mesmo que haja um problema grave no
sistema mesmo que quebre o servidor que arranquem os discos travou faltou energia elétrica etc a durabilidade garante que os dados continuam lá ou naquele disco ou no backup não importa a informação não pode ser alterada depois de ter sido gravada assim as transações são sempre gravadas em dispositivos de memória permanente não volátil como por exemplo os discos geralmente ã com espelhamento com backups para garantir que essa informação ela não não possa ser corrompida ou alterada depois das transações terem sido finalizadas e mesmo que a gente inicia a Instância do banco de dados reiniciando o sistema
Por exemplo quando ele voltar os dados continuarão lá disponíveis para consulta e para uso normal então se você é um estudante que tá iniciando no mundo dos bancos de dados e tá começando a aprender a linguagem SQL Ah esse vídeo vai ser muito útil que nele eu vou mostrar 10 dos principais comandos que você deve aprender para dominar essa linguagem tá eu vou apresentar obviamente os comandos de forma suscinta tá existem muito mais do que esses 10 comandos que vocês vão ver aqui essas 10 declarações Mas elas são ótimo ponto de partida para você criar
o seu primeiro banco de dados Beleza então é isso aí vamos lá em mãos à obra bom pessoal então o primeiro comando que a gente vai aprender É o comando Create Database que é utilizado para criar um novo banco de dados tá então dentro dos nossos 10 comandos essenciais Ah o comando para criar um banco de dados certamente é extremamente importante ele é muito simples de de trabalhar tá para você criar um novo banco de dados basta Create Database seguido do nome do banco de dados né o nome que você vai utilizar para esse banco
de dados ponto e vírgula no final nem toda a implementação do SQL vai precisar do ponto e vírgula lembrando disso tá então vamos criar um banco de dados pros nossos exemplos aqui nesse vídeo chamado de supermercado vou selecionar esse código e vou executar beleza Create Database Supermercado tá criado o banco de dados é bem simples tá depois de você criar o banco de dados aí já é um comandinho plus o comando iuse seguido do nome do banco de dados vai alterar o banco de dados padrão que tá sendo trabalhado aqui pelo nosso sistema de gerenciamento
então eu vou executar também Este comando beleza euse supermercado de forma que os próximos comandos que eu executar eles vão vão ser executados neste banco de dados supermercado e não em outros bancos de dados que eu tenho aqui nesse sistema de gerenciamento tá lembrando que eu tô utilizando my SQL para para mostrar esses exemplos mas os comandos que eu tô mostrando aqui servem em qualquer sistema de bancos de dados beleza aqui a gente tá usando SQL padrão bom vimos o primeiro comando Então vamos ver o segundo comando comando para criar tabelas Então você criou o
banco de dados agora você quer criar tabelas para isso a gente vai utilizar o comando create table comando Create table funciona assim Create table nome da tabela abre parêntese E aí você vai vir com uma lista de nomes de colunas né os campos do banco de dados Então vem o nome da do campo o tipo de dados desse campo e na sequência as constraints ou restrições se houverem aqui por exemplo eu vou criar uma tabela chamada fornecedores que vai ter dois Campos for que é o código do fornecedor e nome forne que é o nome
do fornecedor o código do fornecedor vai ser do tipo in e vai ser uma chave primária e o nome do fornecedor é um varar para até 50 caracteres legal E aí eu fecho pares no final executando Esse comando eu vou ter uma tabela criada dentro do banco de dados de supermercado vamos exec min mais uma tabela pros nossos exemplos que eu vou chamar de produtos a tabela produtos ela vai ter 1 2 3 4 cinco Campos o ID do produto que também é small int chave primária o nome do produto vai achar 50 com a
restrição not nul quer dizer é obrigatório digitar o nome do produto quanti prod que é a quantidade do produto small int não nulo preço do produto vai ser um valor decimal legal 10,2 10 dígitos duas casas decimais o código do fornecedor vai ser um small int e eu também nesse comando Create table posso adicionar constraints específicas no caso eu vou eu vou adicionar uma constraint que eu chamei de FC cod fornec que vai ser uma chave estrangeira por que eu tô quendo essa chave estrangeira porque eu quero ligar eu quero relacionar a tabela de produtos
qu é de fornecedores para que eu possa saber por exemplo quem forneceu qual produto então no próprio comando Create table você pode acrescentar isso daqui tá eu tô dizendo que a chave estrangeira vai ser o campo cod fornec que tá aqui em cima código de fornecedor que faz referência ou seja está ligado lá na tabela de fornecedores há um campo de nome igual cod fornec não precisa ser igual o nome na verdade mas aqui eu resolvi fazer igual para ficar mais simples de entender legal então com esse comando que é uma variante eu consigo criar
uma segunda tabela vou executar tabelinha criada com sucesso Agora eu tenho as duas tabelas criadas dentro de um banco de dados elas estão conectadas E você já aprendeu então dois comandos importantíssimos em SQL Create Database e o Create table qual outro comando extremamente importante bom você criou o banco né tem que inserir dados nesse banco nas tabelas do banco para isso a gente usa o comando insert into sintaxe do insert into é insert into nome da tabela que vai recebe os dados abre parêntese lista dos Campos lista das colunas fecha o parêntese depois palavra reservada
Vales de valores abre parêntese E aí você vem com os valores separados por vírgula fecha parêntese ponto e vírgula tá os valores devem vir na mesma ordem que você declarou aqui em cima os nomes dos Campos certo se houver algum Campo que é ao incremento ele não precisa ser colocado não deve ser colocado na verdade dentro dos valores tá então eu vou inserir dentro da minha tabela de fornecedores Só Um item tá um fornecedor chamado acme cujo código vai ser o número um então eu simplesmente executo Esse comando e tá inserido o valor lá dentro
certo e também vou inserir registros na tabela de produtos então o comando insert into ele também pode ser executado de uma forma um pouquinho diferente tá aqui eu vou inserir na tabela de produtos vários produtos de uma vez Então nesse caso cas eu vou chamar a palavra vos e vou colocar separando por vírgula todos os valores Ou seja todos os dados dos registros de produtos eu não preciso ficar repetindo essa palavra várias vezes na verdade eu não preciso ficar executando o comando insert in várias vezes tá então vai ter um produto cujo ID vai ser
100 o nome dele vai ser monitor LCD a quantidade 12 o preço R 550 veja que aqui é pontinho e não Vírgula e o fornecedor vai ser sempre um Porque eu só cadastrei fornecedor e veja que nessa variante aqui eu também não coloquei os nomes dos Campos separados tá você pode fazer isso desde que aqui em valores você coloque todos os valores que não são ao incremento na mesma ordem em que eles aparecem na tabela tá aí você consegue executar Esse comando tranquilamente Então vou executá-lo beleza inserir todos esses caras cinco linhas afetadas certo Lembrando
que o ponto e vírgula só vai no finalzinho de tudo finalizar o comão próximo comando importante é o comando para efetuar consulta Esse é um dos mais importantes Provavelmente o mais importante de todos a declaração select com select você faz as consultas no banco de dados aqui V mostrar como efetuar consulta trazendo colunas específicas por exemplo eu quero saber os nomes dos fornecedores que estão na tabela de fornecedores Então vou dar um select nome forn fornecedores quando executo Esse comando aparece aqui olha só o nome do fornecedor acme Esse é o resultado da minha consulta
beleza muito bom fechar aqui vou executar uma outra variante dessa vez trazendo os nomes de duas colunas nome do produto e o preço do produto da tabela de produtos então ao executar esse cara ele traz uma uma lista com os nomes dos produtos e seus respectivos preços é assim que deve ser usado o comando select também é possível trazer todos os dados da tabela se você quiser você pode dar um select asterisco from e o nome de uma tabela por exemplo produtos tá select asterisco produtos legal ele traz todas as colunas de uma vez no
mundo real a gente não costuma usar muito select asterisco dentro das aplicações porque acaba trazendo dados que a gente não precisa então o ideal é sempre você dar o select com as colunas exatas que você vai precisar consultar na sua aplicação legal uso mais aqui o select asterisco para fazer testes mesmo Verificar se os dados foram todos inseridos nas tabelas etc beleza muito bom próximo comando usar filtro de dados para consultar as tabelas tá por exemplo o comando select nome pro from produtos traz todos os nomes de todos os produtos mas nem sempre eu quero
saber os nomes de todos os produtos se eu tiver 5000 produtos cadastrados vou gerar uma tabela com 5000 nomes as vezes o que eu quero é só saber o nome de um produto a partir por exemplo de um código de barras tá para isso eu vou usar um filtro que é a cláusula weare então o weare é o comando importante a declaração importante que você precisa aprender a cláusula weare permite estabelecer um filtro tá então aqui nesse comando eu tô selecionando consultando fazendo uma uma query ah na coluna nome de produtos da tabela produtos onde
Where significa onde o ID do produto é igual a 101 portanto eu quero o nome de um produto em particular e não de todos tá quando eu executo Este comando ele me retorna somente o nome de um produto Então quem é o produto 101 roteador banda larga perfeito n em vez de trazer a tabela inteira ele permite filtrar a cláusula ela ela ela pode ser utilizada juntamente com vários outros comandos várias outras cláusulas Para para que você tenha aí um ajuste mais fino dos Filtros tá você pode fazer agrupamentos você pode utilizar consultar dados que
começam com a letra x ou terminam com a letra Y né que estejam entre o intervalo de valores numéricos e assim por diante dá para fazer muita coisa com a cláusula Legal muito bom próximo comando alterar o registro comando update extremamente importante quero fazer alteração de um valor que já está no banco de dados Eu uso o update e ele funciona assim update nome da tabela set nome da coluna que vai ter o valor modificado igual e o valor que vai ser atribuído tá só que aí tem que prestar atenção aqui eu vou utilizar a
nossa cláusula we para dizer exatamente qual é o registro que vai ter o valor alterado então a no caso ID PR igual a 100 eu vou aumentar o preço do produto né cujo ID é igual a 100 ele vai para r$ 30 tem que tomar muito cuidado quando utilizar o update porque se você esquecer de colocar a cláusula weare ele vai dar o update na tabela alterando todos os registros daquela coluna daquela tabela tá para esse valor aqui então seria um grande problema imagina 1000 produtos e você num comando só pum Coloca o mesmo preço
em todos eles depois para recuperar é bem complicado tá então antes mesmo de executar Esse comando eu vou dar um select ã nome aliás preço preço prod from minha tabelinha de produtos vou usar clus ID underline prod igual 100 tá vou primeiro executar esse cara aqui pra gente ver o preço atual desse produto R 550 Ele custa beleza Quero aumentar para 630 Então agora eu executo o update beleza Tá executado e agora executo de novo select tá lá preço do produto 630 tranquilo aí o produto 101 custa quanto vamos ver se alterou o preço do
produto 101 130 então funcionou direitinho alterou só o preço daquele produto que eu queria comando update tranquilo T bom próximo comando excluir registros tá vamos supor que eu quera excluir um registro em particular ou um grupo de registros para isso eu utilizo delet from tá como é que funciona delet from nome da tabela e cláusula we de novo para identificar Qual é exatamente o registro ou conjunto de registros que a gente quer excluir no caso eu quero excluir o cara cujo ID é o 101 que é o roteador banda larga que a gente já viu
tá então eu vou executar Esse comando aliás antes disso vamos dar um select dar um select aqui ó dar um select nesse cara aqui aqui aliás Vamos dar um select nele só que em vez de preço prio eu quero o nome do produto tá vamos ver se o produto tá na tabela mesmo isso tá lá roteador banda larga agora eu vou excluir esse cara com delet from Beleza vou dar um select de novo para ver o que acontece ó não não não apareceu nada veio em branco porque esse produto não existe mais lá legal então
delet from exclui registros em particular desde que você use a cláusula we que acontece se eu der um delet from semare Possivelmente você vai excluir muito mais do que o registro que você queria excluir tá isso é um grande problema então toma muito cuidado quando utilizar esse comando próximo comando esse extremamente importante como trazer dados de duas ou mais tabelas que tenham relacionamento entre si para isso a gente utiliza o Inner join tá o Inner join de extrema importância também tá então Inner join permite que você traga dados da tabela a e da tabela B
desde que elas tenham um relacionamento entre si e assim você consegue apresentar pro usuário informações de ambas as tabelas simultaneamente por exemplo eu quero saber o nome do produto e o nome do fornecedor daquele produto na tabela de produtos tem o nome de produtos mas não tem o nome do fornecedor o nome do fornecedor está na tabela de fornecedores duas tabelas separadas Porém você lembra lá em cima quando a gente criou as tabelas Que Nós criamos um relacionamento entre elas né por meio do código de fornecedor que numa tabela é chave primária e na outra
é chave select os nomes das colunas que eu quero trazer no caso nome prod e nome fornec from L Listo uma das tabelas aqui eu coloquei a tabela de fornecedores tá que tem a chave primária Inner join nome da outra tabela Onde tá a chave estrangeira E aí eu especifico com a cláusula on Qual é o campo em cada tabela que tá fazendo a ligação então na tabela de fornecedores eu tenho o campo cod fornec eu uso um pontinho para denotar tá isso então fornecedores pcod fornec igual qual é o campo ligado na tabela de
produtos é o produtos pcod fornec lembra que eu usei o mesmo nome nas duas tabelas Então esse pontinho aqui é para denotar ah essa coluna na tabela produtos ligada a esta coluna na tabela de fornecedores ele vai me trazer os dados de ambas as tabelas simultaneamente executando tá aí os nomes dos produtos e o nome do fornecedor que é o acme para todo mundo aqui legal muito bom e dá para você trabalhar também com cláusula we aqui obviamente né e fazer filtros de registros para trazer Só Informações específicas por exemplo só o nome do produto
e do fornecedor de um produto em particular oou de produtos que custem o preço x e assim por diante e também dá para fazer Inner join com mais de duas tabelas beleza muito bom nono comando importante retornar os resultados em ordem né ordenados Por exemplo eu quero os nomes dos produtos e os preços dos produtos mas eu quero que eles venam em ordem alfabética de nome do produto para isso eu uso a cláusula Order byy tá E é muito simples select colunas fromont tabela você pode vir com a cláusula a se for necessário e no
final de tudo coloca o Order by e o nome da coluna que deve vir ordenada no caso eu quero ordenar por nome do produto sabe quando você tá numa num loja virtual vendo os preços dos produtos e aí tem lá em cima um botãozinho né ordenar por maior preço por menor preço ou por data mais recente então é um orderby que faz isso né que ordena os produtos então H primeiro eu vou fazer o seguinte ó eu vou executar o select sem o Order buy Olha só ah monitor teclado pendrive webcam na verdade eles já
estão aqui quase em ordem alfabética só trocar o teclado e pendrive de lugar tá e o orderby vai fazer isso quer ver Vamos executá-lo então executando com Order buy tá lá monitor pen drive teclado e webcam eles vêm na ordem e veja que o preço do produto Claro segue a ordem adequada tranquilo muito bom para finalizar comando truncate table tá Esse comando é muito útil quando você tá desenvolvendo né o banco de dados e fazendo teste você permite que você exclua todos os dados de uma vez e limpe a tabela tá é muito simples de
usar truncate table e o nome da tabela tá então eu vou dar um truncate table em produtos já foi tá aí a gente dá agora um select asterisco from produtos lembra que o asterisco é mais usado para testes eu quero fazer um teste quero ver o que que tem dentro da tabela de produtos executo e não tem nada aparece tudo como nulo porque a tabela foi todinha excluída beleza pessoal então é isso aí nesse vídeo eu apresentei para vocês 10 comandos essenciais em SQL que você precisa conhecer foi uma apresentação assim superficial obviamente né mas
para apresentar os comandos e eu recomendo que você se aprofunde em cada um deles aqui no canal da boson treinamentos nós temos um curso completo de MySQL onde a gente aborda esses e muitos outros comandos tá com vários exemplos E também temos um curso de Microsoft SQL server com a mesma ideia tchau aborda esses e muitos outros comandos inclusive comandos que são específicos dessa implementação beleza como aprender bancos de dados e o que estudar Bom o negócio é o seguinte bancos de dados é uma área bastante Ampla tá ã é uma área bem interessante para
se trabalhar inclusive é uma área que é rentável tá se você ã se aprofundar o suficiente no assunto e é uma área que não é tão complexa assim para você para você se tornar um especialista comparado com outras áreas de tecnologia Mas de qualquer forma não é uma área simples no sentido da palavra que que você tem que estudar e como estudar para conseguir se tornar um profissional de bancos de dados primeira coisa é o seguinte você pode fazer um estudo formal tá o estudo formal é indo pra faculdade e existem alguns poucos cursos que
permitem que você se transforme num prof ional de bancos de dados por exemplo você pode fazer um curso de tecnologia em análise e desenvolvimento de sistemas que vai te preparar na verdade para ser um analista ou um programador mas que possui uma carga de bancos de dados que é suficiente para você começar na área porém existem cursos que são focados especificamente para bancos de dados por exemplo Existe um curso de tecnologia em bancos de dados geralmente esses cursos TM duração de 2 a 2 anos e meio tá e num curso de tecnologia tecnólogo em bancos
de dados você vai aprender ã as matérias focadas nessa disciplina tá mais do que em análise de sistemas que é algo mais generalista Então a primeira dica que eu dou é essa você pode fazer ã seguir a carreira com estudo formal indo pra faculdade mas existem outras formas também de você aprender bancos de dados que inclusive podem ser complemento para para pro seu estudo lá na faculdade por exemplo você pode fazer cursos livres de bancos de dados existem escolas que que ofertam cursos eh na área de modelagem de dados na área de linguagem SQL ou
cursos para softwares específicos para produtos específicos como por exemplo softwares da Oracle Microsoft MySQL e assim sucessivamente Então você também pode seguir essa linha né fazendo cursos livres de bancos de dados por exempo para complementar sua faculdade de análise de sistemas ou outra área ou até para complementar a própria faculdade de tecn em bancos de dados porque e 2 anos e me é um período relativamente curto e tem muito mais coisa que você pode aprender para complementar legal eu não vou citar aqui no vídeo nomes de escolas né Por motivos óbvios Mas claro que eu
posso indicar o próprio canal da boson treinamentos que tem alguns cursos na área de bancos de dados modelagem de dados e alguns produtos específicos também Além disso você pode tirar certificações na área de bancos de dados tá as principais certificações dessa área são as da Microsoft e da Oracle Você pode tirar certificações Microsoft em SQL server por exemplo caso você vai trabalhar com esse produto e ou certificações Oracle como oca ou ocp primeiro Oca depois a ocp obviamente específica para produto da Oracle Oracle Database tá no caso da certificação Ela é atrelada claro ao produto
específico do fabricante Então você vai pra certificação geralmente depois que você já tem um certo conhecimento da da base de bancos de dados modelagem Talvez um pouquinho de SQL legal mas existem essas certificações Existem algumas outras de outros produtos também essas duas são Obviamente as mais procuradas e utilizadas no mercado e as que eu posso recomendar a princípio certo E falando em produtos Quais são os principais bancos de dados do mercado ou seja aqueles sistemas de gerenciamento de bancos de dados Nos quais você deveria se focar Tá ora qual data base que é o líder
de mercado no mundo ã Microsoft SQL server como acabei de citar existem outros como por exemplo MySQL banco de dados open source que é amplamente utilizado inclusive aqui no canal da bos a gente tem um curso completo de MySQL outros produtos interessantes para conhecer IBM db2 ã post GR SQL também bastante utilizado tá inclusive bancos de dados não relacionais interessante que você de agora em diante também se foque no aprendizado desse tipo de produto por exemplo mongo Debi tá que é um banco de dados não relacional que também é bastante utilizado e o uso vem
crescendo aí a cada ano bastante então é interessante conhecer saber quais são esses produtos tá para eventualmente você pegar uma linha e se aprofundar no uso daquele produto ã tirando os bancos de dados não relacionais os outros são todos relacionais tá E eles todos utilizam a linguagem SQL porém cada um deles tem um um flavor né um sabor diferente do SQL SQL padrão com um plus e depois de aprender o SQL padrão Eu recomendo que você escolha um desses bancos de dados e se aprofunde no que é específico dele Porque alguns comandos são diferentes do
Oracle pro MySQL pro SQL server pro db2 e assim por diante tá é importante que você se aprofunde num desses bancos de dados é possível conhecer mais de um desses produtos a fundo sim é possível mas isso demanda bastante tempo então é interessante que você escolha uma linha orc IBM Microsoft e siga essa linha para se aprofundar o máximo que você puder E aí a gente pode falar das profissões né Depois de você estudar e aprender ã o máximo possível sobre bancos de dados O que que você pode fazer profissionalmente o cargo mais comum tá
que você vai encontrar com mais frequência é o de dba Database administrator ou administrador de bancos de dados tá ã dá para falar muito sobre esse cargo mas não é o intuito desse vídeo é só dar uma uma direção para quem quer estudar Mas no geral o administrador do banco de dados é aquele cara que mantém e cuida de um banco de dados ou de um conjunto de bancos de dados dentro de uma organização tá eh e esse cuidado ele inclui fazer backup do banco de dados manter o banco de dados operacional trabalhar com apliação
n ã eventualmente fazer consultas ao banco de dados escrever códigos e assim por diante Então essa é a profissão mais comum na área de bancos de dados mas existem outras tá você pode ser por exemplo um projetista de bancos de dados aquele cara que vai efetuar A análise A modelagem e projetar o banco de dados para ser implementado na empresa Então você já precisa de um conjunto de Skills um pouquinho diferente do dba ã uma um outro cargo que você pode ter também é o de consultor de bancos de dados trabalhando de forma independente para
empresas variadas dando consultoria né não necessariamente projetando o banco de dados ou efetuando a manutenção di área mas dando consultoria em determinados aspectos do funcionamento do banco de dados tá por exemplo você pode sugerir a adoção de um determinado tipo de produto ou um determinado servidor tá ou uma determinada da técnica de backup por exemplo ã ao dar uma consultoria para uma empresa é uma uma ideia que você pode ter também a respeito de de profissões na área de bancos de dados você também pode ser um programador de bancos de dados escrevendo códigos específicos para
fazer consultas aprimoradas tá ã trabalhando com procedimentos armazenados triggers views e outras técnicas mais avançadas ou seja não é só montar o banco de dados e fazer inserção ou consultas básicas nas informações armazenadas mas também trabalhar de forma mais aprimorada então essa esse é um outro cargo que eventualmente Você pode ter em algumas empresas a gente sabe né esses cargos todos eles acabam se misturando na figura de um profissional só então é interessante conhecer pelo menos um pouco do que faz cada um desses profissionais certo bom e o que que você precisa estudar para isso
afinal de contas né Quais são os tópicos que você precisa estudar para eventualmente se tornar um profissional da área de bancos de dados bom eu vou elencar aqui alguns dos dos Tópicos que eu considero mais importantes primeiro deles é modelagem de dados a primeira coisa que você precisa aprender é como modelar um banco de dados a partir da necessidade de um cliente ou de uma empresa então o cliente a empresa precisa armazenar dados em algum lugar num banco de dados e esses dados eles têm que estar ordenados de uma forma coerente ou seja modelados então
o primeiro Skill né o primeiro conhecimento que você precisa adquirir é esse como modelar um banco de dados E aí na sequência Você precisa aprender como funciona os bancos de dados relacionais porque bem provavelmente a empresa empresas de pequeno e médio porte vão trabalhar com bancos de dados relacionais empresas de grande porte também tá mas eventualmente ã existem bancos de dados não relacionais que essas empresas podem utilizar Mas no geral bancos de dados relacionais são o padrão então é importante saber como funciona esse esquema de relacionamento tabelas entidades e assim por diante que no geral
você vai aprender quando tiver estudando A modelagem de dados mas você pode se aprofundar n no tópico posteriormente então saber como funciona um banco de dados relacional é de extrema importância e aí na sequência aprender a linguagem SQL padrão tá o ans SQL Então você tem que aprender como funcionam ã os principais comandos da linguagem SQL comandos para inserir dados criar tabelas criar views ã para Excluir dados fazer atualizações e principalmente fazer consultas ao banco de dados porque na maior parte do tempo o banco de dados recebe consultas tá e eventualmente inserção de dados e
às vezes exclusão ou atualização de dados mas o mais comum é você escrever consultas que às vezes podem ser complexas por isso é importante investir bastante no no estudo e no aprendizado da linguagem SQL tá SQL é é o coração do estudo de bancos de dados então importantíssimo esse conhecimento e aí Claro estudar as extensões do SQL que vão depender do produto de banco de dados que você escolheu para trabalhar então se você escolheu Oracle você vai estudar plsql se você escolheu Microsoft você vai estudar tsql transact SQL e assim por diante então aí você
vai entrar nas especificidades daquele produto de banco de dados daquele sistema de gerenciamento de banco de dados que você escolheu para se especializar E aí nesse nessa hora que você pode por exemplo eh pensar em tirar uma certificação daquele produto porque o processo de certificação vai fazer com que você aprenda muito a respeito daquele produto em particular bem a fundo tá até eventualmente conseguir passar na prova e se certificar certo então ah essa é uma etapa também bastante importante escolher o produto e estudar bem a fundo a linguagem SQL específica daquele produto muito importante também
é saber como trabalhar com backup Storage tá ou seja como fazer backup de um banco de dados e Como armazenar esses dados fisicamente seja num disco de um servidor local seja ã no Storage a parte seja no Storage de rede é importante ter esse tipo de conhecimento também tá por exemplo se você for ser um um Database administrator um dba é importante que você saiba como administrar ah os repositórios de dados que existem na empresa ou eventualmente na nuvem porque você também pode trabalhar com bancos de dados na nuvem então nessa hora é importantíssimo você
ter conhecimentos de backup ã e restore também do backup eventualmente se houver algum problema e trabalhar com os storages em geral tá E aí conforme você vai avançando nos seus estudos é interessante você começar a trabalhar a a estudar e para posteriormente trabalhar com bancos de dados distribuídos tá que aí já são bancos de dados de porte maior tá eventualmente para organizações grandes que possuem por exemplo filiais em locais separados diferentes ao redor do mundo e que tem bancos de dados que são acessados em todas essas filiais e compartilhados entre elas então a gente chama
isso de bancos de dados distribuídos assim a princípio eu vou gravar um vídeo posteriormente falando especificamente sobre como funciona os bancos de dados distribuídos pra gente se aprofundar nesse assunto mas já fica aqui registrado que esse é um tópico importante para você aprender né porque vai agregar bastante ao seu conhecimento e eventualmente a sua carreira e claro não podia deixar de ser você precisa conhecer bastante segurança de bancos de dados tá não adianta nada a gente armazenar dados seja no repositório local seja na nuvem principalmente se você não der atenção paraa segurança quem pode acessar
o que pode acessar o que pode ser feito quem não deve acessar o banco de dados e como implementar essas estratégias de segurança para evitar por exemplo vazamento de informações que a gente vê acontecer aí com frequência na mídia muitas vezes a gente vê aí notícias de bancos de dados que foram vazados e todas as informações de de clientes de usuários da empresa acabaram se tornando públicas a gente tem Tem que evitar isso a todo custo tá então investir no conhecimento de segurança da área de bancos de dados é de extrema importância também legal e
como que a gente estuda tudo isso né a gente tem já os tópicos que eu citei E como que eu faço para estudar Isso bom você pode fazer um curso como eu citei no começo do vídeo mas na prática você vai ter que instalar numa máquina ou sistema de gerenciamento de bancos de dados para poder treinar na prática porque banco de dados é como programação você só vai realmente aprender fazendo se você não treinar treinar treinar fazer fazer fazer você não vai aprender ler a teoria Apenas não vai ser suficiente porque você vai esquecer rapidamente
daquilo se não colocar em prática o que você tá estudando então você vai baixar um sistema de gerenciamento de bancos de dados de algum fabricante vai instalar no computador vai criar bancos de dados de exemplo tá E vai fazer operações de inserção atualização exclusão vai criar consultas vai testar essas consultas vai comparar performance entre as consultas legal vai simular problemas no banco de dados vai fazer backup vai fazer restore ou seja você vai fazer tudo que faria numa empresa no mundo real só que num ambiente simulado por exemplo usando uma máquina virtual né se você
não quiser bagunçar muito com com o seu computador mas é importantíssimo que você faça isso na prática e muitas vezes legal então a a repetição do que você conheceu do que você estudou na prática é que vai te levar ao conhecimento real e fixado sobre a teoria de bancos de dados e finalmente eu posso recomendar alguns livros que eu acho que são muito interessantes e muito bons para quem tá estudando ou quer aprender e ingressar na área de bancos de dados Existem algumas literaturas que são realmente muito boas tá no mercado na verdade existem muitas
literaturas na área de bancos de dados tá algumas são muito boas outras são boas e algumas são mais ou menos eu não vou citar o que eu não gosto eu vou mostrar apenas ã os livros que eu recomendo que geralmente são usados nas faculdades ou nos cursos livres Tá mas que você pode usar também para estudar por conta bom então o primeiro livro que eu vou citar é provavelmente um dos livros mais famosos da área de bancos de dados tá que é esse livro aqui Inclusive eu tenho ele aqui do meu lado deixa eu puxar
ele para cá chama-se introdução a sistemas de bancos de dados do CJ date que é esse carinha aqui ó tá eu tenho a sétima Edição ele deve est Na oitava edição agora então já tenho uma edição mais recente mas esse aqui é uma espécie de Bíblia dos bancos de dados um livro grande tá essa edição que eu tenho aqui tem quase 800 páginas Mas aqui tem Praticamente tudo que você precisa para aprender sobre bancos de dados relacionais é a teoria mesmo de modelagem de dados é a teoria de de banco de dados Nacional bancos de
dados distribuídos segurança em bancos de dados você vai encontrar tudo nesse livro aqui é um livro excelente tá cjd é um especialista em bancos de dados que tá há décadas aí no mercado escrevendo livros e dando consultoria Na área um outro livro também que é legal é esse daqui chama sistema no singular de bancos de dados tá eu tenho a terceira Edição se eu não me engano ele tá na sexta edição já o meu livro aqui já é velhinho tá ele é do zilber shats kth e sudarsan tá também é um livro grande também tem
aí quase 800 páginas de um tamanho um pouquinho Menor Mas ele também é muito bom para você aprender sobre a teoria de modelagem de de de dados bancos de dados relacionais segurança e assim por diante então o do CJ date eu gosto um pouco mais mas esse livro aqui também é muito bom são os que eu tenho aqui que eu utilizo para estudo outros livros também interessantes são o esq e teoria relacional também do CJ date que é um livro mais condensado mais resumido Talvez seja mais interessante para você ler a princípio antes de pular
pro pro livrão aqui para introdução a sistemas de bancos de dados é menorzinho é mais baratinho também né porque esses livros não são baratos você vai investir um certo dinheiro para adquiri-los tá então esse livro esse SQL teoria nacional é um livro que eu também recomendo para quem tá começando um outro livro que eu recomendo é o sistemas de bancos de dados sistemas no plural tá do elmas navat ã também deve estar na sexta edição que é um livro tão bom quanto esses que eu mostrei eventualmente se você encontrá-lo e tiver num preço bom vale
a pena adquirir tá é um livro muito completo esse Infelizmente eu não tenho aqui na minha coleção ã mas em algum momento devo arrumar por aí para para completar minha coleção de de livros de bancos de dados e um livro que eu recomendo especificamente para quem quer aprender a linguagem SQL chama-se aprendendo SQL dominando os fundamentos do bolier tá esse é um livro que se foca como o nome diz na linguagem SQL padrão sem entrar especificamente em produtos tá então se você já aprendeu toda a parte teórica tal e quer se focar no SQL esse
livro é bastante recomendado e claro quando você for trabalhar com os produtos específicos você vai querer eh livros da da do do sistema de gerenciamento de bancos de dados que você vai trabalhar e aí são vários né Não dá para citar aqui no vídeo especificamente qual eu recomendo para cada sistema tá mas eventualmente no nos cursos específicos que a gente tem aqui no canal eu vou falar a respeito da literatura recomendada para cada produto beleza pessoal então é isso nesse vídeo eu falei um pouquinho sobre como estudar bancos de dados eu dei umas diretrizes de
cursos que você pode pode procurar tanto cursos formais quanto cursos livres falei um pouco sobre livros né que você pode adquirir para estudar por conta ah mostrei alguns tópicos que são interessantes para você estudar e a ordem deles tá e falei um pouquinho também a respeito dos principais bancos do mercado tá Quais são os principais aí que você tem que se focar claro que se você for trabalhar numa empresa que utiliza um banco de dados diferente você vai ter que aprender a utilizar e trabalhar com aquele banco de dados legal falei também um pouquinho sobre
algumas das profissões assim de forma bem suscinta é mais para responder pergunta mesmo não é exatamente um vídeo é que vai entrar a fundo nessa ideia de bancos de dados legal uma introdução a como aprender bancos de dados E aí Claro siga aqui no canal da bos treinamentos os nossos cursos em vídeo de MySQL SQL server oraco Database modelagem de dados e outros mais que a gente vai postando aqui ao longo do do tempo OK ã além de finalizar o o nosso curso eu também vou apresentar alguns recursos extras para estudo Porque é importante que
você tenha várias fontes diferentes para poder complementar o seu estudo de um assunto Qualquer que seja incluindo modelagem de dados o nosso curso aqui do canal ele é bastante extenso eu procurei cobrir o máximo de assuntos e tópicos possíveis para modelagem de dados mas é óbvio que se você pesquisar a fundo você sempre vai encontrar alguma coisa a mais para complementar os seus estudos e eu vou mostrar então alguns recursos não tem muita coisa para mostrar aqui mas tem alguns recursos que podem ser interessantes para você cumprimentar o estudo revisar e até mesmo para ter
pontos de vista diferentes sobre as aplicações tecnológicas de modelagem eu vou começar falando sobre dois websites que eu vou recomendar só esses dois websites eu vou recomendar O primeiro é o site do macor é um site já relativamente antigo tem um monte de tutoriais nesse site tá de várias tecnologias diferentes é bem legal mesmo o povo ah provavelmente até já conhece esse site e ele tem uma página específica sobre modelagem de dados que é um resumo de modelagem então numa única página você vai encontrar informações sobre tabelas entidades relacionamentos sobre cardinalidade sobre normalização e etc
Além disso tem alguns exercícios no final da página que são bem interessantes então eu recomendo hã esse website também Recomendo o guia completo de modelagem de dados do Dev media Dev media também é um site bastante conhecido pelo pessoal que trabalha na área de desenvolvimento pelos estudantes da área de desenvolvimento também e eles têm um um um guia né uma certa quantidade de material ã relacionado à modelagem de dados bem completa e muito bem escrito algumas partes alguns dos artigos Provavelmente você você tem que pagar para poder acessar Mas de qualquer forma é bastante válido
então esses dois websites Eu recomendo Existem muitos outros tá mas depois de de de ter acompanhado o curso aqui da da bosson treinamentos em modelagem você já tá apto a olhar o material e verificar se esse material É adequado ou não em termos de websites além de websites em si existem cursos online que você pode fazer eu recomendo esse curso introduction to data modeling que é do edex EDX é o único material em inglês que eu vou recomendar Ah aqui do nesse nesse vídeo ah o link tá aqui é dex.org basta você escrever lá na
busca introduction data modeling é um curso bem legal vou até mostrar ele aqui para vocês é esse curso aqui é da Microsoft tá então ele é bem simples de acompanhar bem tranquilo é que diz que a duração dele é de 4 Semanas na verdade você faz a seu passo o curso se você não conhece o edex ainda esse site Eu recomendo que você procure se informar a respeito dele porque aqui você vai encontrar um um monte de cursos não só na área de tecnologia mas em várias áreas das ciências exatas humanas biológicas etc um site
muito legal eu mesmo já fiz um monte de cursos desse Website aqui esse curso aqui então de modelagem de dados da Microsoft aqui a gente tem uma descrição do curso do que você vai aprender o que você vai aprender ã se você fizer esse curso acompanhar o curso que é em vídeo então fundamentos de normalização bancos de dados transacionais desenvolver os modelos lógico e físico segurança privacidade ã quando modelar ah eh requerimentos de de performance do banco de dados e assim por diante tem bastante coisa interessante Dá até para você conseguir um certificado fazendo esse
curso só que para isso você precisa fazer algumas provinhas online e pagar uma taxa de $99 mas você não é obrigado a pagar essa taxa se quiser simplesmente acompanhar o curso para obter o conhecimento certo então esse aqui é um curso que eu recomendo Além disso na udem existem vários cursos de modelagem de dados eu não vou recomendar nenhum específico mas tem cursos muito B lá basta você escrever modelagem de dados na busca e pesis pela reputação os cursos eles são rados por reputação então dá você ver os cursos que o pesso gosta mais que
tem um melhor conteúdo e eventualmente você pode fazerum alguns desses cursos deve ter alguns cursos gratuitos lá a maioria paga mas as taxas do dem são bem baixas então também recomendo esse tipo de curso livros vou recomendar aqui cinco livros que são excelentes para você que tá estudando modelagem de dados e o primeiro livro não podia deixar de ser o CJ date introdução a sistemas de bancos de dados esse livro aqui ele é essencial para quem estuda bancos de dados ele aborda ã tanto teoria de bancos de dados relacionais quanto linguagem de consulta SQL quanto
a parte de modelagem de dados Ele é bem completo Então esse é um livro que eu acho imprescindível paraa biblioteca de quem trabalha ou estuda bancos de dados CJ date introdução a sistemas de bancos de dados eu vou inclusive fazer depois um vídeo específico falando só deste livro porque esse livro merece além dele existem alguns outros livros interessantes por exemplo sistemas de banco de dados do elmasri e navat a sexta edição Editora pearson lançada em português é um livro que também assim como o livro do date Ele é bem completo e traz informações não só
sobre linguagem SQL e teorias de bancos de dados mas também sobre a modelagem em si então tem capítulos específicos que tratam desses conceitos de modelo lógico físico normalização etc é um outro livro que eu recomendo e na mesma linha deste livro temos o sistema de banco de dados tá Cuidado para não confundir os livros um é sistemas e o outro é sistema sem o s no final esse livro do Silver shats sundan e cor espero ter pronunciado corretamente os nomes e a pegada é a mesma tá a pegada é a mesma eu tenho uma versão
um pouco mais antiga desse livro tá a versão que eu tô mostrando aqui a sexta mas eu tenho uma versão um pouco mais antiga e ele também assim como o livro anterior traz as informações sobre bancos de dados em geral e tem capítulos específicos que tratam de modelagem de dados Então esse livro também é recomendado um outro livro interessante modelagem conceitual e projeto de bancos de dados do Paulo Sérgio cougo é um livro Nacional Ah é um livro que eu recomendo também eu usei inclusive também esse livro em pesquisas usei todos eles na verdade mas
esse aqui é um livro interessante porque ele tem um custo relativamente mais baixo do que os outros livros e é fácil de encontrar então eu recomendo esse livro Ele trabalha basicamente com modelagem de dados é um livro inteiro sobre esse assunto então não são apenas alguns Capítulos que vão tratar de modelagem mas o livro todo inclusive ele tem projetos práticos lá dentro bem interessantes para você seguir tá para você se exercitar e finalmente o Peter Shen a gente falou sobre o Peter Shen nos primeiros vídeos do curso de modelagem e esse livro gerenciando bancos de
dados abordagem entidade relacionamento para projeto Lógico é um livro muito interessante apesar de relativamente antigo mas é uma literatura bem legal para você consultar Então esse livro do Peter Shen é bastante indicado Creio que não deva ser muito fácil encontrar esse livro atualmente mas se você procurar em cebos ou cebos virtuais você deve encontrá até por um preço aí bem razoável legal então esses cinco livros Eu recomendo para quem tá estudando não só modelagem de dados na verdade mas bancos de dados em geral muito bem gente Além disso recomendo a Playlist da bosson treinamentos em
tecnologia evidentemente Aqui tá o link para você acessar a Playlist inteira e uma coisa interessante é que muita gente manda mensagens perguntando qual é ordem dos vídeos Ah para assistir no curso de modelagem de dados US Ah não consigo encontrar a ordem como é que eu tenho que assistir esses vídeos gente na playlist Os vídeos estão todos em ordem vou mostrar para vocês aqui ó curso de modelagem de dados é só você entrar no canal da boson treinamentos procurar a Playlist a lista de reprodução e Os vídeos estão todos ordenados aqui do primeiro até o
último é só seguir a ordem tá começa com conceitos de bancos de dados e vai até projeto prático testes finais no banco de dados obviamente esse vídeo que você tá assistindo não tá na playlist ainda porque eu estou gravando vídeo ainda mas ele vai entrar na playlist assim que você entrar lá vai ter lá o vídeo número 35 São 35 vídeos falando sobre esse assunto mais ou menos metade deles é teoria e outra metade também é um projeto prático bom gente então é isso aí Espero que vocês tenham gostado desse curso espero que eu tenha
aproveitado bastante tá os conhecimentos que eu tentei passar para vocês lá no no blog da bos no treinamentos tem os códigos da implementação do banco de dados do projeto prático então você pode pegar os códigos lá e pode brincar com esses códigos pode alterar pode criar suas versões do projeto Essa é a ideia do estudo e espero que com isso você consiga aprender essa matéria que é muito importante é incrivelmente importante e às vezes é um pouco negligenciada por quem estuda bancos de dados ou até mesmo porque ensina infelizmente Então é isso aí pessoal espero
que vocês tenham gostado desse vídeo aproveitem para se inscrever aqui no canal da Boss no treinamento Se vocês não forem inscritos ainda e se já forem inscritos cliquem no Sininho aqui embaixo para ativar as notificações e assim serem avisados Quando tivermos conteúdo novo postado aqui no canal e se você quiser contribuir com a bosson treinamentos torne-se membro do nosso clube de canais temos o link aqui embaixo na descrição do vídeo e também o botão seja membro do YouTube com as instruções e não deixe de acessar o nosso Website www.bosontreinamentos.com.br além de nos seguir nas redes
sociais hein que estão aparecendo aqui em cima obrigado e até a próxima