{"id":436,"date":"2018-08-22T17:03:36","date_gmt":"2018-08-22T23:03:36","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=436"},"modified":"2018-09-30T17:22:54","modified_gmt":"2018-09-30T23:22:54","slug":"diseno-de-bases-de-datos-parte-3","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/diseno-de-bases-de-datos-parte-3\/","title":{"rendered":"Dise\u00f1o de Bases de Datos &#8211; Parte 3"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Dise\u00f1o de Bases de Datos &#8211; Parte 3<\/h2>\n\n\n\n<p>\n\nEn la segunda parte del art\u00edculo finalizamos con la transformaci\u00f3n al modelo relacional, es decir, dise\u00f1ando las tablas para la base de datos. Dichas tablas se obtivieron en base al modelo entidad-relaci\u00f3n y de acuerdo con las reglas de transformaci\u00f3n descritas en el art\u00edculo anterior.\n\n<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"173\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/tablas3.gif\" alt=\"\" class=\"wp-image-434\"\/><\/figure><\/div>\n\n\n\n<p>Ahora necesitamos analizar las dependencias que existen entre los atributos o campos de las tablas y de esta forma poder normalizar dichas tablas.<br\/><\/p>\n\n\n\n<p>La normalizaci\u00f3n implica tratar de eliminar al m\u00e1ximo la redundancia de datos que pudiera presentarse al construir las tablas ya transformadas y empezar a almacenar datos en ellas. Algunos grados de redundancia tendr\u00e1n que ser aceptados en la mayor\u00eda de las bases de datos dependiendo de la funcionalidad de la aplicaci\u00f3n, la sem\u00e1ntica de los datos y las restricciones de usuario.<br\/><\/p>\n\n\n\n<p>El tema de la normalizaci\u00f3n es un poco m\u00e1s complejo y el objetivo de este art\u00edculo no es aburrir incursionando en los detalles t\u00e9cnicos, por lo que trataremos de explicarlo de una forma sencilla y clara.<br\/><\/p>\n\n\n\n<p>Dada la sencillez de nuestro ejemplo, al llevar a cabo la transformaci\u00f3n al modelo relacional, las tablas resultantes se obtuvieron dentro de la segunda y tercera forma normal y esto es debido a las dependencias entre atributos o campos.<br\/><\/p>\n\n\n\n<p>Entre los campos de una tabla pueden existir dependencias de varios tipos. Las dependencias son propiedades inherentes al contenido sem\u00e1ntico de los datos, formando parte de las restricciones de usuario del modelo relacional.<br\/><\/p>\n\n\n\n<p>Existen distintos tipos de dependencias: funcionales, multivaluadas, jer\u00e1rquicas y en combinaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dependencias funcionales<\/h2>\n\n\n\n<p>Dada tabla\u00a0<strong>R<\/strong>\u00a0formada por los campos\u00a0<strong>A<\/strong>,\u00a0<strong>B<\/strong>\u00a0Y\u00a0<strong>C<\/strong>, representandola de la forma R(A, B, C). Si B depende funcionalmente de A (entonces A implica o determina a B), si para cada valor de A solamente existe un \u00fanico valor posible para B.<br\/><\/p>\n\n\n\n<p>Notaci\u00f3n: A -> B<br\/><\/p>\n\n\n\n<p>ejemplo: Para la tabla Recorrido, una dependencia funcional existe entre el campo n\u00famero y el campo nombre:<br\/>numero -> nombre<br\/><\/p>\n\n\n\n<p>Si adem\u00e1s se cumpliera que no pueden existir dos recorridos con el mismo nombre, esto implicar\u00eda que el nombre tambi\u00e9n puede actual como clave de la tabla Recorrido y por lo tanto tambi\u00e9n derermina funcionalmente a n\u00famero:<br\/><\/p>\n\n\n\n<p>numero &lt;-> nombre<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dependencias multivaluadas<\/h2>\n\n\n\n<p>De la tabla\u00a0<strong>R(A, B, C),<\/strong>\u00a0A multidetermina a B si para cada valor de A existe un conjunto bien definido de valores posibles en B, con independencia del resto de los campos de la tabla.<br\/><\/p>\n\n\n\n<p>Notaci\u00f3n: A ->-> B<br\/><\/p>\n\n\n\n<p>ejemplo: Si en la tabla turista tambi\u00e9n quisieramos guardar el telefono de los turistas y que algunos de ellos indicaran m\u00e1s de un n\u00famero: celular, casa, oficina, etc. La dependencia multivaluada estar\u00eda dada por:<br\/><\/p>\n\n\n\n<p>nombre ->-> tel\u00e9fono<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"185\" height=\"100\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/table1.gif\" alt=\"\" class=\"wp-image-438\"\/><\/figure><\/div>\n\n\n\n<p>\n\nPara cada persona tenemos varios n\u00fameros telef\u00f3nicos.\n\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Formas normales<\/h2>\n\n\n\n<p>Existen seis niveles de normalizaci\u00f3n de una tabla. Una tabla se encuentra en uno u otro grado de normalizaci\u00f3n si cumple una serie de propiedades (restricciones) que se explicar\u00e1n a continuaci\u00f3n.<br\/><\/p>\n\n\n\n<p>Las tres primeras formas normales las defini\u00f3 Codd y se basan en las dependencias funcionales que existen entre los campos de la tabla. Posteriormente, y bas\u00e1ndose en las dependencias multivaluadas y en combinaci\u00f3n se definieron dos niveles m\u00e1s de normalizaci\u00f3n, la 4a y la 5a respectivamente.<br\/><\/p>\n\n\n\n<p>Entre la tercera y la cuarta se defini\u00f3 una que se conoce como la forma normal de Boyce-Codd (FNBC) la cual re-define a la 3ra forma normal debido a algunas anomal\u00edas encontradas.<br\/><\/p>\n\n\n\n<p>De esta forma las tablas en 1a forma normal tienen m\u00e1s redundancia de datos que los niveles superiores y por lo tanto, m\u00e1s anomal\u00edas de actualizaci\u00f3n de datos. La 5a forma normal es el grado de normalizaci\u00f3n m\u00e1ximo que se puede alcanzar para una tabla.<br\/><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Primera forma normal<\/h2>\n\n\n\n<p>Se dice que una tabla se encuentra en la 1a forma normal cuando cada campo s\u00f3lo toma un valor del dominio simple subyacente. Es decir que no existen grupos repetitivos.<br\/><\/p>\n\n\n\n<p>Un ejemplo lo podemos mostrar con las tablas siguientes, la primer tabla no cumple la restricci\u00f3n de la primer forma normal, sin embargo la segunda si la cumple.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"186\" height=\"205\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/table2.gif\" alt=\"\" class=\"wp-image-439\"\/><\/figure><\/div>\n\n\n\n<p>\n\nLa primera forma normal es una restricci\u00f3n inherente al modelo relacional, por lo que su cumplimiento es obligatorio para todas las tablas.\n\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Segunda forma normal<\/h2>\n\n\n\n<p>\n\nSe dice que una tabla se encuentra en la segunda forma normal si:<br\/><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Se encuentra en la 1er forma normal<\/li><li>Cada campo que no forma parte de la clave primaria tiene dependencia funcional completa respecto de alguna de sus claves.<\/li><\/ul>\n\n\n\n<p>Por ejemplo: Turista(idTurista, nombre, nacionalidad) donde la clave primaria es idTurista, existe:<br\/><\/p>\n\n\n\n<p>nombre -> nacionalidad<br\/><\/p>\n\n\n\n<p>Por lo tanto la tabla Turista con esos campos se encuentra en la segunda forma normal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tercera forma normal<\/h2>\n\n\n\n<p>\n\nSe dice que la tabla se encuentra en la 3a forma normal si:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Se encuentra en la segunda forma normal<\/li><li>No existe ningun campo que no forma parte de la clave primaria que dependa transitivamente de alguna clave de la tabla.<\/li><\/ul>\n\n\n\n<p>Por ejemplo: R(A,B,C) si B -> C R se encuentra en la 2a forma normal, ya que no existe dependencia transitiva de B o C con respecto de A<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An\u00e1lisis<\/h2>\n\n\n\n<p>El objetivo del an\u00e1lisis es llevar a cabo un proceso de descomposici\u00f3n por medio de proyecciones sucesivas para obtener, de una tabla, una serie de tablas resultantes, las cuales deben cumplir con la conservaci\u00f3n de la informaci\u00f3n (campos y registros), de las dependencias y que exista m\u00ednima redundancia de datos.<br\/><\/p>\n\n\n\n<p>De esta forma las n tablas resultantes ser\u00e1n equivalentes a la tabla inicial y tendr\u00e1n menor redundancia de datos debido a que se encuentran en un nivel de normalizaci\u00f3n mayor.<br\/><\/p>\n\n\n\n<p>Dado que la normalizaci\u00f3n parece un tema complicado, nos podemos beneficiar ampliamente al entender los conceptos mas elementales de la normalizci\u00f3n.<br\/><\/p>\n\n\n\n<p>Una de las formas m\u00e1s f\u00e1ciles de entender esto, es pensar en nuestras tablas como hojas de c\u00e1lculo. Por ejemplo para el caso de los tel\u00e9fonos de los turistas, si agregaremos un campo a la tabla por cada numero telef\u00f3nico que podr\u00edamos capturar para un turista tendr\u00edamos algo as\u00ed:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"91\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/table3.gif\" alt=\"\" class=\"wp-image-440\"\/><\/figure><\/div>\n\n\n\n<p>\n\nAlgunos turistas turistas tienen uno, dos o tres n\u00fameros, no todos tienen los tres n\u00fameros para los cuales tenemos capacidad en la tabla.<\/p>\n\n\n\n<p>As\u00ed como hemos mencionado que el objetivo de la normalizaci\u00f3n es eliminar la redundancia de datos, tambi\u00e9n lo es eliminar el n\u00famero de celdas vac\u00edas.<br\/><\/p>\n\n\n\n<p>El darnos cuenta de que la tabla turista tiene un conjunto fijo de campos (nombre, sexo, edad, nacionalidad) y un conjunto variable de campos (telefono1, telefono2, telefono3), nos da una idea de como dividir los datos en m\u00faltiples tablas que estar\u00e1n relacionadas entre s\u00ed.<br\/><\/p>\n\n\n\n<p>Cuando hablamos del proceso de descomposici\u00f3n para obtener n tablas resultantes, lo vemos en el ejemplo de los tel\u00e9fonos y el proceso se describe con la siguiente figura:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"180\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/normalizacion.gif\" alt=\"\" class=\"wp-image-441\"\/><\/figure><\/div>\n\n\n\n<p>Al aplicar las reglas de normalizaci\u00f3n a la tabla original R, esta la descomponemos en dos tablas R1 y R2, despu\u00e9s, dada la redundancia de R2, le aplicamos las reglas y la descomponemos en R3 y R4. Todas las tablas resultantes: R1, R2, R3, y R4 conservan el atributo A, que es la clave primaria y con la cual estableceremos la relaci\u00f3n entre ellas, sin embargo para cada tabla resultante, la clave primaria ser\u00e1 una combinaci\u00f3n de entre la clave primaria de la tabla original y alg\u00fan otro campo de cada tabla resultante, dependiendo de las restricciones.<br\/><\/p>\n\n\n\n<p>Si aplicamos la regla de la primer forma normal para la tabla de datos del ejemplo, la cual nos indica separar los grupos repetitivos. En este caso el grupo repetitivo es el conjunto de campos para tel\u00e9fono, los cuales dependen del id del turista, por lo que los separamos juntos.<br\/><\/p>\n\n\n\n<p>Separando en dos grupos los campos tendr\u00edamos:<br\/><\/p>\n\n\n\n<p>1er Grupo (idTurista, nombre, sexo, edad, nacionalidad)<br\/>2o Grupo(idTurista, telefono1, telefono2, telefono3)<br\/><\/p>\n\n\n\n<p>Ahora para la segunda forma normal, en esta analizamos s\u00f3lo aquellos grupos que tengan claves combinadas, dado que no hay claves combinadas, ignoramos este paso.<br\/><\/p>\n\n\n\n<p>Para la tercera forma normal examinamos las interdependencias entre campos no claves.<br\/><\/p>\n\n\n\n<p>Todos los campos o atributos en cada grupo que no sean claves, deben ser examinados para verificar que no existan interdependencias entre ellos. Si se encuentran algunas, tales dependencias deben ser separadas en distintos grupos cuya clave debe ser el campo del cual son dependientes, dejando este campo clave tambi\u00e9n en el grupo original.<br\/><\/p>\n\n\n\n<p>Para el primer grupo analizamos que nombre, sexo, edad y nacionalidad son dependientes de idTurista y no hay interdependencia entre ellos, por lo tanto, ingnoramos al primer grupo.<br\/><\/p>\n\n\n\n<p>En el segundo grupo sucede lo mismo, cada campo tel\u00e9fono es dependiente del idTurista. Pero ahora no todos los turistas tendr\u00e1n tres tel\u00e9fonos, por lo que modificamos el segundo grupo y dejamos que cada registro identifique un tel\u00e9fono \u00fanico para cada turista, de esta forma el segundo grupo quedar\u00e1:<br\/><\/p>\n\n\n\n<p>2o Grupo (idTurista, telefono)<br\/><\/p>\n\n\n\n<p>En el hacemos que la clave primaria y \u00fanica sea la combinaci\u00f3n de ambos campos, es decir, la clave primaria estar\u00e1 formada por idTurista y tel\u00e9fono. As\u00ed podremos evitar tambi\u00e9n que se capture dos veces el mismo n\u00famero para el mismo turista, pero podemos tener el mismo n\u00famero para turistas distintos.<br\/><\/p>\n\n\n\n<p>Ahora bien, sabemos que para el campo sexo, s\u00f3lo pueden existir dos valores (H o M), por lo que podremos utilizar una lista de valores para este campo y evitar errores en la captura del mismo.<br\/><\/p>\n\n\n\n<p>Para el caso del campo nacionalidad, la cantidad de valores que se pueden tener es grande, sin embargo para evitar errores en la captura con los posibles datos podr\u00edamos separarlo de grupo 1 y crear un nuevo grupo, al cual le tendremos que asignar una clave \u00fanica:<br\/><\/p>\n\n\n\n<p>3er grupo (idNacionalidad, nacionalidad)<br\/><\/p>\n\n\n\n<p>El primer grupo quedar\u00eda modificado de la siguiente forma:<br\/><\/p>\n\n\n\n<p>1er Grupo (idTurista, nombre, sexo, edad, idNacionalidad)<br\/><\/p>\n\n\n\n<p>Con ello podr\u00edamos crear una lista de valores para nacionalidad y evitar errores en la captura.<br\/><\/p>\n\n\n\n<p>Dado los pocos campos que tenemos en las tablas Recorrido y Realiza, no existen independencias o dependencia funcionales y multivaluadas en estas tablas, por lo que no hay necesidad de llevar a cabo una normalizaci\u00f3n adicional, dichas tablas se encuentran en la 3er forma normal.<br\/><\/p>\n\n\n\n<p>Finalmente las tablas a construir en la base de datos son las siguientes:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"141\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/tablas_final.gif\" alt=\"\" class=\"wp-image-442\"\/><\/figure><\/div>\n\n\n\n<p>Estas ya son las tablas normalizadas hasta la tercer forma normal que se construiran en la base de datos. Para ello el sigueinte paso es analizar los tipos de datos que se requieren para cada uno de los campos.<br\/><\/p>\n\n\n\n<p>En la cuarta y \u00faltima parte de este art\u00edculo hablaremos sobre los detalles para la construcci\u00f3n de estas tablas, los tipos de datos para los campos, restricciones y validaciones, as\u00ed como las cosideraciones necesarias para la creaci\u00f3n de presentaciones (layouts) para la aplicaci\u00f3n: captura, consulta, reportes, etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dise\u00f1o de Bases de Datos &#8211; Parte 3 En la segunda parte del art\u00edculo finalizamos &hellip; <\/p>\n","protected":false},"author":2,"featured_media":437,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[47,6],"tags":[71,72,73,75,76,77],"class_list":["post-436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bases-de-datos","category-diseno-de-bases-de-datos","tag-bases-de-datos","tag-bases-de-datos-relacionales","tag-diseno-de-bases-de-datos","tag-modelado","tag-modelo-relacional","tag-transformacion-a-tablas"],"aioseo_notices":[],"author_meta":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"featured_img":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p3-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p3.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p3.png","author_info":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/\" class=\"advgb-post-tax-term\">Bases de Datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">Dise\u00f1o de Bases de Datos<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Bases de Datos<\/span>","<span class=\"advgb-post-tax-term\">Dise\u00f1o de Bases de Datos<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">bases de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">bases de datos relacionales<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">dise\u00f1o de bases de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">modelado<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">modelo relacional<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">transformaci\u00f3n a tablas<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">bases de datos<\/span>","<span class=\"advgb-post-tax-term\">bases de datos relacionales<\/span>","<span class=\"advgb-post-tax-term\">dise\u00f1o de bases de datos<\/span>","<span class=\"advgb-post-tax-term\">modelado<\/span>","<span class=\"advgb-post-tax-term\">modelo relacional<\/span>","<span class=\"advgb-post-tax-term\">transformaci\u00f3n a tablas<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Publicado 8 a\u00f1os hace","modified":"Actualizado 8 a\u00f1os hace"},"absolute_dates":{"created":"Publicado el agosto 22, 2018","modified":"Actualizado el septiembre 30, 2018"},"absolute_dates_time":{"created":"Publicado el agosto 22, 2018 5:03 pm","modified":"Actualizado el septiembre 30, 2018 5:22 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/comments?post=436"}],"version-history":[{"count":1,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/436\/revisions"}],"predecessor-version":[{"id":443,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/436\/revisions\/443"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/437"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}