UNIVER SIDA D NACIONAL AUTÓNOMA DE MÉXICOFACULTAD DE INGENIERÍA BASES DE DATOS DISTRIBUIDAS DRA. MARÍA DEL PILAR ANGELES PROYECTO: BARES EQUIPO bdistri11 POZAS MONTOYA KARLA JOSSAVET RAMÍREZ LINO FRANCISCO ANÁLISIS (Hoja de Requerimientos.Esquema de Fragmentación. Diagramas Entidad-relacion y relacional global Configuración de servidores,dipositivos,usuarios) Se tiene una compañía que administra 3 bares, en cada bar, se desea obtener la información de los gustos de los clientes, así como que clientes frecuentan que bares y cuales cervezas son sus preferidas. De cada cliente se desea saber su nombre, domicilio. De cada bar su nombre, domicilio y horario de atención. Sobre las cervezas, la marca, los grados y el tipo. Los bares solo sirven 5 marcas de cerveza, pero pueden diferir las marcas que cada bar sirve. La información de los clientes la administra la compañía que administra los 3 bares. Cada bar administra sus propios datos, así como que cervezas sirve y el precio de venta. Considere las cuestiones siguientes sobre la Base de Datos. 1. Dado el nombre del bebedor, saber el domicilio de éste. 2. Dado el nombre del bebedor, conocer el nombre y domicilio de los bares que sirvan alguna cerveza que le guste. 3. Dado el nombre del bebedor y el nombre del bar, conocer las cervezas sirve, que le gustan al bebedor y que tenga el máximo valor de grado. 4. Dado el nombre del bebedor y el nombre del bar, ¿Cuáles son las cervezas que no le gustan y que venden en el Bar? Se debe mantener integridad de dominio y referencial en la base de datos. Además la tabla cliente. se concentra la información de los 3 Bares ubicados en la Condesa. CENTRO CONDESA Bar02 ROMA Bar02 COMPANIA Bar Bar Vende Cerveza Cliente Consume Bar_Cte Bar01 Vende01 Vende02 Vende03 Vende _______ ________ _______ Cerveza Cliente Cliente Cliente Cliente ______ ______ ______ Consume Bar_Cte01 Bar_Cte02 Bar_Cte03 Bar_Cte Considerando que existen 3 bares y un nodo desde donde se administra la información de los clientes. es una tabla que aunque se administra desde el nodo de la Compañía. . Col Roma y Col Centro. mientras que en el Servidor Remoto.ESQUEMA DE FRAGMENTACIÓN. De las 6 tablas con las que contamos identificamos un catalogo de cervezas que se venden en los diferentes bares. como se especifica en la hoja de requerimientos. La información de cada bar se encuentra en diferentes segmentos de disco. REPLICACIÓN Y UBICACIÓN DE DATOS Contamos con dos servidores: Servidor Local Servidor Remoto flinor_ASE:5000 Remoto:6000 En el Servidor local es donde se administra a los tres bares con los que cuenta la compañía. de acuerdo al bar por administrar. es necesario replicarla en el resto de los nodos. pues la mayoría de las consultas están en función del nombre del cliente. habilite el acceso remoto: sp_configure "remote access" --Para que el login del Servidor Local.flinor2 "bares"*/ /*Configuración de los servidor Remoto"*/ /*Desde el servidor Remoto*/ --Usando el procedimiento almacenado sp_addserver. por lo que se creará un índice de acuerdo a la marca de cerveza preferida. FLINOR2. pues es un parámetro recurrente en las consultas a la base de datos Por último creamos una relación de los clientes y bares. que se fragmentará horizontalmente de acuerdo al id_bar. FLINOR2. También creamos un índice por el nombre del cliente (bebedor). habilite la opción 'trusted' utilizando el procedimiento almacenado del sistema sp_remoteoption: sp_remoteoption flinor_ASE. ServerB. defina el servidor local: sp_addserver flinor_ASE --Usando el procedimiento almacenado sp_configure. ServerA.distri11f. true .bares /*Asignacion de un usuario al Login previamente creado*/ sp_adduser FLINOR2. /*Creación del usuario principal"*/ /*Creacioón de login FLINOR2 con pass distri11f y DB primaria use master sp_addlogin FLINOR2.La tabla “consume” contiene la información de los gustos de nuestros clientes. Esta última tabla nos pareció pertinente pues creemos que cada bar debe al menos conocer los clientes con los que cuenta. flinor2.flinor2 --Para evitar la verificación de contraseñas cuando la contraseña del login remoto y local son diferentes. se pueda conectar al servidor Remoto. trusted. utilice el procedimiento almacenado del sistema sp_addremotelogin para definir un login remoto en el Servidor Remoto: sp_addremotelogin flinor_ASE. vdevno = 6./*Creación de los archivos fisicos que contendran los datos para la base de datos "admin_bares" en en el servidor local flinor_ASE:5000"*/ use master go --Para el nodo del de los Administradores de los 3 Bares disk init name = "bares_admin". size = 10096 go disk init name = "bares_admin_log". y mantendra la info de los clientes*/ create database bares on bares_admin log on bares_admin_log /*Añadimos al usuario en la nueva base de datos creada*/ use bares go sp_adduser FLINOR2. vdevno = 5 . size = 4096 go /*______________________________Creación de la Base de Datos que administrará los 3 Bares.flinor2--Usuario previamente creado go --Le damos todos los privilegios sobre la base al usuario grant all to flinor2 . physname = "g:\sybase\bares_admin\bares_admin.log". physname = "g:\sybase\bares_admin\bares_admin.data" . log". vdevno = 16. size = 4096 go disk init name = "roma_log". size = 4096 go disk init name = "condesa_log". size = 4096 go disk init name = "centro_log". vdevno = 14. size = 4096 go --Para el nodo del Bar en la CENTRO disk init name = "centro_base"./*Creación de los archivos fisicos que contendran los datos para la base de datos "bares" en en el servidor Remoto:6000 "*/ use master go --Para el nodo del Bar en la CONDESA disk init name = "condesa_base". size = 4096 go --Para el nodo del Bar en la ROMA disk init name = "roma_base". physname = "c:\sybase\bares\condesa\condesa. vdevno = 11 . physname = "c:\sybase\bares\condesa\condesa. vdevno = 13 .data" . vdevno = 12. vdevno = 15 .log".data" . physname = "c:\sybase\bares\roma\roma. physname = "c:\sybase\bares\centro\centro.log". size = 4096 go . physname = "c:\sybase\bares\centro\centro.data" . physname = "c:\sybase\bares\roma\roma. flinor2 go grant all to flinor2 go .roma_log /*Creación de use bares go sp_addsegment go sp_addsegment go sp_addsegment go los segmentos para los nodos de las bases de datos*/ condesa.bares.bares.bares.centro_base roma.centro_base./*______________________________Creación de la Base de Datos en donde se concentrará la información de cada bar*/ create database bares on condesa_base.roma_base /*Asignacion de todos los permisos de creacion de objetos al usuario:flinor en la DB bares*/ use bares go sp_adduser FLINOR2.centro_log.condesa_base centro.roma_base log on condesa_log. procedimientos almacenados y triggers) .SERVIDOR LOCAL (Creación de tablas. horario_cerrado time default "3:00" ) go create table cerveza( marca varchar(40) not null. domicilio_cte varchar(150) not null ) go create table vende( id_bar int not null . horario_abierto time default "18:00". nombre_cte varchar(80) not null.marca exec sp_primarykey consume. grados float constraint chk_grado check (grados between 0 and 32).id_bar.id_bar. ) go /*_____________________________________________________________Creación de Llaves Primarias y Foraneas*/ exec sp_primarykey bar. domicilioB varchar(150) not null./*Creación las tablas en el servidor Local"*/ use bares create table bar( id_bar int not null. id_cte char(6) not null ) go create table cliente( id_cte char(6) not null. tipo varchar(7) constraint chk_tipo check(tipo in("clara".marca exec sp_primarykey cliente. id_cte char(6) not null. marca varchar(40) not null.id_cte /*____________________________________________________________Creación de indice unicos para las llaves primarias*/ create unique index pk_bar on bar(id_bar) go create unique index pk_cerveza on cerveza(marca) . nombreB varchar(45) not null.id_cte exec sp_primarykey vende.id_bar exec sp_primarykey cerveza."obscura")) ) go create table bar_cte( id_bar int not null.id_cte exec sp_primarykey bar_cte. precio money ) go create table consume( marca varchar(40) not null.marca. Debe existir el 'id_bar' en la tabla 'bar'" go sp_addmessage 42006.marca) unique index pk_consume on consume(marca."El tipo de cerveza es 'clara' u 'obscura'" go /*____________________________________________________________Asignación de los mensajes a los Constraints de Dominio*/ sp_bindmsg chk_grado. Debe existir el 'id_cte' en la tabla 'cliente'" go sp_addmessage 42005."El cliente no existe."Los grados de la cerveza van de 0."Existen clientes que gustan de esa cerveza.42002 go /*_____________________________________________________________Mensajes para la Integridad de los Datos (triggers)*/ sp_addmessage 42003."Bar no identificado.id_cte) /*Creación las reglas del constraints y triggers para manterner la integridad de dominio e integridad referencial"*/ /*_____________________________________________________________Mensaje de Restricción de Dominios*/ sp_addmessage 42001.0 a 32.!!!" go . Debe existir 'marca' en la tabla 'cerveza'" go sp_addmessage 42004.id_cte) unique index pk_bar_cte on bar_cte(id_bar."Es posible que la cerveza no este en catalogo.0" go sp_addmessage 42002.42001 go sp_bindmsg chk_tipo.go create go create go create go create go unique index pk_cliente on cliente(id_cte) unique index pk_vende on vende(id_bar. inserted i where b.id_bar) begin raiserror 42005 rollback transaction end go .Para insertar en Consume.inserted i where c.id_cte=i.marca=i.marca) begin raiserror 42003 rollback transaction end go --Para insertar en la tabla Bar_Cte.id_cte) begin raiserror 42004 rollback transaction end else if not exists(select * from cerveza c.id_bar) begin raiserror 42005 rollback transaction end else if not exists(select * from cerveza c.marca) begin raiserror 42003 rollback transaction end go -. debe de existir tanto el bar como el cliente en sus respectivas tablas create trigger IN_bar_cte on bar_cte for insert as if not exists(select * from cliente c.id_cte=i.id_cte) begin raiserror 42004 rollback transaction end else if not exists(select * from bar b.inserted i where c. debe de existir 'marca' y 'id_cte' en sus respectivas tablas. create trigger IN_consume on consume for insert as if not exists(select * from cliente c./*CREACIÓN DE TRIGERS PARA MANTENER CONSISTENCIA EN LA INFORMACIÓN*/ -. create trigger IN_vende on vende for insert as if not exists(select * from bar b.Para insertar en VENDE.inserted i where c.id_bar=i. debe de existir 'id_bar' y 'marca' en sus respectivas tablas.marca=i.inserted i where c.inserted i where b.id_bar=i. deleted d where d.marca=deleted.inserted.id_cte end /*Creación de los Indices para optimizar las consultas*/ create index idx_cte on cliente(nombre_cte.deleted where consume.marca end go --Al borrar un cliente de la tabla cliente.marca=deleted.marca=inserted.id_cte=d.marca=c.marca from vende.deleted where vende. actualizar en la tabla consume y vende automaticamente create trigger up_cerveza_marca on cerveza for update as if update(marca) and @@rowcount=1 begin update consume set consume.--Eliminar una cerveza del catalogo solo si no hay un cliente que la consuma create trigger del_cerveza_restricted on cerveza for delete as if exists(select * from consume c.deleted d where bc.marca) begin raiserror 42006 rollback transaction end go --Al Actualizar la marca de la cerveza.inserted.id_cte delete consume from consume c.marca from consume.marca update vende set vende.id_cte) go create index idx_bar_cte on bar_cte(id_cte) go .id_cte=d.marca=inserted.deleted d where c. borrar en cascada todo registro del mismo en las relaciones correspondientes create trigger delcascade_cliente on cliente for delete as begin delete bar_cte from bar_cte bc. "Centro"."Rodriguez Raid Alan"."Ronaldo Mota Ricardo"."Roma"."Tlapan 2003") insert cliente values ("ARVM01"."Peten 08."William Rhoads Randy"."Condesa"."Coyotepec") insert cliente values ("WIRR01"."Chimalhuacan") insert cliente values ("BLGA03"."Peten 08."18:00". Madero 135."Alvarado Gabriel Yessica"."22:00"."Chapultepec") insert cliente values ("HEBJ01"."Escamilla Alvarez Angelica"."Lolotla") insert cliente ."Sonora 210. Del Cuauhtemoc". "22:00") go /*instancia de cliente*/ insert cliente values ("ROSJ01". Col Narvarte."Leandro Santiago Erika"."Tultitlan") insert cliente values ("CHSM01"."Cocotitlan") insert cliente values ("ROMR05"."Darrell Lance Abbott"."El Oro") insert cliente values ("ROJD01"."Aro Velasquez Marisol"."Nezahualcoyotl") insert cliente values ("LESE03". Del Cuauhtemoc"."Lozas Vazquez Carlos"."Francisco I."Ahumada") insert cliente values ("LOVC02". Miguel Hidalgo") insert cliente values ("MEHF01". Narvarte") insert cliente values ("SUER01"./*INSTANCIAS DE LA BASE DE DATOS EN EL SERVIDOR LOCAL*/ /*Instanciar tabla Bar*/ insert into bar values(1."Henry Bonham John"."Blancas Gomez Altziri"."Nakayama Lopez Angelica"."Av Reforma."Charles Schuldiner Michael"."Genova 89."Suarez Espino Ruben"."Allende") insert cliente values ("ALGY01"."Chalco") insert cliente values ("RORA01"."Angeles Del Pilar Maria". "3:00") insert into bar values(3."Anzures 5000. Zona Rosa") insert cliente values ("NALA02"."Melendes Hernandez Francisco"."Ronnie James Dio"."Roque Salinas Jazmin"."Av Universidad 6000") insert cliente values ("ANPM01". Del Miguel Hidalgo".Miguel Hidalgo ") insert cliente values ("ESAA01"."Huhuetla") insert cliente values ("DALA01". "4:00") insert into bar values(2."16:00". "Santiago de Anaya") cliente ("SAPR01"."Miguel Hidalgo") cliente ("LORI02"."Salinas de Gortari Carlos"."Tecoman") cliente ("RALF02"."Cerritos") cliente ("GOTS01"."El Arenal") cliente ("FLCA01"."Santiago de Anaya") cliente ("FOQV01"."Ramirez Patricio Ruben"."Colonia Centro") cliente ("SARJ01"."Sanchez Ramirez Joel"."Ramirez Patricio Ricardo"."Fox Quezada Vicente"."Soza Luna Flavio"."Tasquillo") cliente ("BILO01"."Salinas Pliego Ricardo"."Flores Chavez Antonio"."Lopez Rosendo Ivan"."Santiago de Anaya") cliente ("SAGC01"."Santiago de Anaya") cliente ("MADM01"."Bin Laden Osama"."San Salvador") cliente ("GULJ01"."Colonia Centro") cliente ("SLHC01"."Maciel Degollado Marcial"."Colonia Centro") ."Blancas Gomez Daniel"."Yahualica") cliente ("SOLF01".values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values insert values ("RALF01"."Chavez Hernandez Genaro"."Villa de Alvarez") cliente ("ESCP01"."Miguel Hidalgo") cliente ("BLGD03"."Miguel Hidalgo") cliente ("RAPR02"."Rolando Mota Rolando"."Ramirez Lino Fernando"."Colonia Centro") cliente ("GOMR04"."Arriaga Soto Omar"."Guzman Loera Joaquin"."Hernandez Gonzalez Gerardo"."Ramirez Patricio Manuel"."Slim Helu Carlos"."Carrillo Fuente Vicente"."Miguel Hidalgo") cliente ("CHHG01"."Miguel Hidalgo") cliente ("RAPM03"."Gomez Mota Rafael"."Tecozautla") cliente ("ROMR01"."Gonzales Torres Simi"."Escobar Castillo Pablo"."Santiago de Anaya") cliente ("RAPR01"."Santiago de Anaya") cliente ("ARSO05"."Emiliano Zapata") cliente ("CAFV01"."Colonia Centro") cliente ("HEGG02"."Ramirez Lino Francisco". . 7."clara") values("Heineken".3."clara") /*Instanciar tabla Vende*/ insert into vende values(1.4."clara") values("Negra Modelo"."Guinness"."Budweiser"."clara") values("American bud".4."obscura") values("Sol".5."Negra Modelo".5."Sol"..35) insert into vende values(3.5.45) insert into vende values(1.20) insert into vende values(2."obscura") values("Tecate".7.4."clara") values("Indio".30) insert into vende values(2."obscura") values("Budweiser".6."Indio"./*INSTANCIAR TABLAS insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza insert into cerveza cerveza*/ values("Radegast Birell".49."Tecate".8.4.2.3.6.4."clara") values("Corona".30) insert into vende values(2.20) insert into vende values(2.2.45) insert into vende values(3."Dunkel".35) insert into vende values(1."clara") values("Bud Light".30) insert into vende values(2.4."Corona"."Guinness".5."clara") values("Guinness"."Heineken"."Negra Modelo"."obscura") values("Dunkel"."Negra Modelo".35) insert into vende values(3.4."Budweiser".40) .4.25) insert into vende values(1.30) insert into vende values(3. "WIRR01") insert into consume values("American bud"."RORA01") insert into consume values("Corona"."MEHF01") insert into consume values("Corona"."ESAA01") insert into consume values("Corona"."ARVM01") insert into consume values("Corona"."ALGY01") insert into consume values("Corona"."ROMR05") insert into consume values("Corona"."BLGA03") insert into consume values("Corona"."SAGC01") insert into consume values("Indio"."HEGG02") insert into consume values("Budweiser"."DALA01") insert into consume values("Heineken"."BILO01") insert into consume values("Heineken"."HEBJ01") insert into consume values("American bud"."LORI02") insert into consume values("American bud"."ESCP01") insert into consume values("Heineken"."WIRR01") insert into consume values("Heineken"."HEBJ01") insert into consume values("Heineken"."SUER01") insert into consume values("Corona"."RALF02") insert into consume values("Heineken"."FLCA01") insert into consume values("Heineken"./*Instanciar tabla consume*/ insert into consume values("Corona"."RALF01") insert into consume values("Heineken"."ROJD01") insert into consume values("Heineken"."RALF01") insert into consume values("Budweiser"."SOLF01") insert into consume values("Heineken"."MADM01") insert into consume values("Indio"."ROJD01") insert into consume values("Heineken"."LESE03") insert into consume values("Corona"."CHSM01") insert into consume values("Corona"."GULJ01") insert into consume values("Heineken"."RAPR01") insert into consume values("Indio"."RAPM03") ."LOVC02") insert into consume values("Corona"."ANPM01") insert into consume values("Corona"."NALA02") insert into consume values("Corona"."GOTS01") insert into consume values("Indio"."CAFV01") insert into consume values("Heineken"."ROMR01") insert into consume values("Heineken". "RAPR02") insert into consume values("Tecate"."RAPR01") .insert into consume values("American bud"."RAPR02") insert into consume values("Tecate". "GULJ01") insert into bar_cte values(3."HEGG02") insert into bar_cte values(3."BILO01") insert into bar_cte values(3."WIRR01") insert into bar_cte values(3."GOTS01") insert into bar_cte values(2."RAPR02") insert into bar_cte values(2."RALF02") insert into bar_cte values(3./*Instanciar tabla bar_cte*/ insert into bar_cte values(1."BLGA03") insert into bar_cte values(1."HEBJ01") insert into bar_cte values(3."LORI02") insert into bar_cte values(3."RORA01") insert into bar_cte values(1."MEHF01") insert into bar_cte values(1."ESCP01") insert into bar_cte values(3."RAPR01") insert into bar_cte values(2."SAGC01") insert into bar_cte values(2."RAPM03") insert into bar_cte values(3."SOLF01") insert into bar_cte values(3."SUER01") insert into bar_cte values(1."ESAA01") insert into bar_cte values(1."MADM01") insert into bar_cte values(2."ROJD01") insert into bar_cte values(3."CAFV01") insert into bar_cte values(3."RALF01") insert into bar_cte values(3."FLCA01") insert into bar_cte values(3."ROMR05") insert into bar_cte values(1."LESE03") insert into bar_cte values(1."ALGY01") insert into bar_cte values(1."ANPM01") insert into bar_cte values(1."ROMR01") insert into bar_cte values(3."ROJD01") insert into bar_cte values(3."ARVM01") insert into bar_cte values(1."DALA01") insert into bar_cte values(3."CHSM01") insert into bar_cte values(1."RAPR02") ."NALA02") insert into bar_cte values(1."LOVC02") insert into bar_cte values(1. . flinor2./*Creación de los procedimientos almacenados.vende where id_bar=1 go --VENDE02 create procedure vende02 as select * from bares.bar where id_bar=1 go --BAR02 create procedure bar02 as select * from bares.flinor2.flinor2.flinor2.flinor2.flinor2.bar_cte where id_bar=2 go --BAR_CTE03 create procedure bar_cte03 as select * from bares.bar_cte where id_bar=1 go --BAR_CTE02 create procedure bar_cte02 as select * from bares.bar where id_bar=2 go --BAR03 create procedure bar03 as select * from bares.vende where id_bar=3 go --BAR_CTE01 create procedure bar_cte01 as select * from bares.flinor2.vende where id_bar=2 go --VENDE03 create procedure vende03 as select * from bares.flinor2.flinor2.bar_cte where id_bar=3 go .bar where id_bar=3 go --VENDE01 create procedure vende01 as select * from bares. para las proxys tables en el servidor Remoto*/ --BAR01 create procedure bar01 as select * from bares. id_bar in( select id_bar from vende where vende.id_bar in(select id_bar from bar where nombreB=@nombre_bar) ) and cerveza.domicilioB from bar where bar.grados desc go .id_cte in(select id_cte from cliente where cliente.marca order by cerveza./*PROCEDIMIENTOS ALMACENADOS PARA LAS CONSULTAS DE LA HOJA DE REQUERIMIENTOS*/ --_____CONSULTA 01 create procedure query_i @nombre_bebedor varchar(80) as select domicilio_cte from cliente where nombre_cte=@nombre_bebedor go --EJECUCION CONSULTA 01 exec query_i @nombre_bebedor="Ramirez Lino Francisco" --______CONSULTA 02 create procedure query_ii @nombre_bebedor varchar(80) as select nombreB.nombre_cte=@nombre_bebedor) ) group by cerveza.marca in( select marca from consume where consume.id_cte in (select id_cte from cliente where cliente.marca in(select marca from consume where consume.@nombre_bar varchar(45) as select * from cerveza where cerveza.nombre_cte=@nombre_bebedor) ) group by id_bar ) group by nombreB go --EJECUCION CONSULTA 02 exec query_ii "Ramirez Lino Francisco" exec query_ii "Angeles Del Pilar Maria" --___________CONSULTA 03 create procedure query_iii @nombre_bebedor varchar(80).marca in(select marca from vende where vende. @nombre_bar varchar(45) as select marca from vende.@grados.@grados=10 .id_bar and vende.@grados=6.@nombre_bar="Roma" /*PROCEDIMIENTOS ALMACENADOS "INSERTA".@tipo="obscura" --______________________SP_ACTUALIZA create procedure sp_actualiza @marca varchar(40).@tipo) end go --Ejecucion sp_inserta exec sp_inserta @marca="Duff".id_cte in(select id_cte from cliente where cliente.tipo) values(@marca.@grados float as begin update cerveza set grados=@grados where marca=@marca end go --Ejecucion sp_actualiza exec sp_actualiza @marca="Duff".marca not in (select marca from consume where consume.nombre_cte=@nombre_bebedor)) and bar.@grados float.id_bar=vende.bar where bar.nombreB=@nombre_bar go --EJECUCION CONSULTA 04 exec query_iv @nombre_bebedor="Ramirez Lino Francisco".@nombre_bar="Roma" --__________CONSULTA 04 create procedure query_iv @nombre_bebedor varchar(80).grados.--EJECUCION CONSULTA 03 exec query_iii @nombre_bebedor="Ramirez Lino Francisco"."ACTUALIZA Y "BORRA"*/ --______________________SP_INSERTA create procedure sp_inserta @marca varchar(40).@tipo varchar(7) as begin insert into cerveza(marca. --______________________SP_BORRA create procedure sp_borra @marca varchar(40) as begin delete from cerveza where marca=@marca end go --Ejecucion sp_borra exec sp_borra @marca="Duff" . RPC. replicación. Consultas de la hoja de requerimientos) .SERVIDOR REMOTO (fragmentación horizontal. nombreB varchar(45) not null. domicilioB varchar(150) not null. nombreB varchar(45) not null. horario_cerrado time default "3:00" )on centro--nombre_segmento external procedure at "flinor_ASE. nombreB varchar(45) not null.bares. horario_cerrado time default "3:00" )on roma external procedure at "flinor_ASE. horario_cerrado time default "3:00" )on condesa external procedure at "flinor_ASE.bares. domicilioB varchar(150) not null. "flinor_ASE.flinor2. horario_abierto time default "18:00". marca varchar(40) not precio money vende01( null.flinor2.bares.bares.vende01" vende02( null.flinor2.flinor2./*Creación de las tablas Remotas de acuerdo al Esquema de fragmentación*/ --BAR01 create existing table bar01( id_bar int not null. marca varchar(40) not precio money )on centro external procedure at go --VENDE02 create existing table id_bar int not null .bar01" go --BAR02 create existing table bar02( id_bar int not null.flinor2. . marca varchar(40) not precio money )on condesa external procedure at go --VENDE03 create existing table id_bar int not null .bares. "flinor_ASE. horario_abierto time default "18:00".bar02" go --BAR03 create existing table bar03( id_bar int not null.bar03" go --VENDE01 create existing table id_bar int not null .vende02" vende03( null. horario_abierto time default "18:00". domicilioB varchar(150) not null. id_cte char(6) not null )on centro external procedure at "flinor_ASE.bares.bares.flinor2.vende03" go --BAR_CTE01 create existing table bar_cte01( id_bar int not null.bar_cte03" go --CLIENTE tabla replicada create existing table cliente( id_cte char(6) not null.flinor2. id_cte char(6) not null )on roma external procedure at "flinor_ASE.bares.bares. id_cte char(6) not null )on condesa external procedure at "flinor_ASE.flinor2.bar_cte01" go --BAR_CTE02 create existing table bar_cte02( id_bar int not null.)on roma external procedure at "flinor_ASE. domicilio_cte varchar(150) not null ) external table at "flinor_ASE.cliente" go /*Pantallazos de algunas tablas fragmentadas*/ select * from vende01 .bar_cte02" go --BAR_CTE03 create existing table bar_cte03( id_bar int not null.flinor2.bares. nombre_cte varchar(80) not null.flinor2. select * from bar_cte03 select * from bar02 select * from bar03 . -Dado el nombre del bebedor. 'use bares exec query_i "Angeles Del Pilar Maria"' go 2. 'use bares exec query_ii @nombre_bebedor="Ramirez Lino Francisco"' go . conocer el nombre y domicilio de los bares que sirvan alguna cerveza que le guste. sp_remotesql flinor_ASE.-Dado el nombre del bebedor. sp_remotesql flinor_ASE./*CONSULTAS*/ Se proceden a ejecutar los procedimientos almacenados para las consultas según la hoja de requerimientos. saber el domicilio de éste. dichos procedimientos fueron definidos en el servidor local (flinor_ASE:5000) y ahora se ejecutarán desde el servidor remoto (Remoto:6000) 1. 3. que le gustan al bebedor y que tenga el máximo valor de grado. sp_remotesql flinor_ASE.@nombre_bar="Roma"' go 4.@nombre_bar="Roma"' go .-Dado el nombre del bebedor y el nombre del bar.-Dado el nombre del bebedor y el nombre del bar. 'use bares exec query_iii @nombre_bebedor="Ramirez Lino Francisco". conocer las cervezas sirve. 'use bares exec query_iv @nombre_bebedor="Ramirez Lino Francisco". ¿Cuáles son las cervezas que no le gustan y que venden en el Bar? sp_remotesql flinor_ASE.