Cómo utilizar una combinación interna para combinar tablas SQL para la programación css3 html5and

Como programador HTML5 y CSS3, puede utilizar combinaciones internas para combinar tablas SQL. Al normalizar las bases de datos, a menudo tiene sentido para dividirla en varias mesas. Echa un vistazo rápido a la héroe

mesa.

imagen0.jpg

Usted probablemente ha notado que la mayoría de la información de la misión se ha ido de esta tabla, excepto un campo importante. los missionID campo es un campo entero que contiene la clave principal de la misión mesa. LA clave externa Es un campo que contiene la clave primaria de otra tabla. Las claves externas se utilizan para volver a conectar las tablas que se han roto aparte por la normalización.

Mira la relación entre las tablas de la misión y héroe comienza a tener sentido.

image1.jpg

los misión tabla no tiene un enlace al héroe. No puede, porque cualquier misión se puede conectar a cualquier número de héroes, y no se puede tener un campo de la lista.

¿Cómo construir unen a un cartesiano y unirse a un interno

Compare el héroe y misión tablas, y ver cómo encajan entre sí. los missionID en el campo héroe tabla identifica que la misión del héroe está encendida. Ninguno de los datos de la misión actual se encuentra en el héroe campo, sólo un enlace al que la misión del jugador está en.

Creación de una consulta con las dos tablas es tentador. Esta consulta aparece para unirse a las mesas, pero es evidente que no está haciendo lo correcto. Usted tiene sólo tres héroes y dos misiones, sin embargo, esta consulta devuelve seis filas! ¿Qué ha pasado aquí se llama Cartesiano unirse. Es una combinación de todos los valores posibles de héroe y de la misión, que no es, obviamente, lo que quieres.

image2.jpg

Usted realmente no desea que todos estos valores para apariencias desea ver sólo aquellos en los que la héroe mesas missionID partidos hasta el missionID en el campo misión mesa. En otras palabras, usted quiere una consulta que sólo dice devuelve filas donde los dos valores de missionID son lo mismo.

Es casi idéntica a la última consulta, excepto que esta vez, un DÓNDE cláusula indica que la clave fundamental y primaria extranjera debe coincidir.

image3.jpg

Esta configuración particular (utilizando una referencia de clave externa para unirse dos tablas) se llama unir internamente. A veces, se ve la sintaxis como

SELECThero.name AS 'héroe', hero.missionID AS 'heroMID', mission.missionID AS 'missMID', mission.description AS 'mission'FROMhero INNER JOIN missionONhero.missionID = mission.missionID-

Algunas de las ofertas de bases de datos de Microsoft prefieren esta sintaxis, pero lo que realmente hace lo mismo: se unen dos tablas.

La aplicación de uno-a-muchas relaciones

Cada vez que su diagrama ER indica una relación de muchos a uno (o uno-a-muchos), por lo general utiliza una combinación interna. He aquí cómo se hace:

  1. Comience con el diagrama ER.

    De ninguna manera vas a hacerlo bien en tu cabeza! Hacer un diagrama. Utilice una herramienta como MySQL Workbench, algún otro software, lápiz y papel, lápiz labial en un espejo, lo que sea. Es necesario un boceto.

  2. Identifique uno-a-muchos.

    Puede que tenga que hablar con la gente que utiliza los datos para determinar qué relaciones son uno-a-muchos. En los datos de héroe, un héroe sólo puede tener una misión, pero cada misión puede tener muchos héroes. Por lo tanto, el héroe es el que muchos lados, y la misión es el uno de los lados.

  3. Encontrar la clave principal de la tabla uno y lo múltiple mesa.

    Cada tabla debe tener una clave primaria. (A veces se verá alternativas avanzadas como teclas multicampo, pero espera hasta que esté un poco más avanzada para esas cosas.)

  4. Hacer una referencia clave externa a la tabla de la una de la muchas tabla.

    Agregar un campo a la mesa en la que muchos lados de la relación que contiene sólo la clave de la tabla, por un lado.

    Usted no necesita una clave externa en la tabla, por un lado de la relación. Este concepto confunde la mayoría de los principiantes. Usted no necesita (o quiere) un enlace a los muchos mesa porque usted no sabe el número de enlaces que usted necesita. Múltiples enlaces serían un campo de la lista, que es exactamente lo que estás tratando de evitar.

Si los pasos anteriores son difíciles para que usted entienda, piense de nuevo al ejemplo héroe. Cada héroe (de acuerdo con las reglas de negocio) puede ser en una sola misión. Por lo tanto, tiene sentido poner un enlace a la misión en la tabla héroe porque sólo tiene una misión.

Cada misión puede estar relacionado con muchos héroes, así que si intenta vincular las misiones a los héroes, se han enumerado los campos de la tabla de la misión, la violación de la primera forma normal. El resultado de esta unirse parece mucho a la intención original de la base de datos, pero ahora es normalizado.

image4.jpg

Muchos programadores se confunden con este ejemplo, diciendo héroes se les debería permitir ir en múltiples misiones, o no son muy buenos héroes. Eso es un gran punto, y nos lleva a una de las cuestiones más importantes en el desarrollo de datos. El trabajo del programador de datos es reflejar las reglas de negocio en su lugar.

Las reglas de negocio en este ejemplo fueron deliberadamente formadas por simplificar explicar las cosas, por lo que tiene una regla de negocio en su lugar (una misión por el héroe) que puede no ser la mejor de un "salvar al mundo" perspectiva. Sin embargo, si esa es la regla de negocio que tienes, tu trabajo es ponerlo en práctica.

¿Cómo construir una visión para encapsular la unión

La consulta combinación interna es tan útil, que es un lugar excelente para una vista. A una vista se crea a partir de ella:

CREATE VIEW heroMissionView ASSELECThero.name AS 'héroe', mission.description AS 'misión', mission.villain AS 'villano', mission.plot AS 'héroe plot'FROM, missionWHEREhero.missionID = mission.missionID-

Tener una visión significa que usted no tiene que volver a crear la consulta cada vez. Usted puede tratar de la vista como una tabla virtual para nuevas consultas:

* SELECT FROM heroMissionView-



» » » » Cómo utilizar una combinación interna para combinar tablas SQL para la programación css3 html5and