/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     10/01/2008 10:18:22 a.m.                     */
/*==============================================================*/


/*==============================================================*/
/* Table: SEG_GRANTBAK                                          */
/*==============================================================*/
CREATE TABLE SEG_GRANTBAK  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   COD_GRUPO            VARCHAR2(30)                    NOT NULL,
   COD_CIA              CHAR(3)                         NOT NULL,
   IND_DERECHO          CHAR(1)                         NOT NULL,
   NAME                 VARCHAR2(32)                    NOT NULL,
   LABEL                VARCHAR2(64)                    NOT NULL,
   MNUNAME              VARCHAR2(32)                    NOT NULL,
   CONSTRAINT SEG_GRANTBAK_PK PRIMARY KEY (MODID, ITEMID, COD_GRUPO, COD_CIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: SEG_OPCION                                            */
/*==============================================================*/
CREATE TABLE SEG_OPCION  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   NOM_FORMA            VARCHAR2(12)                    NOT NULL,
   NOM_TABLA            VARCHAR2(30)                    NOT NULL,
   IND_PRIVILEGIO       CHAR(1)                         NOT NULL
      CONSTRAINT SEG_OPCION_IND_PRIVIL_CK CHECK (IND_PRIVILEGIO IN ('T','S')),
   CONSTRAINT SEG_OPCION_PK PRIMARY KEY (MODID, ITEMID, NOM_FORMA, NOM_TABLA)
);

/*==============================================================*/
/* Table: SEG_OPCIONBAK                                         */
/*==============================================================*/
CREATE TABLE SEG_OPCIONBAK  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   NOM_FORMA            VARCHAR2(12)                    NOT NULL,
   NOM_TABLA            VARCHAR2(30)                    NOT NULL,
   IND_PRIVILEGIO       CHAR(1)                         NOT NULL,
   NAME                 VARCHAR2(32)                    NOT NULL,
   LABEL                VARCHAR2(64)                    NOT NULL,
   MNUNAME              VARCHAR2(32)                    NOT NULL,
   CONSTRAINT SEG_OPCIONBAK_PK PRIMARY KEY (MODID, ITEMID, NOM_FORMA, NOM_TABLA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: SEG_GRANT                                             */
/*==============================================================*/
CREATE TABLE SEG_GRANT  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   COD_GRUPO            VARCHAR2(30)                    NOT NULL,
   COD_CIA              CHAR(3)                         NOT NULL,
   IND_DERECHO          CHAR(1)                         NOT NULL
      CONSTRAINT SEG_GRANT_IND_DERECHO_CK CHECK (IND_DERECHO IN ('S','N')),
   CONSTRAINT SEG_GRANT_PK PRIMARY KEY (MODID, ITEMID, COD_GRUPO, COD_CIA)
);

/*==============================================================*/
/* Index: SEGGRUPO_GRANT_FK                                     */
/*==============================================================*/
CREATE INDEX SEGGRUPO_GRANT_FK ON SEG_GRANT (
   COD_GRUPO ASC
);

/*==============================================================*/
/* Index: SEGPARAMETRO_GRANT_FK                                 */
/*==============================================================*/
CREATE INDEX SEGPARAMETRO_GRANT_FK ON SEG_GRANT (
   COD_CIA ASC
);

/*==============================================================*/
/* Table: SEG_GRPUSUARIO                                        */
/*==============================================================*/
CREATE TABLE SEG_GRPUSUARIO  (
   COD_GRUPO            VARCHAR2(30)                    NOT NULL,
   COD_USUARIO          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT SEG_GRPUSUARIO_PK PRIMARY KEY (COD_GRUPO, COD_USUARIO)
);

/*==============================================================*/
/* Index: SEGUSUARIO_GRPUSUARIO_FK                              */
/*==============================================================*/
CREATE INDEX SEGUSUARIO_GRPUSUARIO_FK ON SEG_GRPUSUARIO (
   COD_USUARIO ASC
);

/*==============================================================*/
/* Table: SEG_GRUPO                                             */
/*==============================================================*/
CREATE TABLE SEG_GRUPO  (
   COD_GRUPO            VARCHAR2(30)                    NOT NULL,
   DES_GRUPO            VARCHAR2(30)                    NOT NULL,
   CONSTRAINT SEG_GRUPO_PK PRIMARY KEY (COD_GRUPO)
);

/*==============================================================*/
/* Table: SEG_MNUITM                                            */
/*==============================================================*/
CREATE TABLE SEG_MNUITM  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   PARENTID             NUMBER(6)                       NOT NULL,
   NAME                 VARCHAR2(32)                    NOT NULL,
   LABEL                VARCHAR2(64)                    NOT NULL,
   MNUNAME              VARCHAR2(32)                    NOT NULL,
   REFS                 VARCHAR2(32),
   JERID                NUMBER(6),
   CONSTRAINT SEG_MNUITM_PK PRIMARY KEY (MODID, ITEMID)
);

