{"id":1937,"date":"2020-05-27T21:21:23","date_gmt":"2020-05-27T21:21:23","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=1937"},"modified":"2020-05-27T21:21:24","modified_gmt":"2020-05-27T21:21:24","slug":"graph-tables-en-sql-server","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=1937","title":{"rendered":"Graph Tables en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"243\" height=\"222\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL__D.png\" alt=\"\" class=\"wp-image-1939\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Usando Graph Tables en SQL Server<\/h2>\n\n\n\n<p>Una base de datos gr\u00e1fica es una colecci\u00f3n de nodos (o v\u00e9rtices) y bordes (o relaciones). Un nodo representa una entidad (por ejemplo, una persona o una organizaci\u00f3n) y un borde representa una relaci\u00f3n entre los dos nodos que conecta (por ejemplo, grupos o amigos). Tanto los nodos como los bordes pueden tener propiedades asociadas a ellos.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p style=\"font-size:22px\"><strong>Caracter\u00edsticas de los Graph Tables<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Los bordes o las relaciones son entidades de primera clase en una base de datos gr\u00e1fica y pueden tener atributos o propiedades asociadas.<\/li><li>Un solo borde puede conectar de forma flexible varios nodos en una base de datos de gr\u00e1ficos.<\/li><li>Puede expresar la coincidencia de patrones y las consultas de navegaci\u00f3n de m\u00faltiples saltos f\u00e1cilmente.<\/li><li>Puede expresar cierre transitivo y consultas polim\u00f3rficas f\u00e1cilmente.<\/li><\/ul>\n\n\n\n<p style=\"font-size:18px\"><strong>La imagen muestra la arquitectura b\u00e1sica de las Graph Tables.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_00.png\" alt=\"\" class=\"wp-image-1940\" width=\"644\" height=\"780\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_00.png 473w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_00-248x300.png 248w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Cuando usar una base de datos gr\u00e1fica<\/strong><\/p>\n\n\n\n<p>No hay nada que una base de datos gr\u00e1fica pueda lograr, lo que no se puede lograr utilizando una base de datos relacional. Sin embargo, una base de datos gr\u00e1fica puede hacer que sea m\u00e1s f\u00e1cil expresar cierto tipo de consultas. Adem\u00e1s, con optimizaciones espec\u00edficas, ciertas consultas pueden tener un mejor desempe\u00f1o.<\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Factores para decidir usar una base de datos gr\u00e1fica<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Su aplicaci\u00f3n tiene datos jer\u00e1rquicos. El tipo de datos HierarchyID se puede usar para implementar jerarqu\u00edas, pero tiene algunas limitaciones. Por ejemplo, no le permite almacenar varios padres para un nodo.<\/li><li>Su aplicaci\u00f3n tiene relaciones complejas de muchos a muchos; A medida que la aplicaci\u00f3n evoluciona, se agregan nuevas relaciones.<\/li><li>Necesitas analizar datos y relaciones interconectadas.<\/li><\/ul>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p style=\"font-size:22px\"><strong>Tabla Node<\/strong><\/p>\n\n\n\n<p>Una tabla Node representa una entidad en un esquema gr\u00e1fico. Cada vez que se crea una tabla Node, junto con las columnas definidas por el usuario,  se crea una columna impl\u00edcita llamada <strong>$node_id<\/strong>, que identifica de forma  exclusiva un nodo dado en la base de datos. <\/p>\n\n\n\n<p>Los valores en <strong>$node_id<\/strong> se  generan autom\u00e1ticamente y son una combinaci\u00f3n de <strong>object_id<\/strong> de esa tabla de nodos y un valor bigint generado internamente. Sin embargo, cuando se selecciona la columna<strong> $node_id<\/strong>, se muestra un valor calculado en forma de una cadena JSON. Adem\u00e1s, $node_id es una pseudo columna, que se asigna a un nombre interno con una cadena hexadecimal. <\/p>\n\n\n\n<p>Cuando selecciona <strong>$node_id<\/strong> de la tabla, el nombre de la columna aparecer\u00e1 como <strong>$node_id_ &lt;Cadena_Hexadecimal><\/strong>. El uso de nombres de pseudocolumnas en las consultas es la forma recomendada de consultar la columna interna $node_id y se debe evitar el uso del nombre interno con una cadena hexadecimal.<\/p>\n\n\n\n<p>Se recomienda que los usuarios creen una restricci\u00f3n o \u00edndice \u00fanico en la columna $node_id en el momento de la creaci\u00f3n de la tabla Node, pero si no se crea una, se crea autom\u00e1ticamente un \u00edndice \u00fanico no agrupado predeterminado. Sin embargo, cualquier \u00edndice en una pseudo columna de gr\u00e1fico se crea en  las columnas internas subyacentes. Es decir, un \u00edndice creado en la columna $node_id, aparecer\u00e1 en la columna interna <strong>graph_id_&lt;Cadena_Hexadecimal><\/strong> .<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Tabla Edge<\/strong><\/p>\n\n\n\n<p>Una tabla Edge representa una relaci\u00f3n en un gr\u00e1fico. Los Edge siempre se dirigen y conectan dos nodos. Una tabla Edge permite a los usuarios modelar relaciones de muchos a muchos en el gr\u00e1fico. Una tabla Edge puede tener o no atributos definidos por el usuario. Cada vez que se crea  una tabla Erge, junto con los atributos definidos por el usuario, se crean tres columnas impl\u00edcitas en la tabla Edge<\/p>\n\n\n\n<p><strong>En la tabla siguiente se muestra las columnas del Edge<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Columna<\/strong><\/td><td><strong>Descripci\u00f3n<\/strong><\/td><\/tr><tr><td>$edge_id<\/td><td>Identifica de forma exclusiva un Edge dado en la base de datos. Es una columna generada y el valor es una combinaci\u00f3n de object_id de la tabla de borde y un valor bigint generado internamente. Sin embargo, cuando se selecciona la columna $edge_id, se muestra un valor calculado en forma de una cadena JSON. $edge_id es una pseudo-columna, que se asigna a un nombre interno con una cadena hexadecimal. <br>Cuando selecciona $edge_id de la tabla, el nombre de la columna aparecer\u00e1 como $edge_id_ \\ &lt;cadena_Hexadecimal>. El uso de nombres de pseudocolumnas en las consultas es la forma recomendada de consultar la columna interna $edge_id y se debe evitar el uso del nombre interno con una cadena hexadecimal.<\/td><\/tr><tr><td>$from_id<\/td><td>Almacena el $ node_id del Node, desde donde se origina el borde.<\/td><\/tr><tr><td>$to_id<\/td><td>Almacena el $ node_id del Node, en el que termina el borde.<\/td><\/tr><\/tbody><\/table><figcaption>Columnas en la tabla Edge<\/figcaption><\/figure>\n\n\n\n<p>Los nodos que puede conectar un borde determinado se rigen por los datos  insertados en las columnas $ from_id y $ to_id. En la primera versi\u00f3n, no es  posible definir restricciones en la tabla de borde, para restringir la  conexi\u00f3n de dos tipos de nodos. Es decir, un borde puede conectar dos  nodos en el gr\u00e1fico, independientemente de sus tipos.<\/p>\n\n\n\n<p>Similar a la columna $node_id, se recomienda que los usuarios creen un \u00edndice o restricci\u00f3n \u00fanicos en la columna $edge_id en el momento de la creaci\u00f3n de la tabla de borde, pero si no se crea uno, se crea  autom\u00e1ticamente un \u00edndice \u00fanico no agrupado predeterminado en esta columna Sin embargo, cualquier \u00edndice en una pseudo columna de gr\u00e1fico se crea en las columnas internas subyacentes. Es decir, un \u00edndice creado en  la columna $ edge_id, aparecer\u00e1 en la columna interna graph_id_<strong>&lt;Cadena_Hexadecimal><\/strong> .<br>Tambi\u00e9n se recomienda, para escenarios OLTP, que los usuarios creen un \u00edndice en columnas ($ from_id, $ to_id), para b\u00fasquedas m\u00e1s r\u00e1pidas en la direcci\u00f3n del borde.<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Restricciones Edge<\/strong><\/p>\n\n\n\n<p>Una restricci\u00f3n de Edge se define en una tabla Edge de gr\u00e1fico y es un par de tablas Node que un tipo de Edge determinado puede conectar. Esto le da a los usuarios un mejor control sobre su esquema gr\u00e1fico.<br>Con la ayuda de restricciones Edge, los usuarios pueden restringir el tipo de nodos a los que se permite conectar un borde determinado.<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Cl\u00e1usulas de restricci\u00f3n Edge<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Cada restricci\u00f3n Edge consta de una o m\u00e1s cl\u00e1usulas de restricci\u00f3n Edge.<\/li><li>Una cl\u00e1usula de restricci\u00f3n Edge es el par de nodos FROM y TO que el Edge dado podr\u00eda conectar.<\/li><li>Tenga en cuenta que tiene nodos de Producto y Cliente en su gr\u00e1fico y que utiliza la restricci\u00f3n Venta Edge para conectar estos nodos.<\/li><li>La cl\u00e1usula de restricci\u00f3n Edge especifica el par de nodos FROM y TO y la direcci\u00f3n del borde. En este caso, la cl\u00e1usula de restricci\u00f3n de borde ser\u00e1 Cliente A Producto. Es decir, se permitir\u00e1 la inserci\u00f3n de un Venta que va de un Cliente a un Producto.<\/li><li>Los intentos de insertar un borde que va del Producto al Cliente fallan.<\/li><li>Una cl\u00e1usula de restricci\u00f3n Edge contiene un par de tablas de nodo FROM y TO en las que se aplica la restricci\u00f3n de borde.<\/li><li>Si se crean m\u00faltiples restricciones de borde en una sola tabla de borde, los bordes deben satisfacer TODAS las restricciones para ser permitidos.<\/li><\/ul>\n\n\n\n<p style=\"font-size:22px\"><strong>Limitaciones en el uso de Graph Tables<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Las tablas temporales locales o globales no pueden ser tablas de nodo o borde.<\/li><li>Los tipos de tabla y las variables de tabla no se pueden declarar como una tabla de nodo o borde.<\/li><li>Las tablas de nodo y borde no se pueden crear como tablas temporales con versi\u00f3n del sistema.<\/li><li>Las tablas de nodo y borde no pueden ser tablas de memoria optimizada.<\/li><li>Los usuarios no pueden actualizar las columnas $ from_id y $ to_id de un borde utilizando la instrucci\u00f3n UPDATE.<\/li><li>Para actualizar los nodos que conecta un borde, los usuarios deber\u00e1n insertar el nuevo borde que apunta a nuevos nodos y eliminar el anterior.<\/li><li>No se admiten consultas cruzadas de base de datos en objetos de gr\u00e1ficos.<\/li><\/ul>\n\n\n\n<p style=\"font-size:26px\"><strong>Creando Graph Tables<\/strong><\/p>\n\n\n\n<p><strong>Usando la base de datos Northwind, se va a crear dos Graph Tables, una para Personas, que va a ser el Nodo, y otra para Grupos, que ser\u00e1 el Edge (V\u00e9rtice) que tendr\u00e1 las relaciones entre las personas.<\/strong><\/p>\n\n\n\n<p>use Northwind<br>go<\/p>\n\n\n\n<p><strong>Tablas tipo gr\u00e1fico para relaciones muchos a muchos<br>Crear una tabla Node para Personas<\/strong>. <strong>(<a href=\"https:\/\/manualsqlserver.com\/?p=117\" target=\"_blank\" rel=\"noreferrer noopener\">Ver creaci\u00f3n de tablas<\/a>)<\/strong><\/p>\n\n\n\n<p>Create table dbo.Personas<br>(<br>PersonasID int,<br>PersonasCodigo nchar(3), PersonasPaterno nvarchar(100),<br>PersonasMaterno nvarchar(100),PersonasNombre nvarchar(100),<br>PersonasFechaNacimiento Date,<br>constraint PersonasPK Primary key (PersonasID)<br>) As Node<br>go<\/p>\n\n\n\n<p><strong>Insertar registros en la tabla Personas, note que se ha especificado<br>un campo c\u00f3digo adicional a la PK. (<a href=\"https:\/\/manualsqlserver.com\/?p=294\" target=\"_blank\" rel=\"noreferrer noopener\">Ver Insertar registros<\/a>)<\/strong><br>insert into Personas<br>values (1,&#8217;059&#8242;,&#8217;Luque&#8217;,&#8217;Sanchez&#8217;,&#8217;Fernando&#8217;,&#8217;23\/07\/1966&#8242;),<br>(2,&#8217;105&#8242;,&#8217;Pereda&#8217;,&#8217;Mendoza&#8217;,&#8217;Carlos&#8217;,&#8217;24\/02\/1996&#8242;),<br>(3,&#8217;078&#8242;,&#8217;Chavez&#8217;,&#8217;Alvarado&#8217;,&#8217;Ingrid&#8217;,&#8217;30\/12\/1994&#8242;),<br>(4,&#8217;450&#8242;,&#8217;Campos&#8217;,&#8217;Castro&#8217;,&#8217;Mario&#8217;,&#8217;16\/06\/1986&#8242;)<br>go<\/p>\n\n\n\n<p>El resultado se puede notar en la siguiente figura<br>select * from Personas<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01-1024x189.png\" alt=\"\" class=\"wp-image-1941\" width=\"794\" height=\"146\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01-1024x189.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01-300x55.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01-768x142.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01-1536x283.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_01.png 1600w\" sizes=\"auto, (max-width: 794px) 100vw, 794px\" \/><\/figure>\n\n\n\n<p><strong>Crear una tabla Edge para las relaciones entre personas<\/strong><br>Create table Grupos<br>(<br>GrupoFormacion Date<br>) As Edge<br>go<\/p>\n\n\n\n<p><strong>Insertar relaciones en la Graph Table Personas y la tabla Edge Grupos.<\/strong><\/p>\n\n\n\n<p>La relaci\u00f3n entre personas se forman con dos instrucciones select que representan las partes From y To de la relaci\u00f3n.En cada instrucci\u00f3n se debe extraer el dato que representa al nodo usando la funci\u00f3n $node_id.<\/p>\n\n\n\n<p><strong>Relaci\u00f3n entre las personas con c\u00f3digo 105, Carlos Pereda Mendoza y la que tiene el c\u00f3digo 078, Ingrid Chavez Alvarado.<\/strong> <strong>Note que estas relaciones para este ejercicio definen la formaci\u00f3n de un grupo y se ha incluido un campo adicional en el Edge que es la fecha de creaci\u00f3n del grupo.<\/strong><\/p>\n\n\n\n<p>insert into Grupos values<br>((Select $node_id from Personas where PersonasCodigo = &#8216;105&#8217;),<br>(Select $node_id from Personas where PersonasCodigo = &#8216;078&#8217;),&#8217;21\/01\/2019&#8242;)<br>go<\/p>\n\n\n\n<p><strong>Insertar mas relaciones entre personas<\/strong><br>insert into Grupos values<br>((Select $node_id from Personas where PersonasCodigo = &#8216;078&#8217;),<br>(Select $node_id from Personas where PersonasCodigo = &#8216;450&#8217;),&#8217;08\/12\/2018&#8242;)<br>go<br>insert into Grupos values<br>((Select $node_id from Personas where PersonasCodigo = &#8216;059&#8217;),<br>(Select $node_id from Personas where PersonasCodigo = &#8216;105&#8217;),&#8217;13\/01\/2019&#8242;)<br>go<br>insert into Grupos values<br>((Select $node_id from Personas where PersonasCodigo = &#8216;105&#8217;),<br>(Select $node_id from Personas where PersonasCodigo = &#8216;059&#8217;),&#8217;23\/11\/2018&#8242;)<br>go<\/p>\n\n\n\n<p><strong>Ver el contenido de la tabla Edge Grupos<\/strong><br>select * from Grupos<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_02-1024x212.png\" alt=\"\" class=\"wp-image-1942\" width=\"894\" height=\"185\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_02-1024x212.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_02-300x62.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_02-768x159.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_02.png 1434w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Para visualizar las relaciones de Carlos Pereda (C\u00f3d. 105)<\/strong><\/p>\n\n\n\n<p>Select Personas2.PersonasPaterno, Personas2.PersonasMaterno,<br>Personas2.PersonasNombre, G.GrupoFormacion<br>from Personas As Personas1, Grupos As G, Personas As Personas2<br>where match(Personas1-(G)->Personas2)<br>and Personas1.PersonasCodigo = &#8216;105&#8217;<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesServer_03.png\" alt=\"\" class=\"wp-image-1943\" width=\"819\" height=\"155\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesServer_03.png 672w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesServer_03-300x57.png 300w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Cl\u00e1usula Match del Select<\/strong><\/p>\n\n\n\n<p>Especifica una condici\u00f3n de b\u00fasqueda para un gr\u00e1fico. MATCH solo se puede usar con el nodo gr\u00e1fico y las tablas Edge, en la instrucci\u00f3n SELECT como parte de la cl\u00e1usula WHERE.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_04.png\" alt=\"\" class=\"wp-image-1944\" width=\"700\" height=\"509\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_04.png 882w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_04-300x218.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_GraphTablesSQL_04-768x559.png 768w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Usando Graph Tables en SQL Server Una base de datos gr\u00e1fica es una colecci\u00f3n de nodos (o v\u00e9rtices) y bordes (o relaciones). Un nodo representa una entidad (por ejemplo, una persona o una organizaci\u00f3n) y un borde representa una relaci\u00f3n entre los dos nodos que conecta (por ejemplo, grupos o amigos). Tanto los nodos como &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=1937\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1939,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[216,215,202],"class_list":["post-1937","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-edge","tag-graph-tables","tag-node","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1937"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1937\/revisions"}],"predecessor-version":[{"id":1945,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1937\/revisions\/1945"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1939"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}