2011-09-06 14 views
5

estoy leyendo un libro llamado "La biblioteca de MySQL desarrollador" de Paul Dubois y en el libro que dice:¿alguien puede explicarme qué claves principales realmente hacen?

CREATE TABLE score 
(
student_id INT UNSIGNED NOT NULL, 
event_id INT UNSIGNED NOT NULL, 
score INT NOT NULL, 
PRIMARY KEY (event_id, student_id), 
INDEX (student_id), 
FOREIGN KEY (event_id) REFERENCES grade_event (event_id), 
FOREIGN KEY (student_id) REFERENCES student (student_id) 
) ENGINE = InnoDB; 

Hicimos la combinación de las dos columnas de una clave principal. Esto asegura que no tendremos puntajes duplicados para un estudiante para una prueba o prueba determinada. Tenga en cuenta que es la combinación de event_id y student_id que es única. En la tabla de puntajes, ninguno de los valores es único por sí mismo. Habrá varias filas de puntuación para cada EVENT_ID valor (uno por estudiante), y varias filas para cada valor student_id (uno para cada prueba y prueba) por parte del alumno

Lo que no está claro para es la combinación de dos columnas como una clave principal ... Es decir, estoy teniendo dificultades para visualizar lo que realmente está sucediendo debajo del capó ... Está tomando una colección de números [95, 210] por ejemplo y usando eso como una "clave" ... ¿Es apropiado pensar en una clave principal como clave para un hash?

Anteriormente siempre pensé en las claves primarias como nada más que identificadores únicos para una tabla ... pero ahora, en este contexto, estoy descubriendo qué es realmente una clave principal. ¿Alguien puede darme las claves SQL más bajas?

Respuesta

1

Una clave principal es esencialmente una clave única con una restricción no nula. (como ya se ha mencionado, se utiliza para hacer cumplir la integridad referencial de sus datos)

Es simplemente un tipo diferente de clave principal:

clave clave sustituta/artificial = por lo general un número secuencial

http://en.wikipedia.org/wiki/Surrogate_key

clave natural = columna (s) que hacen la fila única

http://en.wikipedia.org/wiki/Natural_key

y aquí http://www.geeksengine.com/database/design/primary-key-constraint.php es una muy buena explicación de las diferencias.

3

Las "claves principales" son un concepto fundamental en las bases de datos relacionales. Son (debe ser) el método de identificar una fila en una tabla.

Las claves primarias son muy definitivamente no solo una "identificación única".

Y sí, una "clave principal" puede (y a menudo lo hará) contener más de una columna.

Aquí es un buen enlace en "muchos-a-muchos" tablas de relación:

http://www.tekstenuitleg.net/en/articles/software/database-design-tutorial/many-to-many.html

PS: Para responder a su pregunta específica:

  1. Su ejemplo, uno casi se ciertamente tienen al menos otras dos tablas: una para "estudiantes", otra para "eventos".

  2. En este ejemplo, la tabla "puntajes" representa los puntajes que obtuvo un alumno en particular en un evento en particular. La "clave primaria compuesta" consiste tanto en "identificación del estudiante" (una "clave externa" en la tabla "estudiante"), como en una "identificación del evento" (una clave externa en la tabla de eventos).

  3. Si todo lo que quería eran los puntajes, la tabla de "puntajes" sería suficiente.

  4. Si desea imprimir el nombre del estudiante, junto con su puntuación, sin embargo, que se necesita para "unirse" a la mesa de los estudiantes y la tabla de puntuaciones (hacen "combinación interna", una sobre "student_id")

  5. Del mismo modo, si desea imprimir el nombre o la ubicación del evento junto con los puntajes, probablemente necesite hacer una combinación interna de Partituras y eventos, en "event_id".

'Hope that helps!

2

Los valores en la clave principal le permiten identificar de forma única una sola fila de datos en la tabla en todo momento.

Si tiene varias claves candidatas, los valores correspondientes a cada clave candidata identifican de forma única una sola fila en la tabla en todo momento. Una de las claves candidatas se puede (puede) elegir como la "clave principal", pero la elección de la clave candidata que se debe presentar es en gran medida arbitraria. Los criterios están fuera del ámbito del modelo relacional de datos per se (típicamente, usted elige la clave más corta o la más utilizada).

Por lo tanto, la clave principal es el mecanismo de direccionamiento a nivel de tupla o nivel de fila para una tabla.

2

El punto de las claves es integridad de datos. La clave evita que cualquier usuario ingrese filas duplicadas: filas con el mismo conjunto de valores para los atributos clave. Esto garantiza que cada fila pueda identificarse de manera única y, por lo tanto, evita la redundancia, las anomalías y los resultados inccorect que podrían surgir de la duplicación de la información. Las claves implementan reglas comerciales, definen el significado de su tabla y protegen la integridad de sus datos.

En su ejemplo particular, si era posible ingresar varias filas por evento y estudiante, entonces un solo estudiante podría tener más de una calificación por evento. La clave implementa una regla que un estudiante puede tener solo un puntaje por evento.

Cuestiones relacionadas