{"id":137,"date":"2017-09-18T22:10:13","date_gmt":"2017-09-18T22:10:13","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=137"},"modified":"2020-05-20T00:14:40","modified_gmt":"2020-05-20T00:14:40","slug":"tablas-claves-foraneas-y-campos-calculados","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=137","title":{"rendered":"Tablas &#8211; Claves For\u00e1neas y Campos Calculados"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_FKCalculadosD.png\" alt=\"\" class=\"wp-image-1218\" width=\"317\" height=\"311\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Creaci\u00f3n de Tablas relacionadas usando Foreign Keys<\/strong><\/h1>\n\n\n\n<p>Las tablas en la base de datos est\u00e1n relacionadas entre s\u00ed a trav\u00e9s de la clave primaria de una tabla y esta se convierte en clave for\u00e1nea en la tabla con la que se relaciona.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Los campos calculados en las tablas permiten almacenar los datos que se calculan en base a los campos de la misma tabla, es recomendable en casos donde las consultas pueden resultar muy pesadas ya que antes de mostrar la consulta con datos calculados debe realizar el c\u00e1lculo del mismo dato. Por ejemplo, en un documento de venta donde existe el precio de un art\u00edculo y la cantidad vendida se podr\u00eda guardar el importe de esta venta como campo calculado multiplicando los campos del precio y la cantidad.<\/p>\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>Al insertar los registros, los campos calculados no se debe incluir en la instrucci\u00f3n, estos se calculan de manera autom\u00e1tica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Diagrama para el ejercicio a desarrollar<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.manualsqlserver.com\/wp-content\/uploads\/2017\/05\/ManualSQL_FKCalculados.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_FKCalculados.png\" alt=\"\" class=\"wp-image-1217\" width=\"760\" height=\"722\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_FKCalculados.png 594w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_FKCalculados-300x285.png 300w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/a><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tablas Facturas, Productos, Detalle de Facturas, Clientes<\/strong><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Campos calculados<\/strong><\/h2>\n\n\n\n<p>En este ejercicio se crean las tablas relacionadas usando Clave For\u00e1nea (Foreign Key), note primero que se crea la tabla Clientes que tiene como clave primaria el campo ClientesCodigo, adem\u00e1s de la tabla Productos con su clave ProductosCodigo.<\/p>\n\n\n\n<p>Create table Clientes<br>(ClientesCodigo nchar(15),<br>ClientesNombre nvarchar(100),<br>ClientesDireccion nvarchar(200),<br>constraint ClientesPK Primary key (ClientesCodigo) )<br>go<\/p>\n\n\n\n<p>Create table Productos<br>(ProductosCodigo nchar(10),<br>ProductosDescripcion nvarchar(100) not null,<br>ProductosPrecio Numeric(9,2),<br>ProductosStock Numeric(9,2),<br><strong>ProductosValorDelStock As (ProductosPrecio * ProductosStock)<\/strong><br>constraint ProductosPK Primary key (ProductosCodigo) )<br>go<\/p>\n\n\n\n<p>Al crear la tabla de Facturas se han incluido para el c\u00e1lculo del Monto del impuesto y para el c\u00e1lculo del monto total de la factura dos campos calculados. Estos campos no se especifican al insertar el registro.(<a href=\"http:\/\/www.manualsqlserver.com\/?p=294\">Ver Insert<\/a>)<\/p>\n\n\n\n<p>Create table Facturas<br>(FacturasNumeroSerie nchar(5), FacturasNumeroFactura nchar(7),<br>FacturasFecha DateTime, FacturasMontoSinIGV Numeric(9,2),<br>FacturasPorcentajeDeIGV Numeric(8,5),<br>ClientesCodigo nchar(15),<br><strong>FacturasMontoIGV As (FacturasMontoSinIGV * FacturasPorcentajeDeIGV),<\/strong><br><strong> FacturasMontoTotal As (FacturasMontoSinIGV + FacturasMontoSinIGV * FacturasPorcentajeDeIGV )<\/strong><br>constraint FacturasPK primary key (FacturasNumeroSerie, FacturasNumeroFactura),<br>constraint FacturasClienteFK Foreign key (ClientesCodigo)<br>references Clientes (ClientesCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>&#8212; Tabla Detalle de Factura<\/strong><\/p>\n\n\n\n<p>Create table DetalleFactura<br>(FacturasNumeroSerie nchar(5), FacturasNumeroFactura nchar(7),<br>ProductosCodigo nchar(10),ProductosDescripcion nvarchar(100),<br>DetalleCantidadVendida Numeric(9,2), DetallePrecioVenta Numeric(9,2),<br><strong>DetalleOImporte As (DetalleCantidadVendida * DetallePrecioVenta)<\/strong><br>constraint DetalleFacturaPK<br>Primary key (FacturasNumeroSerie,FacturasNumeroFactura,ProductosCodigo),<br>constraint DetalleFacturaFacturasFK<br>Foreign key (FacturasNumeroSerie,FacturasNumeroFactura)<br>references Facturas (FacturasNumeroSerie,FacturasNumeroFactura),<br>constraint DetalleFacturaProductosFK Foreign key (ProductosCodigo)<br>references Productos (ProductosCodigo)<br>)<br>go<\/p>\n\n\n\n<p>Note en negrita los campos calculados<\/p>\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","protected":false},"excerpt":{"rendered":"<p>Creaci\u00f3n de Tablas relacionadas usando Foreign Keys Las tablas en la base de datos est\u00e1n relacionadas entre s\u00ed a trav\u00e9s de la clave primaria de una tabla y esta se convierte en clave for\u00e1nea en la tabla con la que se relaciona.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=137\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1218,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[28,102,46,47,103,57],"class_list":["post-137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-esquemas","tag-fk","tag-particion","tag-permisos","tag-pk","tag-tablas","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/137","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=137"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":1220,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions\/1220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1218"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}