Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[DUDA] sobre Froreign key

Estas en el tema de [DUDA] sobre Froreign key en el foro de Mysql en Foros del Web. Como están hace muuuucho tiempo que no me ponía a armar una base de datos y dios que uno olvida cosas, de todas formas aprovecho ...
  #1 (permalink)  
Antiguo 03/06/2013, 19:23
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 2 meses
Puntos: 1
Pregunta [DUDA] sobre Froreign key

Como están hace muuuucho tiempo que no me ponía a armar una base de datos y dios que uno olvida cosas, de todas formas aprovecho mi pequeño retorno para consultar algo que siempre tuve en duda ya que en realidad nunca me llevé demasiado con las bases de datos.

Las claves foraneas, siempre las utilicé y mis compañeros me pasaban bases de datos con las claves en ellas y si bien entiendo como relacionarlas y demás. Siempre me quedo una duda!

Para que se identifican las claves foraneas en las bases de datos? y su funcionamiento y deber ser, es el mismo tanto en bases de datos pequeñas como en gigantes?

pregunto esto porque justo estoy armando una base de datos que contiene locales, usuarios, servicios, estos servicios se dividen en categorías, y las ordenes de trabajo pueden venir de diferentes locales etc...

Bueno mi duda especificamente es saber para que utilizamos las claves foraneas, ya que por lo menos en mi caso pienso que al llenar los datos con los formularios bien armados desde el sitio de carga, siempre se cargarán datos correctos, pero como siempre vi que se utilizan deben tener un deber ser más importante que solo aparecer ahí jajaja... Entonces me gustaría que alguien me explicara para que las usamos realmente y obviamente saber si están bien utilizadas en mi base de datos.

entonces estoy haciendo algo así como para que tengan un ejemplo

Tabla de categoria de servicios
Código MySQL:
Ver original
  1. CREATE TABLE categ_servicios (
  2. categoria varchar(20) NOT NULL,
  3. registra varchar(2) NOT NULL,
  4. )

Tabla de servicios
Código MySQL:
Ver original
  1. CREATE TABLE servicios (
  2. categoria int(2) NOT NULL,
  3. descripcion varchar(40) NOT NULL,
  4. preciomin DECIMAL(6,2),
  5. precio DECIMAL(6,2),
  6. precio2 DECIMAL(6,2),
  7. precio3 DECIMAL(6,2),
  8. FOREIGN KEY (categoria) REFERENCES categ_servicios(ID)
  9. )

y por ejemplo la de ordenes a la cual le estoy dando varias claves foraneas (de paso aprovecho, y consulto si estoy utilizando en una columna "DEFAULT '1' " no es necesario el NOT NULL verdad?)
Código MySQL:
Ver original
  1. CREATE TABLE ordenes (
  2. id_cliente int(8) NOT NULL,
  3. marca varchar(20),
  4. modelo varchar(20),
  5. procedencia int(2) NOT NULL,
  6. categoria int(2) NOT NULL,
  7. servicio int(2) NOT NULL,
  8. precio decimal(6,2),
  9. estado int(1) NOT NULL,
  10. ubicacion int(1) DEFAULT '1' NOT NULL,
  11. fecha DATE,
  12. fecha_ingreso DATE,
  13. fecha_realizado DATE,
  14. fecha_especial DATE,
  15. detalles varchar(255),
  16. garantia int(3),
  17. PRIMARY KEY (orden)
  18. FOREIGN KEY (procedencia) REFERENCES locales(ID)
  19. FOREIGN KEY (categoria) REFERENCES categ_servicios(ID)
  20. FOREIGN KEY (servicio) REFERENCES servicios(ID)
  21. )


Desde ya muchisimas gracias por todo!!!
  #2 (permalink)  
Antiguo 04/06/2013, 21:06
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: [DUDA] sobre Froreign key

necesitas las claves foraneas para poder relacionar una tabla con otra y tener informacion completa y consistenet.

En tu caso tienes la tabla categoria servicios donde cada categoria tiene una información y un id. Luego tienes una tabla de servicios que tiene una fk a categoria servicios. De esa forma viendo el servicio puedes ver que categoria le corresponde y obtener cualquier información de ella.
  #3 (permalink)  
Antiguo 05/06/2013, 08:09
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: [DUDA] sobre Froreign key

claro el tema es que no logro llegar a descifrar que generaría que no estuvieran las claves foraneas.

Se que seguro es una estupidez, pero bueno, siguiendo el ejemplo la tabla de servicios y categorías, que generaría que no estuviera la clave foranea?

Saludos!
  #4 (permalink)  
Antiguo 05/06/2013, 08:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: [DUDA] sobre Froreign key

Cita:
claro el tema es que no logro llegar a descifrar que generaría que no estuvieran las claves foraneas.
1) Fallas de integridad referencial.
2) Inconsistencia de datos.
3) Redundancias perniciosas.
4) Enormes problemas de performance.
5) Consultas de altísima ineficiencia.
6) Aplicaciones con alta probabilidad de errores.
7) Muchos, muchos, MUCHOS datos-basura.

Sinceramente, si tienes dudas acerca de por qué existen las FK, es que necesitas volver a leer los fundamentos del modelo relacional, porque es el corazón del tema.

En realidad, para darte una explicación detallada de porqué existen, tenemos que regresar no sólo a los inicios de BBDD, sino que deberíamos explicar también el modelo relaional aplicado al Análisis de Sistemas, que es parte de él.
Es un poco largo...



¿Hace mucho que estudiaste BBDD?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: key, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:22.