Como usar uma junção interna para combinar tabelas sql para programação html5and css3

Como um programador de HTML5 e CSS3, você pode usar associações internas para combinar tabelas SQL. Quando você normalizar as bases de dados, que muitas vezes faz sentido dividi-lo em várias mesas. Dê uma olhada rápida no herói

mesa.

Você deve ter notado que a maioria das informações missão é ido agora a partir desta tabela, com exceção de um importante campo. o missionID campo é um campo inteiro que contém a chave primária do missão mesa. UMA chave estrangeira é um campo que contém a chave primária de outra tabela. As chaves estrangeiras são usados ​​para reconectar tabelas que foram quebrados em pedaços pela normalização.

Olhar para a relação entre as tabelas de missão e herói começa a fazer sentido.

Video: Tabela Dinâmica - Conectar Duas Tabelas Com Segmentação de Dados

o missão tabela não tem um link para o herói. Ele não pode, porque qualquer missão pode ser conectado a qualquer número de heróis, e você não pode ter um campo listado.

Como construir uma junção cartesiana e uma junção interna

Compare o herói e missão tabelas, e você ver como eles se encaixam. o missionID campo no herói tabela identifica qual missão o herói está ligado. Nenhum dos dados missão real é na herói campo, apenas um link para o qual missão o jogador está ligado.

Video: Video97 - Parte 01 - Unir tabelas com INNER JOIN em consulta Excel /Access

Criando uma consulta com ambas as tabelas é tentador. Esta consulta aparece para unir as tabelas, mas, obviamente, não está fazendo a coisa certa. Você tem apenas três heróis e duas missões, no entanto, esta consulta retorna seis linhas! O que aconteceu aqui é chamado de Junção cartesiana. É uma combinação de todos os valores possíveis de herói e missão, que obviamente não é o que você quer.

Você realmente não quero todos esses valores para aparecimentos você quiser ver apenas aqueles onde o herói mesa de missionID combina-se com a missionID campo no missão mesa. Em outras palavras, você quer uma consulta que diz que só retornar as linhas onde os dois valores de missionID são os mesmos.

É quase idêntico ao da última consulta, só que desta vez, um ONDE cláusula indica que a chave fundamental e primário estrangeira deve corresponder-se.

Esta configuração particular (usando uma referência de chave estrangeira para se juntar duas mesas) é chamado de junção interna. Às vezes, você vê a sintaxe como

SELECThero.name AS `herói`, hero.missionID AS `heroMID`, mission.missionID AS `missMID`, mission.description AS `mission`FROMhero INNER JOIN missionONhero.missionID = mission.missionID-

Algumas das ofertas de banco de dados da Microsoft preferem essa sintaxe, mas realmente faz a mesma coisa: junte-se duas tabelas.

Impondo um-para-muitos relacionamentos

Sempre que o seu diagrama ER indica um relacionamento muitos-para-um (ou um-para-muitos), você geralmente usam uma junção interna. Veja como fazer isso:

  1. Comece com o diagrama ER.



    Nenhuma maneira que você está indo para obter este direito na sua cabeça! Faça um diagrama. Use uma ferramenta como o MySQL Workbench, algum outro software, papel e lápis, batom em um espelho, o que for. Você precisa de um esboço.

  2. Identificar relações um-para-muitos.

    Você pode ter que falar com as pessoas que usam os dados para determinar quais as relações são um-para-muitos. Nos dados herói, um herói pode ter apenas uma missão, mas cada missão pode ter muitos heróis. Assim, o herói é o lado muitos, e a missão é a de lado.

  3. Encontrar a chave primária de uma tabela de ea tabela muitos.

    Cada tabela deve ter uma chave primária. (Às vezes você verá alternativas avançadas como chaves com diversos campos, mas espere até que você esteja um pouco mais avançado para essas coisas.)

  4. Fazer uma referência de chave estrangeira a uma tabela de na tabela Muitos.

    Adicionar um campo para a mesa do lado muitos da relação que contém somente a chave para a mesa de um lado.

    Você não precisa de uma chave estrangeira na tabela de um lado da relação. Este conceito confunde a maioria dos iniciantes. Você não precisa (ou quer) um link para muitos tabela porque você não sabe quantos links você vai precisar. Vários links seria um campo listado, que é exatamente o que você está tentando evitar.

Se os passos anteriores são difíceis para você compreender, pensar de volta para o exemplo herói. Cada herói (de acordo com as regras de negócio) pode estar apenas em uma missão. Assim, faz sentido colocar um link para a missão na tabela de herói, porque você tem apenas uma missão.

Cada missão pode estar relacionado com muitos heróis, por isso, se você tenta vincular missões para heróis, você listou campos na tabela de missão, violando a primeira forma normal. O resultado desta juntar-se parece muito com a intenção original do banco de dados, mas agora é normalizado.

Muitos programadores ficar confuso com este exemplo, dizendo heróis devem ser autorizados a ir em várias missões, ou eles não são muito bons heróis. Isso é um grande ponto, e traz-se uma das questões mais importantes no desenvolvimento de dados. O trabalho do programador de dados é refletir as regras de negócio no lugar.

As regras de negócios neste exemplo foram deliberadamente fez-se para simplificar explicar as coisas, então você tem uma regra de negócio no lugar (uma missão per herói) que pode não ser o melhor de um “salvar o mundo” perspectiva. No entanto, se essa é a regra de negócio que você tem, seu trabalho é para implementá-lo.

Como construir uma visão para encapsular a juntar-se

A consulta junção interna é tão útil, é um lugar dandy para uma visão. A vista para ser criado a partir dele:

CREATE VIEW heroMissionView ASSELECThero.name AS `herói`, mission.description AS `missão`, mission.villain AS `vilão`, mission.plot AS `herói plot`FROM, missionWHEREhero.missionID = mission.missionID-

Ter uma visão significa que você não tem que re-criar a consulta de cada vez. Você pode tratar a vista como uma tabela virtual para novas consultas:

* SELECT FROM heroMissionView-

Publicações relacionadas