ajuste de necesidad de ayuda la relación de clave externa en la base de datos MySQL

StackOverflow https://stackoverflow.com/questions/4258829

  •  27-09-2019
  •  | 
  •  

Pregunta

Así que tengo que InnoDB (Productos) y (Categorías). Quería configuración de una relación entre el campo "Categoría" en la mesa de los productos, y el "CategoryId" de la tabla Categorías.

Sin embargo, cuando se trata de crear un FK sólo me deja seleccionar la clave principal "ProductsId" en la tabla Productos y asigne la PK "CategoryId" en la tabla Categorías.

Tal vez me falta el camino / razón para configurar una clave externa. Mis pensamientos y dime si estoy equivocado:

1) era exigir que añadir un producto a una categoría cuando se añade, la categoría debe existir o se debe crear en primer lugar. No se puede eliminar una categoría a menos que realice alguna tarea (programmically o en el backend DB) para eliminar los productos de una categoría se desean eliminar.

2) que estaba esperando el valor CategoryId que se almacena en el campo "Categoría" de la tabla productos. A continuación, cuando se muestran en mi opinión, habría que buscar el campo Categories.Name por el valor CategoriesId.

EDIT: Así que entiendo que dos campos que intervienen en las claves externas deben ser los mismos, tamaño, tipos ... etc. Sin embargo, ¿cómo se vincula el trabajo ProductId y CategoryId en el contexto de lo que he mencionado anteriormente que estoy queriendo hacer. Cuando lo hice crear un FK entre ProductId y CategoryId, no voy a dejar que añada un registro de productos.

Además, el campo nombre de categoría y el campo Categoría de producto son del mismo tipo, size..etc, sin embargo, no tienen la opción de seleccionar los de la pestaña de clave externa?

¿Cómo debería ser la creación hacia arriba para que la tabla categorías sabrá qué productos son parte de cada categoría.

¿Fue útil?

Solución

Ok, por desgracia, que debe responder a mis propias preguntas. La razón de la mayoría de mis problemas técnicos se debe a que el campo que está tratando de hacer "debe ser indexado".

La cuestión comprehesive que estaba teniendo era que tenía que deshacerse del campo varchar real "Categoría" en la mesa de los productos, y crear un campo CategoryId que sólo tendrían un valor que existe en el campo CategoryId tabla de categorías.

Ahora sólo tendrá que hacer referencia al campo Categories.Name a través del valor Products.CategoryID.

Al menos esto es lo que he llegado a comprender.

Otros consejos

Si usted está en el banco de trabajo, verifique que los tipos, longitudes y atributos de ambas columnas implicadas en el FK son los mismos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top