Estoy muy confundido entre estos dos. ¿Son iguales o diferentes? Algunos libros o personas dicen que son iguales y otros dicen que son diferentes. Intenté pero no encontré ninguna respuesta auténtica.
Por favor, chicos, resuélvanlo.¿Cuál es la diferencia entre la clave externa y la clave de referencia?
Respuesta
"Clave de referencia" no es un término técnico normal en el modelado relacional o en la implementación de SQL en inglés estadounidense.
Una clave externa "referencia" una clave en alguna otra tabla; ¿podría ser ahí de donde proviene la confusión?
En realidad, no llamar a algo una clave referencia ... Ellos son la misma cosa ... es posible que aparezca la palabra referencias utilizado por ejemplo en sqlite: es posible utilizar la sintaxis como esta para iniciar una db de autores y libros. Esto le permite mostrar que un autor puede tener muchos libros. Esto le dice al PP que el books.author_id
(define un par de líneas arriba) hace referencia a author.id
CREATE TABLE 'author' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
firstname varchar(255)
lastname varchar(255)
);
CREATE TABLE 'books' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
author_id INTEGER,
title varchar(255),
published date,
FOREIGN KEY(author_id) REFERENCES author(id)
);
Tal vez usted está usando la "clave de referencia" término algo vagamente?
Se dice que un valor de clave foránea en una fila "hace referencia" a la fila que contiene el valor de clave correspondiente. Tenga en cuenta que la palabra "referencia" en la oración anterior es un verbo, por lo que podemos decir que tenemos un valor de referencia de clave externa y un valor de clave referenciado.
Aunque se hace referencia a los valores clave, en lugar de la restricción de la clave de tabla, supongo que, en términos generales, podríamos decir "clave referenciada" para referirnos a las filas que comprenden los valores a los que potencialmente se puede hacer referencia. Luego veo cómo "clave referenciada" podría convertirse en "clave referenciada" pero no desmentir su origen.
Supongo que está hablando de usar el REFERENCES
donde no se usa la palabra clave FOREIGN KEY
, por ej.
author_id INTEGER REFERENCES author(id)
... en lugar de ...
author_id INTEGER,
FOREIGN KEY(author_id) REFERENCES author(id)
La respuesta es, que es simplemente la sintaxis abreviada de la misma cosa. La principal preocupación cuando se modifica entre los dos debería ser la legibilidad.
Una clave externa "referencia" una clave en alguna otra tabla. Esa clave en otra tabla se llama clave referenciada. Es probable que escuche mucho sobre esto si usa la función Gráfico en phpmyadmin.
Hay 2 formas de declarar una clave externa (s):
si la clave externa es un atributo INDIVIDUAL:
Referencias()si las claves externas son una lista de atributos
FOREIGN KEY() REFERENCIAS
La única y más importante diferencia entre las dos palabras clave 'FOREIGN KEY' y 'REFERENCES' es que ambas hacen que los datos sean datos secundarios de la tabla padre, la "FOREIGN KEY" se usa para crear un nivel de tabla restricción, mientras que la palabra clave REFERENCES se puede usar para crear una restricción de nivel de columna solamente. Las restricciones de nivel de columna solo se pueden crear al crear la tabla solamente. Pero las restricciones a nivel de tabla se pueden agregar usando el comando ALTER TABLE.
Una clave externa debe hacer referencia a una clave principal. Al usar la restricción REFERENCES simplemente, no es necesario que la clave referenciada sea una clave principal.
- 1. ¿Cuál es la diferencia entre cheque y clave externa?
- 2. ¿Cuál es la diferencia entre la clave candidata y la clave compuesta?
- 3. ¿Cuál es la diferencia entre la clave principal y la restricción de clave única?
- 4. sqlalchemy: ¿cuál es la diferencia entre declarar la cascada dentro de la relación de clave externa?
- 5. ¿Cuál es la diferencia entre las restricciones primarias, únicas y de clave externa, y los índices?
- 6. diferencias entre "clave externa" y "restricción de clave externa"
- 7. ¿Cuál es la diferencia entre "palabra clave" y "palabra reservada"?
- 8. Diferencia entre la clave principal, la clave única y la clave candidata
- 9. ¿Cuál es la diferencia entre una clave principal e identidad?
- 10. Clave externa para la clave compuesta
- 11. clave externa cakephp no la clave primaria
- 12. ¿cuál es la diferencia entre la tecla individual y la ruta clave?
- 13. ¿Cuál es la diferencia entre los parámetros de cierre y la palabra clave 'uso'?
- 14. Clave primaria compuesta, clave externa. ¿Referencia a objeto o clave?
- 15. Diferencia entre restricción de clave externa y referencias en Rails
- 16. ¿Cuál es la diferencia entre la anulación y las nuevas palabras clave en C#?
- 17. ¿Cuál es la diferencia entre una referencia __weak y __block?
- 18. Referencia de clave externa a la tabla en otro esquema
- 19. Diferencia entre la palabra clave superior y la clave de límite en SQL
- 20. diferencia entre la palabra clave var y sin var
- 21. Cuál es la diferencia b/w Clave principal y clave única
- 22. ¿Cuál es la diferencia entre el encasillamiento normal y el uso de “palabras clave como”
- 23. ¿Cuál es la diferencia entre los argumentos con valores predeterminados y argumentos de palabras clave?
- 24. Cuál es la diferencia entre las palabras clave de Sunspot y el texto completo
- 25. En una base de datos, ¿cuál es la diferencia entre una clave y un índice?
- 26. ¿Cuál es la diferencia entre la clasificación externa y la clasificación interna?
- 27. ¿Cuál es la diferencia entre dynamic (C# 4) y var?
- 28. En Google App Engine, ¿cuál es la diferencia entre Model.get (clave) y Model.get_by_key_name (key_names)?
- 29. ¿Cuál es la diferencia clave entre una compilación 'Debug' y 'Release' en .NET?
- 30. ¿Cuál es la diferencia entre Session.Add ("clave", valor) y Session ["key"] = value?
Aunque la primera funcionará sin habilitar las claves externas y la segunda no. ¿La segunda forma ya no se usa? – schwiz
También importa si intenta usar ingeniería inversa para crear diagramas desde su base de datos en MySQL Workbench. Si usó la primera opción al crear su base de datos, la herramienta no podrá crear conexiones entre los elementos del diagrama. –