{"id":237,"date":"2020-10-12T00:00:00","date_gmt":"2020-10-12T00:00:00","guid":{"rendered":"https:\/\/softwareinformatico.com\/blog\/?p=237"},"modified":"2020-10-11T22:15:07","modified_gmt":"2020-10-11T22:15:07","slug":"claves-foraneas-que-son-y-porque-usarlas","status":"publish","type":"post","link":"https:\/\/softwareinformatico.com\/blog\/claves-foraneas-que-son-y-porque-usarlas\/","title":{"rendered":"Claves for\u00e1neas. Qu\u00e9 son y porqu\u00e9 usarlas."},"content":{"rendered":"\n<p>Las <strong>claves for\u00e1neas o foreing keys<\/strong> son restricciones de seguridad para conseguir robustez y consistencia en las Bases de Datos.<\/p>\n\n\n\n<p>Para entender la gran importancia que tienen, primero pondremos un ejemplo para ver cu\u00e1ndo se deber\u00edan de aplicar. Imaginemos la siguiente base de datos con dos tablas:<br><\/p>\n\n\n\n<div style=\"height:61px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><span class=\"has-inline-color has-vivid-red-color\">Tabla Productos.<\/span><\/strong> Compuesta por su id, nombre, precio, slug y categor\u00eda. <\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"878\" height=\"292\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-productos.jpg\" alt=\"claves for\u00e1neas tabla productos\" class=\"wp-image-244\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-productos.jpg 878w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-productos-300x100.jpg 300w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-productos-768x255.jpg 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><span class=\"has-inline-color has-vivid-red-color\">Tabla Categor\u00edas. <\/span><\/strong>Compuesta por su id, nombre y slug.<br>La relaci\u00f3n que existe entre ambas tablas es 1-N, una categor\u00eda puede estar en muchos productos y un producto solo puede tener una categor\u00eda.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1017\" height=\"244\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-categorias.jpg\" alt=\"claves for\u00e1neas tabla categor\u00edas\" class=\"wp-image-243\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-categorias.jpg 1017w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-categorias-300x72.jpg 300w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-tabla-categorias-768x184.jpg 768w\" sizes=\"auto, (max-width: 1017px) 100vw, 1017px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:53px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><span class=\"has-inline-color has-vivid-red-color\">Fila insertada Deportes. <\/span><\/strong><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"144\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-deportes.jpg\" alt=\"claves for\u00e1neas deportes\" class=\"wp-image-241\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-deportes.jpg 402w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-deportes-300x107.jpg 300w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><span class=\"has-inline-color has-vivid-red-color\">Producto Zapatillas.<\/span><\/strong> Asociado a la categor\u00eda deportes.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"783\" height=\"170\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-productos.jpg\" alt=\"claves for\u00e1neas productos\" class=\"wp-image-242\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-productos.jpg 783w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-productos-300x65.jpg 300w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/claves-foraneas-productos-768x167.jpg 768w\" sizes=\"auto, (max-width: 783px) 100vw, 783px\" \/><\/figure>\n\n\n\n<div style=\"height:67px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Si por ejemplo tenemos la categor\u00eda Deportes creada y asociada con el producto Zapatillas, <strong>no tendr\u00eda sentido que se borre la categor\u00eda y siga asociada con el producto<\/strong>. <\/p>\n\n\n\n<div style=\"height:58px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-center is-layout-flow wp-block-quote-is-layout-flow\" style=\"\n    font-size: 20px;\n\"><p><em>Las claves for\u00e1neas realizan un control para evitar problemas de inconsistencia de datos.<\/em><\/p><\/blockquote>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aunque  este control se puede hacer a nivel de programaci\u00f3n, es muy importante definir claves for\u00e1neas en nuestras <a href=\"https:\/\/softwareinformatico.com\/\">aplicaciones inform\u00e1ticas<\/a>, porque <strong>la programaci\u00f3n puede fallar o los cambios pueden ser aplicados directamente sobre la Base de Datos<\/strong>. <br><br>Es decir, lo m\u00e1s seguro ser\u00eda aplicar un control con claves for\u00e1neas y otro desde la propia programaci\u00f3n.<br><br><\/p>\n\n\n\n<div class=\"div_consulta_bordes\"><p class=\"text_ini\">Si tienes una web y buscas como mejorar tu <a href=\"https:\/\/softwareinformatico.com\/posicionamiento-en-google\/\" title=\"posicionamiento en google\">posicionamiento en google<\/a> preg\u00fantanos, podemos ayudarte.<\/p><div class=\"creatutienda\"><a href=\"https:\/\/softwareinformatico.com\/consulta-informatica\/\" title=\"consulta informatica\">CONSULTA INFORMATICA<\/a><\/div><\/div>\n\n\n\n<div style=\"height:52px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tipos de Claves For\u00e1neas.<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><span class=\"has-inline-color has-vivid-red-color\"><strong>Restrict<\/strong><\/span>. Bloquea la eliminaci\u00f3n o actualizaci\u00f3n de la fila. En el ejemplo anterior con un caso restrict,<strong> si se eliminar\u00e1 la categor\u00eda deportes de la Base de Datos no se lo permitir\u00eda<\/strong> al estar asociada al producto zapatillas. <br><br><\/li><li><strong><span class=\"has-inline-color has-vivid-red-color\">Cascade<\/span><\/strong>. Elimina o actualiza las filas asociadas. Por ejemplo al eliminar Deportes se eliminar\u00eda el producto zapatillas.<br><br><\/li><li><strong><span class=\"has-inline-color has-vivid-red-color\">Set Null.<\/span><\/strong>  Igual que el caso anterior, pero en vez de eliminar pondr\u00eda a null la categor\u00eda del producto.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"246\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/notificacion-claves-foraneas-1024x246.jpg\" alt=\"notificaci\u00f3n claves for\u00e1neas\" class=\"wp-image-256\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/notificacion-claves-foraneas-1024x246.jpg 1024w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/notificacion-claves-foraneas-300x72.jpg 300w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/notificacion-claves-foraneas-768x185.jpg 768w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/notificacion-claves-foraneas.jpg 1076w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Recomendaciones<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"166\" src=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/ejemplo-claves-foraneas-1024x166.jpg\" alt=\"ejemplo claves for\u00e1neas\" class=\"wp-image-245\" srcset=\"https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/ejemplo-claves-foraneas-1024x166.jpg 1024w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/ejemplo-claves-foraneas-300x49.jpg 300w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/ejemplo-claves-foraneas-768x125.jpg 768w, https:\/\/softwareinformatico.com\/blog\/wp-content\/uploads\/2020\/10\/ejemplo-claves-foraneas.jpg 1208w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Nomenclatura. Nombre \u00fanico para saber cuando se produce un error, que clave for\u00e1nea ha sido. La nomenclatura que suelo usar es:<br>fk-tabla1-tabla2-nombre atributo.<br><br><\/li><li>El atributo al que se debe de referenciar es siempre a la clave principal. En este caso el id de categor\u00edas.<br><br><\/li><li>Usa claves for\u00e1neas siempre que haya relaciones entre tablas, le dar\u00e1s una seguridad y consistencia a tus Bases de Datos.<br><br><\/li><li>Ten cuidado con las Bases de Datos que usas, no todas soportan claves for\u00e1neas. Si no las soportan, <strong>des\u00e9chalas inmediatamente<\/strong>.<\/li><\/ul>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Las claves for\u00e1neas o foreing keys son restricciones de seguridad para conseguir robustez y consistencia en las Bases de Datos. Para entender la gran importancia <a class=\"mh-excerpt-more\" href=\"https:\/\/softwareinformatico.com\/blog\/claves-foraneas-que-son-y-porque-usarlas\/\" title=\"Claves for\u00e1neas. Qu\u00e9 son y porqu\u00e9 usarlas.\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[20,22],"class_list":["post-237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion-web","tag-bases-de-datos","tag-seguridad-bases-de-datos"],"_links":{"self":[{"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/comments?post=237"}],"version-history":[{"count":0,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/posts\/237\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/media\/272"}],"wp:attachment":[{"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/media?parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/categories?post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareinformatico.com\/blog\/wp-json\/wp\/v2\/tags?post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}