{"id":2717,"date":"2023-02-08T14:41:04","date_gmt":"2023-02-08T14:41:04","guid":{"rendered":"https:\/\/manualsqlserver.com\/?p=2717"},"modified":"2023-02-08T14:41:04","modified_gmt":"2023-02-08T14:41:04","slug":"comparando-relaciones-entre-tablas-int-vs-nchar","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2717","title":{"rendered":"Comparando relaciones entre tablas Int vs. nchar"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar__D.png\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar__D.png\" alt=\"\" class=\"wp-image-2718\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Comparando relaciones entre tablas con campos tipo Entero vs. Caracter<\/strong><\/p>\n\n\n\n<p>En el dise\u00f1o de bases de datos relacionales existen diversas formas de hacer el dise\u00f1o y va a depender mucho de la experiencia del DBA o del Developer, en este art\u00edculo se analiza la diferencia al relacionar las tablas con un datos de tipo Entero o con datos de tipo caracter.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Muchos dise\u00f1adores de base de datos usan la propiedad Identity para definir un campos ID con el que se establece la relaci\u00f3n con otras tablas, aquellas tablas que tengan un ID con Primary key, deber\u00edan tener un campo adicional para guardar el c\u00f3digo del registro en el que se debe definir una restricci\u00f3n de tipo Unique para que este c\u00f3digo no se repita y se convierta en una clave alterna (AK). Tambi\u00e9n se va a demostrar que tener el c\u00f3digo como clave alterna, la b\u00fasqueda es mas lenta.<\/p>\n\n\n\n<p>Para la comparaci\u00f3n se va a crear dos esquemas, luego en estos esquemas se crear\u00e1n tablas de Categorias y Productos<br>identicas, con los mismos registros, relacionadas en un esquema con campos tipo Entero y en el otro esquema con datos<br>tipo Caracter, luego realizaremos consultas analizando el tiempo en que demora mostrarse el resultado.<\/p>\n\n\n\n<p class=\"has-regular-font-size\"><strong>Usando la base de datos Northwind<br><\/strong>use Northwind<br>go<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p>Para este ejercicio se va a crear dos esquemas: Entero  y Caracter,  y establecer la relaci\u00f3n entre las tablas con el dato de tipo Entero para el esquema llamado Entero y con el tipo de datos nchar para el esquema llamado Caracter. Luego se va a comparar usando el resultado del Plan de ejecuci\u00f3n para determinar con cual de las relaciones es mas r\u00e1pida la extracci\u00f3n de datos.<\/p>\n\n\n\n<p><strong>Creando los esquemas<\/strong><br>Create schema Entero<br>go<br>Create schema Caracter<br>go<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Tablas en el Esquema Entero<\/strong><\/p>\n\n\n\n<p><strong>Creando las tablas Categor\u00edas y Productos en el esquema Entero, y copiar los registros de Categories y Products de la base de datos Northwind. En este esquema las tablas est\u00e1n relacionadas por un campo de tipo Int.<\/strong><\/p>\n\n\n\n<p>Create table Entero.Categorias<br>(<br>CategoriasCodigo int identity,<br>CategoriasDescripcion nvarchar(100),<br>CategoriasEstado nchar(1)<br>constraint CategoriasPK Primary key (CategoriasCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>Insert into Entero.Categorias<br>select C.CategoryName + ': ' + CAST(C.Description as nvarchar(80)), 'A'<br>from dbo.Categories As C<br>go<\/p>\n\n\n\n<p>Para ver los registros<br>Select * from Entero.Categorias<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"349\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01.png\" alt=\"\" class=\"wp-image-2719\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01.png 840w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01-300x125.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01-768x319.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_01-795x330.png 795w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Registros de la Tabla Categor\u00edas.<\/figcaption><\/figure>\n\n\n\n<p>Create table Entero.Productos<br>(<br>ProductosCodigo int identity,<br>ProductosDescripcion nvarchar(100),<br>ProductosPrecio Numeric(9,2),<br>ProductosStock Numeric(9,2),<br>ProductosEstado nchar(1),<br>CategoriasCodigo int<br>constraint ProductosPK Primary key (ProductosCodigo),<br>constraint ProductosCategoriasFK Foreign key (CategoriasCodigo)<br>references Entero.Categorias(CategoriasCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>insert into Entero.Productos<br>select<br>P.ProductName,<br>P.UnitPrice,<br>P.UnitsInStock, 'A',<br>P.CategoryID<br>from dbo.Products As P<br>go<\/p>\n\n\n\n<p><strong>Para ver los registros<br><\/strong>select * from Entero.Productos<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1007\" height=\"659\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02.png\" alt=\"\" class=\"wp-image-2720\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02.png 1007w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02-300x196.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02-768x503.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_02-795x520.png 795w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/a><figcaption class=\"wp-element-caption\">Registros de la Tabla Productos <\/figcaption><\/figure>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-large-font-size\"><strong>Esquema Caracter<\/strong><\/p>\n\n\n\n<p>Creando las tablas Categor\u00edas y Productos en el esquema Caracter, y copiar los registros de Categories y Products de la base de datos Northwind, este esquema las tablas est\u00e1n relacionadas por un campo de tipo nchar<\/p>\n\n\n\n<p>Create table Caracter.Categorias<br>(<br>CategoriasCodigo nchar(4),<br>CategoriasDescripcion nvarchar(100),<br>CategoriasEstado nchar(1)<br>constraint CategoriasPK Primary key (CategoriasCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Note que el campo c\u00f3digo es de tipo nchar(4)<\/strong><\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>Insert into Caracter.Categorias<br>select<br>Right('000' +trim(Str((C.CategoryID))),4) ,<br>C.CategoryName + ': ' + CAST(C.Description as nvarchar(80)), 'A'<br>from dbo.Categories As C<br>go<\/p>\n\n\n\n<p>Create table Caracter.Productos<br>(<br>ProductosCodigo nchar(7),<br>ProductosDescripcion nvarchar(100),<br>ProductosPrecio Numeric(9,2),<br>ProductosStock Numeric(9,2),<br>ProductosEstado nchar(1),<br>CategoriasCodigo nchar(4),<br>constraint ProductosPK Primary key (ProductosCodigo),<br>constraint ProductosCategoriasFK Foreign key (CategoriasCodigo)<br>references Caracter.Categorias(CategoriasCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>insert into Caracter.Productos<br>select<br>Right('000000' +trim(Str((P.ProductID))),7) ,<br>P.ProductName,<br>P.UnitPrice,<br>P.UnitsInStock, 'A',<br>Right('000' +trim(Str((P.CategoryID))),4)<br>from dbo.Products As P<br>go<\/p>\n\n\n\n<p>Listando los registros de ambas tablas, se puede ver que son los mismos del esquema en el que relacionan con<br>el dato de tipo Int.<br>select * from Caracter.Categorias<br>go<br>select * from Caracter.Productos<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"755\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03-1024x755.png\" alt=\"\" class=\"wp-image-2721\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03-1024x755.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03-300x221.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03-768x566.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03-795x586.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_03.png 1072w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Tablas Categor\u00edas y Productos con campos nchar<\/figcaption><\/figure>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Comparando los listado<\/strong>s<\/p>\n\n\n\n<p><strong>Listado con la relaci\u00f3n con campos tipo Int (Entero)<\/strong><\/p>\n\n\n\n<p>Select<br>P.ProductosCodigo,<br>P.ProductosDescripcion,<br>P.ProductosPrecio,<br>C.CategoriasDescripcion<br>from Entero.Productos As P<br>join Entero.Categorias As C on P.CategoriasCodigo = C.CategoriasCodigo<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1014\" height=\"682\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04.png\" alt=\"\" class=\"wp-image-2722\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04.png 1014w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04-300x202.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04-768x517.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_04-795x535.png 795w\" sizes=\"auto, (max-width: 1014px) 100vw, 1014px\" \/><\/a><\/figure>\n\n\n\n<p>El Plan de ejecuci\u00f3n de la orden anterior nos muestra el costo<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05-1024x548.png\" alt=\"\" class=\"wp-image-2723\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05-1024x548.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05-300x161.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05-768x411.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05-795x426.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_05.png 1027w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Note el costo de: 0.0189873<\/strong><\/p>\n\n\n\n<p><strong>Listado con la relaci\u00f3n con campos tipo nchar (Caracter)<\/strong><\/p>\n\n\n\n<p>Select<br>P.ProductosCodigo,<br>P.ProductosDescripcion,<br>P.ProductosPrecio,<br>C.CategoriasDescripcion<br>from Caracter.Productos As P<br>join Caracter.Categorias As C on P.CategoriasCodigo = C.CategoriasCodigo<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"673\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06-1024x673.png\" alt=\"\" class=\"wp-image-2724\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06-1024x673.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06-300x197.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06-768x505.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06-795x522.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_06.png 1056w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>El Plan de ejecuci\u00f3n de la orden anterior nos muestra el costo<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"511\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07-1024x511.png\" alt=\"\" class=\"wp-image-2725\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07-1024x511.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07-300x150.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07-768x383.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07-795x397.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_07.png 1086w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\">Note el costo de: 0.0189873, igual al costo de la relaci\u00f3n de las dos tablas con los datos de tipo Entero.<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background has-larger-font-size\">Conclusi\u00f3n:  <strong>Ambos planes de ejecuci\u00f3n muestran el mismo tiempo de respuesta, por lo que, siguiendo este par\u00e1metro, es indiferente el uso de cualquiera de los tipos de datos para relacionar las tablas, puede ser Int o Nchar.<\/strong><\/p>\n\n\n\n<p><strong>Importante: Puede ejecutar el siguiente comando para eliminar los planes de ejecuci\u00f3n del cache para obtener datos<br>mas exactos.<br><\/strong>DBCC FREEPROCCACHE WITH NO_INFOMSGS<br>go<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p>Cuando se tiene un campo que es el ID de tipo num\u00e9rico, la tabla debe tener otro campo que almacene el c\u00f3digo del registro. Para el siguiente ejercicio se va a crear un esquema llamado ConCodigo y en este se van a crear las tablas Categor\u00edas y Productos en la que se agregar\u00e1 un campo para el c\u00f3digo.<\/p>\n\n\n\n<p>El objetivo es demostar que si se usa ID de tipo n\u00famero o entero, al buscar un registro filtrando por el c\u00f3digo, el tiempo de b\u00fasqueda por el campo que no es la PK demora m\u00e1s. El campo que almacena el c\u00f3digo debe ser clave alterna, para ello se especificar\u00e1 la restricci\u00f3n Unique.<\/p>\n\n\n\n<p><strong>Creando el esquema <\/strong><\/p>\n\n\n\n<p>Create schema ConCodigo<br>go<\/p>\n\n\n\n<p><strong>La tabla de Categorias<\/strong><\/p>\n\n\n\n<p>Create table ConCodigo.Categorias<br>(<br>CategoriasID int identity,<br>CategoriasCodigo nchar(4),<br>CategoriasDescripcion nvarchar(100),<br>CategoriasEstado nchar(1)<br>constraint CategoriasPK Primary key (CategoriasID),<br>constraint CategoriasCodigoUQ Unique (CategoriasCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>Insert into ConCodigo.Categorias<br>select<br>Right('000' +trim(Str((C.CategoryID))),4) ,<br>C.CategoryName + ': ' + CAST(C.Description as nvarchar(80)), 'A'<br>from dbo.Categories As C<br>go<br>Ver las categor\u00edas<br>select * from ConCodigo.Categorias<br>go<br>El listado de las categor\u00edas se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08.png\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"352\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08.png\" alt=\"\" class=\"wp-image-2726\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08.png 936w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08-300x113.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08-768x289.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_08-795x299.png 795w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/a><figcaption class=\"wp-element-caption\">Tabla Categor\u00edas.<\/figcaption><\/figure>\n\n\n\n<p><strong>Note que existe un campo adicional para el c\u00f3digo de la Categor\u00eda.<\/strong><\/p>\n\n\n\n<p><strong>Los Productos<\/strong><\/p>\n\n\n\n<p>Create table ConCodigo.Productos<br>(<br>ProductosID int identity,<br>ProductosCodigo nchar(7),<br>ProductosDescripcion nvarchar(100),<br>ProductosPrecio Numeric(9,2),<br>ProductosStock Numeric(9,2),<br>ProductosEstado nchar(1),<br>CategoriasID int,<br>constraint ProductosPK Primary key (ProductosID),<br>constraint ProductosCodigoUQ Unique (ProductosCodigo),<br>constraint ProductosCategoriasFK Foreign key (CategoriasID)<br>references ConCodigo.Categorias(CategoriasID)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertando los registros<\/strong><\/p>\n\n\n\n<p>insert into ConCodigo.Productos<br>select<br>Right('000000' +trim(Str((P.ProductID))),7) ,<br>P.ProductName,<br>P.UnitPrice,<br>P.UnitsInStock, 'A',<br>P.CategoryID<br>from dbo.Products As P<br>go<\/p>\n\n\n\n<p><strong>Ver los productos<br><\/strong>select * from ConCodigo.Productos<br>go<br>La imagen siguiente muestra el resultado<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09-1024x639.png\" alt=\"\" class=\"wp-image-2727\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09-1024x639.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09-300x187.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09-768x479.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09-795x496.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_09.png 1116w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Realizando las b\u00fasquedas<\/strong><\/p>\n\n\n\n<p>Para comprobar los tiempos se va a buscar el registro por el c\u00f3digo en las tablas Categor\u00edas y Productos, se va a comparar el costo en la tabla del esquema Caracter que tiene el campo C\u00f3digo de tipo nchar como PK versus la b\u00fasqueda en la tabla que tiene el c\u00f3digo como clave alterna, la que se ha especificado la restricci\u00f3n de tipo Unique.<\/p>\n\n\n\n<p>Select * from Caracter.Categorias As C<br>where C.CategoriasCodigo = '0003'<br>go<br>Plan de ejecuci\u00f3n estimado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"478\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_10.png\" alt=\"\" class=\"wp-image-2728\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_10.png 754w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_10-300x190.png 300w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Note el costo de 0.0032831<\/strong><\/p>\n\n\n\n<p><strong>B\u00fasqueda en la tabla que tiene ID, el campo con el c\u00f3digo es clave alterna.<\/strong><\/p>\n\n\n\n<p>Select * from ConCodigo.Categorias As C<br>where C.CategoriasCodigo = '0003'<br>go<br>Plan de ejecuci\u00f3n estimado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"440\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11.png\" alt=\"\" class=\"wp-image-2729\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11.png 996w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11-300x133.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11-768x339.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11-795x351.png 795w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Note el costo de 0.0065704<\/strong><\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background has-large-font-size\"><strong>Resumen<br>Costo de la b\u00fasqueda de una categor\u00eda en la tabla con PK tipo nchar: 0.0032831<br>Costo de la b\u00fasqueda de una categor\u00eda en la tabla con PK tipo int: 0.0065704<br>Definitivamente la b\u00fasqueda en la tabla con dato de tipo nchar como PK es m\u00e1s r\u00e1pida.<\/strong><\/p>\n\n\n\n<p><strong>B\u00fasqueda del producto<\/strong><\/p>\n\n\n\n<p>Las instrucciones para mostrar el producto con c\u00f3digo \"0000003\" son<br>Select * from Caracter.Productos As P<br>where P.ProductosCodigo = '0000003'<br>go<br>Plan de ejecuci\u00f3n estimado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11A.png\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"443\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11A.png\" alt=\"\" class=\"wp-image-2731\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11A.png 761w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_11A-300x175.png 300w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Note el costo de 0.0032831<\/strong><\/p>\n\n\n\n<p><strong>B\u00fasqueda en la tabla que tiene ID, el campo con el c\u00f3digo es clave alterna.<br><\/strong>Select * from ConCodigo.Productos As P<br>where P.ProductosCodigo = '0000003'<br>go<br>Plan de ejecuci\u00f3n estimado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12.png\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"459\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12.png\" alt=\"\" class=\"wp-image-2730\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12.png 930w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12-300x148.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12-768x379.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/02\/ManualSQL_ComparandoRelaciones_Int_Nchar_12-795x392.png 795w\" sizes=\"auto, (max-width: 930px) 100vw, 930px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Note el costo de 0.0065704<\/strong><\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background has-large-font-size\"><strong>Resumen<br>Costo de la b\u00fasqueda de una categor\u00eda en la tabla con PK tipo nchar: 0.0032831<br>Costo de la b\u00fasqueda de una categor\u00eda en la tabla con PK tipo int: 0.0065704<br>Definitivamente la b\u00fasqueda en la tabla con dato de tipo nchar con PK es m\u00e1s r\u00e1pida.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comparando relaciones entre tablas con campos tipo Entero vs. Caracter En el dise\u00f1o de bases de datos relacionales existen diversas formas de hacer el dise\u00f1o y va a depender mucho de la experiencia del DBA o del Developer, en este art\u00edculo se analiza la diferencia al relacionar las tablas con un datos de tipo Entero &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2717\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2718,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,9],"tags":[268,289,290],"class_list":["post-2717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","category-registros-vistas","tag-foreign-key","tag-tipo-int","tag-tipo-nchar","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2717","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=2717"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2717\/revisions"}],"predecessor-version":[{"id":2732,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2717\/revisions\/2732"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2718"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}