/*==============================================================*/
/* Index: SEGMNUMNU_ITEM_FK                                     */
/*==============================================================*/
CREATE INDEX SEGMNUMNU_ITEM_FK ON SEG_MNUITM (
   MODID ASC,
   PARENTID ASC
);

/*==============================================================*/
/* Table: SEG_MNUMNU                                            */
/*==============================================================*/
CREATE TABLE SEG_MNUMNU  (
   MODID                NUMBER(4)                       NOT NULL,
   ITEMID               NUMBER(6)                       NOT NULL,
   NAME                 VARCHAR2(32)                    NOT NULL,
   LABEL                VARCHAR2(64)                    NOT NULL,
   CONSTRAINT SEG_MNUMNU_PK PRIMARY KEY (MODID, ITEMID)
);

/*==============================================================*/
/* Table: SEG_MNUMOD                                            */
/*==============================================================*/
CREATE TABLE SEG_MNUMOD  (
   MODID                NUMBER(4)                       NOT NULL,
   MODKEY               CHAR(4)                         NOT NULL,
   OWNER                VARCHAR2(32)                    NOT NULL,
   NAME                 VARCHAR2(32)                    NOT NULL,
   MENUFILE             VARCHAR2(80),
   CONSTRAINT SEG_MNUMOD_PK PRIMARY KEY (MODID),
   CONSTRAINT SEG_MNUMOD_UQ UNIQUE (MODKEY, OWNER)
);

/*==============================================================*/
/* Table: SEG_USUARIO                                           */
/*==============================================================*/
CREATE TABLE SEG_USUARIO  (
   COD_USUARIO          VARCHAR2(30)                    NOT NULL,
   DES_USUARIO          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT SEG_USUARIO_PK PRIMARY KEY (COD_USUARIO)
);

/*==============================================================*/
/* Table: SEGPARAMETRO                                          */
/*==============================================================*/
CREATE TABLE SEGPARAMETRO  (
   CIA                  CHAR(3)                         NOT NULL,
   ACCMENUFAL           CHAR(1)                         NOT NULL,
   CONSTRAINT SEGPARAMETRO_PK PRIMARY KEY (CIA)
);

/*==============================================================*/
/* View: SEG_HGRANT                                             */
/*==============================================================*/
CREATE OR REPLACE VIEW SEG_HGRANT AS
SELECT DISTINCT MODID, ITEMID, NAME, LABEL, MNUNAME
FROM SEG_GRANTBAK;

/*==============================================================*/
/* View: SEG_HOPCION                                            */
/*==============================================================*/
CREATE OR REPLACE VIEW SEG_HOPCION AS
SELECT DISTINCT MODID, ITEMID, NAME, LABEL, MNUNAME
FROM SEG_OPCIONBAK;



/*==============================================================*/
/* View: SEG_MATRIZ                                             */
/*==============================================================*/
CREATE OR REPLACE VIEW SEG_MATRIZ AS
SELECT S.MODID, C.COD_CIA, G.COD_GRUPO, S.OWNER, S.NAME, C.DES_CIA, G.DES_GRUPO
FROM GEN_COMPANIA C, SEG_MNUMOD S, SEG_GRUPO G;

ALTER TABLE SEG_GRANT
   ADD CONSTRAINT SEGPARAMETRO_GRANT_FK FOREIGN KEY (COD_CIA)
      REFERENCES SEGPARAMETRO (CIA);

ALTER TABLE SEG_GRANT
   ADD CONSTRAINT SEGGRUPO_GRANT_FK FOREIGN KEY (COD_GRUPO)
      REFERENCES SEG_GRUPO (COD_GRUPO);

ALTER TABLE SEG_GRPUSUARIO
   ADD CONSTRAINT SEGGRUPO_GRPUSUARIO_FK FOREIGN KEY (COD_GRUPO)
      REFERENCES SEG_GRUPO (COD_GRUPO);

ALTER TABLE SEG_GRPUSUARIO
   ADD CONSTRAINT SEGUSUARIO_GRPUSUARIO_FK FOREIGN KEY (COD_USUARIO)
      REFERENCES SEG_USUARIO (COD_USUARIO);

ALTER TABLE SEG_MNUITM
   ADD CONSTRAINT SEGMNUMNU_ITEM_FK FOREIGN KEY (MODID, PARENTID)
      REFERENCES SEG_MNUMNU (MODID, ITEMID);

ALTER TABLE SEG_MNUMNU
   ADD CONSTRAINT SEGMNUMOD_MENU_FK FOREIGN KEY (MODID)
      REFERENCES SEG_MNUMOD (MODID);

