sql-server - management - foreign key mysql ejemplo
¿Cuál es la diferencia entre restricciones primarias, únicas y de clave externa, e índices? (7)
¿Cuál es la diferencia entre foreign key constraints
primary
, unique
y de foreign key constraints
, e indexes
?
Trabajo en Oracle 10g
y SQL Server 2008
- Una clave principal es una columna o un conjunto de columnas que identifican de forma única una fila en una tabla. Una clave primaria debe ser corta, estable y simple. Una clave externa es una columna (o conjunto de columnas) en una segunda tabla cuyo valor se requiere para coincidir con el valor de la clave principal en la tabla original. Por lo general, una clave externa está en una tabla que es diferente de la tabla cuya clave principal debe coincidir. Una tabla puede tener múltiples claves externas.
- La clave principal no puede aceptar valores nulos. Las claves externas pueden aceptar múltiples.
- Solo podemos tener una clave primaria en una tabla. Podemos tener más de una clave externa en una tabla.
- De forma predeterminada, la clave principal es un índice agrupado y los datos en la tabla de la base de datos están organizados físicamente en la secuencia del índice agrupado. Las claves externas no crean automáticamente un índice, agrupado o no agrupado. Puede crear manualmente un índice en una clave externa.
1) Una primary key
es un conjunto de uno o más atributos que identifican de forma única la tupla dentro de la relación.
2) Una foreign key
es un conjunto de atributos de un esquema de relación que puede identificar de forma única las tuplas de otro esquema de relación.
Aquí hay algunas referencias para usted:
Restricción de clave primaria y externa.
Clave principal: una clave principal es un campo o combinación de campos que identifican de forma única un registro en una tabla, de modo que un registro individual se puede ubicar sin confusión.
Clave externa: una clave externa (a veces llamada clave de referencia) es una clave que se utiliza para vincular dos tablas. Normalmente, toma el campo de clave principal de una tabla y lo inserta en la otra tabla donde se convierte en una clave externa (sigue siendo una clave principal en la tabla original).
Index , por otro lado, es un atributo que puede aplicar en algunas columnas para que la recuperación de datos realizada en esas columnas pueda acelerarse.
Clave / índice: Una clave es un aspecto del diseño de una base de datos LÓGICA, un índice es un aspecto del diseño de una base de datos FÍSICA. Una clave corresponde a una restricción de integridad, un índice es una técnica de registro físico de valores que se puede aplicar de manera útil cuando se aplican esas restricciones.
Primario / extranjero: una clave "primaria" es un conjunto de atributos cuyos valores deben formar una combinación que sea única en toda la tabla. Puede haber más de uno de estos conjuntos (> 1 clave), y la palabra "principal" es un remanente de los días anteriores cuando el diseñador se vio obligado a elegir una de esas claves múltiples como "la más importante / relevante" . La razón de esto fue principalmente en combinación con claves externas:
Al igual que una clave "primaria", una clave "externa" también es un conjunto de atributos. Los valores de estos atributos deben formar una combinación que sea un valor de clave principal existente en la tabla a la que se hace referencia. No sé exactamente qué tan estricta aún se aplica esta regla en SQL hoy. La terminología se ha mantenido de todos modos.
Único: palabra clave utilizada para indicar que un índice no puede aceptar entradas duplicadas. Los índices únicos son, obviamente, un medio excelente para imponer claves primarias. En la medida en que la palabra ''único'' se usa en contextos de diseño LÓGICO, es superflua, descuidada, innecesaria y confusa. Las claves (claves primarias, es decir) son únicas por definición.
La clave principal evita principalmente la duplicación y muestra la singularidad de las columnas La clave externa muestra principalmente la relación en dos tablas
La clave principal y la clave única son restricciones de integridad de la entidad
La clave principal permite que cada fila de una tabla se identifique de forma única y garantiza que no existan filas duplicadas y que no se ingresen valores nulos.
La restricción de clave única se utiliza para evitar la duplicación de valores clave dentro de las filas de una tabla y permite valores nulos. (En Oráculo, un nulo no es igual a otro nulo).
- CLAVE o ÍNDICE se refiere a un índice no único normal. Se permiten valores no distintos para el índice, por lo que el índice puede contener filas con valores idénticos en todas las columnas del índice. Estos índices no imponen ninguna estructura en sus datos, por lo que se utilizan solo para acelerar las consultas.
- ÚNICO se refiere a un índice donde todas las filas del índice deben ser únicas. Es decir, la misma fila puede no tener valores no NULL idénticos para todas las columnas en este índice como otra fila. Además de ser utilizados para acelerar las consultas, los índices ÚNICOS se pueden usar para imponer una estructura en los datos, porque el sistema de base de datos no permite que esta regla de valores distintos se rompa al insertar o actualizar datos. Su sistema de base de datos puede permitir un índice ÚNICO en las columnas que permiten valores NULL, en cuyo caso se permite que dos filas sean idénticas si ambas contienen un valor NULL (NULL se considera que no es igual a sí mismo), aunque esto probablemente sea indeseable dependiendo de su solicitud.
- PRIMARY actúa exactamente como un índice UNIQUE, excepto que siempre se llama ''PRIMARY'', y puede que solo haya uno en una tabla (y siempre debería haber uno; aunque algunos sistemas de bases de datos no lo aplican). Un índice PRIMARIO está pensado para identificar de forma única cualquier fila de la tabla, por lo que no debe utilizarse en ninguna columna que permita valores NULL. Su índice PRIMARIO siempre debe estar en el menor número de columnas que sea suficiente para identificar de forma única una fila. A menudo, esto es solo una columna que contiene un número único de incremento automático, pero si hay algo más que pueda identificar de forma única una fila, como "código de país" en una lista de países, puede usar eso en su lugar.
- Los índices de FULLTEXT son diferentes a todos los anteriores y su comportamiento difiere más entre los sistemas de bases de datos. A diferencia de los tres anteriores, que son típicamente b-tree (que permite seleccionar, ordenar o rangos a partir de la columna más a la izquierda) o hash (que permite seleccionar a partir de la columna más a la izquierda), los índices de FULLTEXT solo son útiles para búsquedas de texto completo realizadas con Cláusula MATCH () / AGAINST ().
ver Diferencias entre ÍNDICE, PRIMARIO, ÚNICO, FULLTEXT en MySQL?
Clave principal: identifica de forma única cada fila que no puede ser nula. No puede ser un duplicado.
Clave externa: crear relación entre dos tablas. puede ser nulo puede ser un duplicado