Tengo 2 tablas, User
y Employee
. Cada usuario recibe un User_ID
y esa es una clave principal en la tabla User
y una clave externa en la tabla Employee
. ¿Puede ese atributo en la tabla Employee
ser también una clave principal?¿Puede un atributo de base de datos ser clave primaria y extranjera?
Respuesta
Si tiene una relación uno a uno entre dos tablas, la clave principal de la tabla de detalles también es una clave externa.
master detail (1 : 1)
+----------+ 1:1 +-------------+
| PK id |<---o| PK FK id |
+----------+ +-------------+
| col1 | | col1 |
| col2 | | col2 |
| etc. | | etc. |
+----------+ +-------------+
Si usted tiene una relación-m-an, la tabla de unión tiene columnas relacionadas con las dos claves principales de la m y la N-mesas. Estas columnas son claves primarias y claves foráneas al mismo tiempo.
m : n
m_table junction
+----------+ 1:m +------------+ n_table
| PK id1 |<---o| PK FK1 id1 | n:1 +----------+
+----------+ | PK FK2 id2 |o--->| PK id2 |
| col1 | +------------+ +----------+
| col2 | | | | col1 |
| etc. | +------------+ | etc. |
+----------+ +----------+
Tenga en cuenta que con esta construcción, un registro de una tabla sólo puede estar vinculado a un registro específico de la otra mesa una vez, ya que cada clave primaria compuesta de la tabla de unión debe ser único. Si desea permitir que los emparejamientos no únicos, definir una tecla separada primaria en la tabla de unión:
m : n
junction
+---------+
m_table | PK id |
+----------+ 1:m +---------+ n_table
| PK id1 |<---o| FK1 id1 | n:1 +----------+
+----------+ | FK2 id2 |o--->| PK id2 |
| col1 | | | +----------+
| col2 | +---------+ | col1 |
| etc. | | etc. |
+----------+ +----------+
En este caso, la clave principal y restricciones de clave externa se establecen en diferentes columnas. Alternativamente, también puede construir la clave principal con las dos claves externas más un numerador u otro atributo discernidor.
En su caso, si hay un uno uno-a-o un cero uno-a-o-uno entre User
y Employee
, entonces sí, el User_ID
en la tabla Employee
puede ser clave externa (FK) y clave principal (PK) al mismo tiempo. En palabras, esto significaría: un usuario también puede ser un empleado, en cuyo caso los datos del empleado se adjuntarían al usuario. Si no es un empleado (podría ser un experto externo), no se adjunta ningún registro de empleado. Si User_ID
es FK y PK en Employee
, cada usuario puede tener como máximo un registro de empleado adjunto. Si User_ID
era solo FK pero no PK en la tabla Employee
, entonces un usuario podría tener varios registros de empleados relacionados.
Sí. Haría esto, por ejemplo, si quisiera hacer cumplir que todos los empleados son usuarios, y algunos usuarios pueden ser empleados. Esto sería (cero o uno) a una relación.
De lo contrario, normalmente no tendría la clave principal igual que la clave externa, aunque podría contener una clave externa (s), como en el caso de una tabla de conexiones para una relación muchos a muchos.
- 1. Clave primaria de datos principales
- 2. base de datos: clave primaria, agrupados o no agrupados
- 3. ¿Se puede confiar en la clave primaria de incremento automático en su base de datos?
- 4. clave primaria versus clave
- 5. clave primaria compuesta
- 6. Actualización de MySQL primaria clave
- 7. ¿La clave primaria SQL puede aceptar '0'?
- 8. ¿Puede sqlite ser una base de datos inmemory también?
- 9. DBUnit exportación de datos por el conjunto de clave primaria
- 10. Clave primaria múltiple de ScalaQuery y clave externa
- 11. RestKit atributo de clave principal
- 12. ¿Cómo agrego una clave primaria auto_increment en la base de datos de SQL Server?
- 13. restricción de violación de clave primaria
- 14. clave primaria sql e índice
- 15. columnas de base de datos y normalización clave externa
- 16. Clave primaria compuesta, clave externa. ¿Referencia a objeto o clave?
- 17. clave primaria compuesta de PostgreSQL
- 18. Clave primaria y externa al mismo tiempo
- 19. Clave externa que también puede ser cero
- 20. Ventajas y desventajas de tener una clave primaria compuesta ...
- 21. ¿Puede un atributo XML ser la cadena vacía?
- 22. clave externa cakephp no la clave primaria
- 23. NHibernate - Nombre ¿Restricción de clave primaria?
- 24. Cómo crear una clave primaria compuesta que contiene un atributo @ManyToOne como @EmbeddedId en JPA?
- 25. Patrones de base de datos
- 26. .NET base type no puede ser serializado por WCF
- 27. Usar clave primaria compuesta como clave externa
- 28. Inyección de base de datos en un atributo de validación con ASP MVC y Castle Windsor
- 29. tabla no tiene una clave primaria
- 30. Inserto de Linq sin clave primaria
¿Qué es la clave principal en la tabla Empleados? Solo se permite una clave principal en cada tabla. Puede hacer una clave primaria compuesta (más de una columna). –