Olá pessoal agora o nosso curso vai ficar legal agora nós vamos entrar em modelo relacional né cardinalidade um para um Então nós vamos tratar cada cardinalidade como uma etapa um para um um para n n para n vamos lá na um para um então o nosso objetivo agora pessoal é mapeos né o modelo conceitual para o nível lógico Beleza então nós temos aqui um relacionamento um para um aonde nós vamos ter né e a cardinalidade aqui ó uma pessoa pode estar relacionada a 0 um computador e um computador pode estar relacionado a zero uma pessoa
e nós temos aqui o relacionamento usa né pessoal então vamos lá qual é o primeiro passo as entidades né no nível lógico elas vão ser mapeadas para tabelas então a entidade pessoa virou a tabela pessoa né E os seus atributos vão virar colunas atributo identificador vai virar a chave primária beleza mesma coisa para computador computador a gente vai ter os atributos da entidade computador se transformando em Colunas da tabela computador e a entidade virou a tabela né pessoal a nossa questão é a seguinte agora como é que nós vamos dizer que uma determinada pessoa faz
uso de um determinado computador o nosso recurso utilizado aqui é chave estrangeira Olha o que que a gente faz pessoal a gente pega aqui ó a coluna código né que vem lá de computador e joga aqui olha o que que tá acontecendo Olha o que que eu tô dizendo a Ana usa o computador 1 a que é o quê que é um notebook da Apple o Beto usa o computador 2B que é um des top da Dell a Lia usa e o computador 3c que é um computador da IBM que é o desktop da IBM
e o Caio não usa computador Opa eu posso ter uma pessoa sem usar computador no modelo conceitual posso ó eu tô dizendo que uma pessoa usa zero ou um computador e um computador pode ser usado por zero ou uma pessoa Beleza então isso aqui ó eu tenho Caio sem usar computador Olha esse notebook aqui da HP 4D ó ele não aparece aqui Então na verdade esse notebook também não está sendo utilizado eu posso ter computador sem ser utilizado posso por Eu tenho um computador que está associado a zero ou uma pessoa então esse computador tá
dentro da nossa regra de negócio o Cairo também está dentro da nossa regra de negócio agora uma observação importante Isso aqui é uma chave estrangeira né ou seja qualquer valor existente aqui nessa coluna da chave estrangeira Obrigatoriamente tem que existir aqui na tabela referenciada Ou seja a chave estrangeira ela referencia a chave primária de uma tabela então esses valores para existirem aqui eles têm que existir aqui por que isso para eu ter certeza que a Ana tá recebendo o computador na base de dados que existe na tabela computador beleza isso é a restrição de integridade
referencial beleza eu poderia representar isso de outra forma sim tranquilamente ó o mesmo desenho só que em vez de criar o código em pessoa olha lá mesma coisa né pessoal entidade pessoa virou a tabela pessoa os atributos viraram colunas né atributo identificador chave primária computador a mesma coisa ó A Entidade idade computador virou tabela as os atributos viraram colunas né e agora pessoal ficamos aqui no impasse como é que vamos representar o usa nós podemos fazer isso também ó criar a coluna CPF em computador né e a partir daqui a gente dizer qual é a
pessoa que tá usando o computador não esqueçam que tem integridade eh a restrição de integridade referencial né Aonde esse CPF para aparecer ele tem que aparecer aqui na tabela pessoa ó mesma coisa notebook da Apple tá sendo utilizado pela Ana o desk top da Dell tá sendo utilizado pelo Beto e o desktop da IBM tá sendo utilizado pela Lia Opa o HP não tem usuário eu posso posso posso ter um computador sendo utilizado por zero pessoa e o Caio não usa computador porque ele não aparece aqui ó o 444 não aparece aqui posso ter pessoas
sem computador posso ó aqui no caso eu tenho uma pessoa que está relacionada a zero computadores beleza pessoal então nós vimos até agora que quando o relacionamento é opcional dos dois lados eu posso criar a chave estrangeira na tabela pessoa ou a chave estrangeira na tabela computador eu nunca vou criar nas duas beleza por quê Porque eu vou criar uma estrutura desnecessária né isso aí vai me custar processamento lá quando eu criar esse banco de dados lá no meu sgbd beleza então vou usar uma estrutura mínima que atenda a semântica requisitada beleza vamos para mais
um exemplo pessoal agora nós mudamos aqui a regra de negócio beleza Olha só agora o nosso relacionamento aqui a cardinalidade é um ou seja ele se tornou obrigatório então o computador só entra no sistema se ele tiver associado Obrigatoriamente a uma pessoa e a pessoa continua relacionada a z0 um computador Beleza então o que que vai acontecer modelo lógico pessoal o que que acontece entidade vira tabela atributos viram colunas atributo identificador vira chave primária entidade computador virou a tabela computador os atributos viraram colunas atributo identificador cod virou chave primária minha pergunta é a seguinte agora
existe um melhor local para eu colocar minha chave primária Opa vamos corrigir né pessoal minha chave estrangeira por quê Porque agora eu tenho uma peculiaridade Eu tenho um relacionamento obrigatório ali pessoal agora tem o melhor lugar para eu colocar é colocar o CPF aqui por quê porque olha só a pessoa ela entra associada a zero computador ou seja ela não precisa estar associada ao computador mas o computador só vai entrar se ele tiver associado no mínimo a uma pessoa se eu criar a chave estrangeira aqui e usar aquela restrição de nulidade que a gente aprendeu
restrição de vazio disser que esse campo aqui é note nul o que que vai acontecer eu vou garantir que todo registro que entra aqui ele tenha um CPF associado Ou seja eu disse que esse campo é note nul então automaticamente eu já tô garantindo essa regra aqui essa cardinalidade mínima um e não esqueçam que tem a restrição de integridade referencial ou seja esse campo para existir aqui Obrigatoriamente Tem que existir na chave primária da tabela referenciada olha como é que ficou legal pessoal esse campon note nu então qualquer computador que entre ele vai ter que
ter um CPF e a minha restrição de integridade referencial que é a chave estrangeira né ela eh garante que para entrar aqui esse valor tem que existir aqui isso aí já vai ser garantido automaticamente pelo teu sgbd beleza nós vamos ver como fazer isso lá no modelo físico beleza é só você criar determinadas cláusulas lá SQL que ele já faz isso automaticamente Beleza então nesse caso aqui a gente tem a melhor solução ó o Caio Continua sem estar associado a computador ó o Caio né uma pessoa pode tá associada a zero computador agora não tem
nenhum computador aqui sem estar associado a uma pessoa por quê Porque a cardinalidade mínima é um beleza tranquilo agora a gente viu que tinha um melhor lugar para colocar né a a nossa chave estrangeira uma outra solução pessoal quando a nossa cardinalidade mínima é um Ou seja a nossa cardinalidade máxima é um para um e pelo menos um dos dois lados do relacionamento né da cardinalidade do relacionamento é obrigatório sabe o que que a gente faz modelo lógico a gente faz a fusão de tabelas é fusão de tabelas Aqui passa a se chamar pessoa computador
eu tenho todos os atributos de pessoa ó CPF nome sexo eh e de computador né po todos os atributos de pessoa CPF nome sexo e de computador ó código modelo e marca e aqui pessoal a chave primária vai ser quem sempre aparece quem é que sempre aparece a pessoa porque a pessoa pode existir mesmo tando associada zero computadores tá aqui ó essa linha aqui ó o Caio não está associado a computador e sempre que a pessoa tiver associada ao computador ó vai aparecer com completinho aqui então a chave primária dessa tabela que é o resultado
da fusão ela vai ser representada né pelo CPF então a chave primária aqui vai ser o CPF beleza tranquilo facinho né pessoal entendeu que a gente mudou aqui né lá era 01 01 aqui não aqui a gente tem um pelo menos um dos dois lados como relacionamento obrigatório Ou seja a participação eh de computador é total ou seja para o computador entrar ele tem que tá associado a uma pessoa então a pessoa sempre vai existir beleza vamos ver mais alguns casos aqui pessoal ó agora a gente mudou o lado da obrigatoriedade colocou aqui no computador
então vamos vamos para o nível Lógico né aquela introdução Zinha entidade vira tabela e atributos viram e colunas atributo identificador vira chave primária mesma coisa para computador né pessoal Qual é o melhor lugar para botar chave estrangeira agora chave estrangeira sabendo que computador é obrigatório Opa agora o melhor lugar para colocar a chave estrangeira é onde em pessoa por quê eu digo que esse campo é obrigatório raciocínio aí ó se eu disser que esse campo é obrigatório eu garanto que qualquer pessoa para entrar aqui ela terá que ter um cod ou seja não vou ter
pessoa sem estar associada a computador por outro lado o meu computador olha aqui o 4D ó o 4D não tem pessoa usando ele pode isso meu modelo permite permite ó eu posso ter um computador associado a zero pessoas Beleza então aqui tá refletindo essa regra de negócio não esqueçam que toda chave estrangeira ela tem a restrição de integridade referencial ou seja essa coluna aqui para ter um campo esse campo tem que ser válido e para ele ser válido o teu sgbd vai garantir a existência dele na chave primária da tabela referenciada beleza tranquilo facinho né
pessoal isso aí é muito fácil muito fácil mesmo beleza entenderam aí vamos passar pro próximo exemplo vamos lá pessoal continuando se eu tenho pelo menos um dos dois lados obrigatório o que que eu posso fazer que a gente viu no caso anterior pessoal tô escut and daqui fusão fusão É isso mesmo é fusão ou seja agora ó eu tenho aqui ó pessoa computador eu poderia chamar computador pessoa né tanto faz né pessoal o nome aí na verdade a gente vai chamar de um nome qualquer aí né só que agora pessoal Olha só eu tenho os
códigos ó a ordem das colunas não importa não tá pessoal isso aí é só uma maneira da gente falar mas olha só é a o o que importa pra gente aqui é que a chave primária agora aqui é o quê é o cod do computador olha olha os os atributos aqui ó cod modelo e marca CPF nome sexo olha aqui a chave primária é código por nesse caso aqui quem é que sempre vai aparecer é o computador porque o computador pode entrar mesmo não estando associado à pessoa Beleza então quando sempre aparecia a pessoa o
que que acontecia a chave primária era CPF agora eu garanto a a a existência sempre de um computador no registro lá no meu banco de dados eu posso fazer a fusão ou seja todo computador quando entrar eh ele vai quer dizer qualquer registro que entrar na minha base de dados vai ter que ter um computador agora a pessoa é opcional porque o computador ele entra Mesmo não tendo uma pessoa associada agora a pessoa para entrar Obrigatoriamente ela terá um computador associado Beleza então foi só inverter aquela regra né pessoal lá o relacionamento era obrigatório a
pessoa tinha participação total agora é o computador ó lembre-se disse participação total é o seguinte toda pessoa que entra na minha base de dados Obrigatoriamente tem que estar associado ao computador e o computador não necessariamente a participação parcial ou seja seja eu tenho computador mesmo que não esteja associado à pessoa que tá aqui ó Beleza então lembrem-se disso aqui é um grande bizu beleza vamos lá vamos ver mais um exemplo diferente aqui agora pessoal a figura mudou agora a gente tá botando ele obrigatório dos dois lados então aqui pessoal não tem nem que raciocinar com
chave estrangeira vamos pra fusão direto ó poder usar chave estrangeira pode mas a gente tá aqui atrás da melhor solução Vamos criar logo o quê a fusão aí aqui a gente encontra um probleminha o os alunos às vezes se confundem olha só a a grande ideia pessoal Peguei todos os atributos CPF nome sex cod modelo e marca e joguei aqui minha fusão a minha tabela resultante é a pessoa computador beleza e aqui pessoal o que que vai acontecer para uma pessoa entrar Obrigatoriamente ela tem que est associada a um computador por outro lado para um
computador entrar Obrigatoriamente tem que tá associado a uma pessoa ou seja eu sempre vou ter todas as colunas dessa minha fusão de tabelas né dessa minha tabela que é o resultado da fusão das entidades vamos falar assim beleza aí pessoal normalmente o pessoal o o pessoal que tá começando a modelar se entusiasma e diz o seguinte eu sempre vou ter pessoas e sempre vou ter computador então a minha chave primária vai ser composta pelo CPF e cod pessoal isso é um grande erro não pode porque se eu escolher o CPF e o cod paraa chave
primária eu estou acabando com uma das propriedades da chave primária que é a irredutibilidade por qu como a pessoa só aparece uma vez e o computador só aparece uma vez eu vou ter eh como chave primária o CPF ou o Code mas não os dois juntos por quê Porque basta o CPF para ser chave primária ou bast o Code Beleza então os dois não podem ser chave primária junto aqui porque eu estaria usando um campo desnecessário para minha chave primária beleza isso é importante entender então Olha só vamos aproveitar usar aqueles conceitos de chave primária
é chave alternativa e chave candidata então ó CPF e código são Chaves candidatas se eu eleger eh eleger né a o CPF paraa chave primária esse cara aqui passa a ser chave eh alternada ou alternativa o outro caso os dois são Chaves candidatas se eu escolhesse né o código para chave primária o CPF seria a chave alternada ou alternativa Beleza então nos dois casos a semântica será mantida beleza porque aqui a gente vai ter essa peculiaridade não esqueçam da irredutibilidade da chave primária beleza pessoal com isso a gente fecha aqui eh o relacionamento um para
um e vamos partir no próximo bloco para a cardinalidade né um para n grande abraço a todos aí nos vemos no próximo bloco