Comment utiliser une jointure interne pour combiner les tables sql pour la programmation html5and css3

En tant que programmeur HTML5 et CSS3, vous pouvez utiliser les jointures internes pour combiner les tables SQL. Lorsque vous normalisez les bases de données, il est souvent préférable de la diviser en plusieurs tables. Jetez un coup d`oeil à la héros table.

Vous avez sans doute remarqué que la plupart des informations de la mission est maintenant passée de ce tableau, à l`exception d`un domaine important. le missionID champ est un champ entier qui contient la clé primaire de la mission table. UNE clé étrangère est un champ qui contient la clé primaire d`une autre table. Les clés étrangères sont utilisées pour reconnecter les tables qui ont été par la normalisation écorchée.

Regardez les relations entre les tables de mission et héros commence à faire sens.

le mission table n`a pas un lien vers le héros. Il ne peut pas, parce que toute mission peut être connecté à un certain nombre de héros, et vous ne pouvez pas avoir un champ de la liste.

Comment construire une jointure cartésienne et une jointure interne

Comparez la héros et mission tables, et vous voyez comment ils se ensemble. le missionID champ dans la héros tableau identifie la mission du héros est. Aucune des données de la mission réelle est dans la héros champ, juste un lien vers quelle mission le joueur est.

Création d`une requête avec les deux tables est tentant. Cette requête semble rejoindre les tables, mais il est évidemment pas fait la bonne chose. Vous avez seulement trois héros et deux missions, mais cette requête retourne six rangs! Ce qui est arrivé ici est appelé rejoindre cartésien. Il est une combinaison de toutes les valeurs possibles de héros et de la mission, ce qui est évidemment pas ce que vous voulez.

Vous ne voulez pas vraiment toutes ces valeurs que vous voulez voir apparences que ceux où la héros les tables missionID correspond à la missionID champ dans la mission table. En d`autres termes, vous voulez une requête qui dit revenir uniquement les lignes où les deux valeurs de missionID sont identiques.

Il est presque identique à la dernière requête, sauf que cette fois, un clause indique que la clé et la clé primaire étrangère doit correspondre.

Cette configuration particulière (en utilisant une référence clé étrangère à joindre deux tables) est appelée jointure interne. Parfois, vous voyez la syntaxe comme

`Héros` SELECThero.name AS, hero.missionID AS `heroMID`, mission.missionID AS `missMID`, mission.description AS « mission`FROMhero INNER JOIN missionONhero.missionID = mission.missionID-

Certaines des offres de base de données de Microsoft préfèrent cette syntaxe, mais il fait vraiment la même chose: se rejoignent deux tables.

Faire respecter un à plusieurs relations

Chaque fois que votre diagramme ER indique un nombre à un (ou un à plusieurs) relation, vous utilisez généralement une jointure interne. Voici comment faire:

  1. Commencez par le diagramme ER.

    Aucun moyen que vous allez obtenir ce droit dans votre tête! Faire un diagramme. Utilisez un outil comme MySQL Workbench, un autre logiciel, crayon et du papier, rouge à lèvres sur un miroir, peu importe. Vous avez besoin d`un croquis.

  2. Identifier un à plusieurs.

    Vous pourriez avoir à parler avec des gens qui utilisent les données pour déterminer les relations sont un à plusieurs. Dans les données de héros, un héros ne peut avoir qu`une seule mission, mais chaque mission peut avoir de nombreux héros. Ainsi, le héros est le nombre côté, et la mission est d`un côté.

  3. Trouver la clé primaire de la table et une des nombreuses table.

    Chaque table doit avoir une clé primaire. (Vous verrez parfois des alternatives avancées telles que les clés multichamps, mais attendez jusqu`à ce que vous êtes un peu plus avancé pour ce genre de choses.)

  4. Faire une référence clé étrangère à une table dans la table n.

    Video: Tutoriel Mysql - Les jointures MySQL

    Ajouter un champ à la table située à l`extrémité de la relation qui ne contient que la clé de la table sur un côté.

    Vous n`avez pas besoin d`une clé étrangère dans la table d`un côté de la relation. Ce concept embrouille la plupart des débutants. Vous n`avez pas besoin (ou si vous voulez) un lien vers la table n parce que vous ne savez pas combien de liens que vous aurez besoin. Des liens multiples seraient un champ répertorié, ce qui est exactement ce que vous essayez d`éviter.

Si les étapes précédentes sont difficiles à comprendre pour vous, pensez à l`exemple de héros. Chaque héros (selon les règles métier) peut être sur une seule mission. Ainsi, il est logique de mettre un lien vers la mission dans le tableau de héros parce que vous avez une seule mission.

Chaque mission peut être liée à de nombreux héros, donc si vous essayez de relier les missions aux héros, vous avez la liste des champs dans la table de mission, il ne respecte pas la première forme normale. Le résultat de cette jointure ressemble beaucoup à l`intention originale de la base de données, mais il est maintenant normalisé.

De nombreux programmeurs se confondre avec cet exemple, en disant héros devraient être autorisés à se rendre sur plusieurs missions, ou ils ne sont pas très bons héros. C`est un excellent point, et il apporte un des problèmes les plus importants dans le développement des données. Le travail du programmeur de données est de tenir compte des règles de gestion en place.

Les règles métier dans cet exemple ont été faites délibérément à simplifier les choses à expliquer, si vous avez une règle métier en place (une mission par héros) qui ne peut pas être la meilleure du point de vue « sauver le monde ». Cependant, si c`est la règle d`entreprise que vous avez, votre travail consiste à mettre en œuvre.

Comment construire une vue d`encapsuler la jointure

La requête jointure interne est si utile, il est un endroit dandy pour une vue. Une vue d`être créée à partir de ce:

CREATE VIEW heroMissionView ASSELECThero.name AS `héros`, mission.description AS `mission`, mission.villain AS `méchant`, mission.plot AS « héros plot`FROM, missionWHEREhero.missionID = mission.missionID-

Avoir une vue signifie que vous ne devez pas recréer la requête à chaque fois. Vous pouvez traiter la vue comme une table virtuelle pour de nouvelles requêtes:

SELECT * FROM heroMissionView-
Articles connexes