Ticker

6/recent/ticker-posts

Construyendo Modelo de Base de Datos - Módulo de Seguridad

Bueno, así que e decido implementar un modelo de base de datos que soporte y administre de manera dinámica y desde la base de datos el menu y sub menús de una determinada la aplicación y los acceso según el rol de cada usuario. 

En determinado momento he compartido un modelo de base de datos que tuve la oportunidad de implementarlo, si desean pueden echarle un vistazo ya que esto nos dará un panorama de lo que esperamos lograr. 

Luego de tener el modelo construido, implementaremos los objetos de base de datos (procedimientos almacenados, funciones y vista) y desarrollaremos una aplicación web haciendo uso del patrón de MVC, así que sin más detalles iniciamos construyendo nuestra base de datos y las tablas necesarias.

SCRIPTS  - BASE DE DATOS:
----------------------------------
-- CREACIÓN DE LA BASE DE DATOS
----------------------------------
USE MASTER
GO
IF EXISTS(SELECT NAME FROM SYSDATABASES WHERE NAME = 'BD_SEGURIDAD')
 DROP DATABASE BD_SEGURIDAD
GO
CREATE DATABASE BD_SEGURIDAD
GO

DESCRIPCIÓN DE TABLAS:

SEG_ROL_DASH:
Encarga de registrar la descripción del rol que se asignará a cada usuario.

SEG_MENU_DASH:
Encargado de registrar la descripción del menu a mostrar en el dashboard, así mismo registra el controlador, la acción (se considera que MVC siempre esta conformado por controlador/accion) y el detalle de la imagen a mostrar en el menu.

SEG_USUARIO_DASH:
Encargado de registrar los datos de acceso (usuario y password). Esta tabla tiene una particularidad única, ya que además registra el id del empleado al cual se asigna una cuenta usuario de acceso a la aplicación, de esta particularidad detallaremos más adelante.

SEG_USUARIO_ROL_DASH:
Es el encargo de unir las tres tablas arriba mencionadas (SEG_ROL_DASH, SEG_MENU_DASH y SEG_MENU_DASH) es decir es la tabla que contempla el acceso y control de menu de nuestra aplicación.

SCRIPTS - TABLAS:
----------------------------------
-- CREACIÓN DE TABLAS IDENTIFICAS
----------------------------------
USE [BD_SEGURIDAD]
GO
CREATE TABLE [SEG_ROL_DASH](
 [ID_ROL] [numeric](8, 0) NOT NULL,
 [DES_ROL] [varchar](50) NOT NULL,
 [STS_REGISTRO] [bit] NOT NULL,
 [USU_CREADOR] [varchar](20) NOT NULL,
 [FEC_CREACION] [datetime] NOT NULL,
 [USU_ACTUALIZA] [varchar](20) NULL,
 [FEC_ACTUALIZA] [datetime] NULL,
 CONSTRAINT [PK_SEG_ROL_DASH] PRIMARY KEY CLUSTERED
(
 [ID_ROL] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [SEG_MENU_DASH](
 [ID_MENU] [numeric](8, 0) NOT NULL,
 [DESCRIPCION] [varchar](50) NULL,
 [CONTROLADOR] [varchar](50) NOT NULL,
 [ACCION] [varchar](50) NOT NULL,
 [IMAGEN] [varchar](50) NULL,
 [STS_REGISTRO] [bit] NOT NULL,
 [USU_CREADOR] [varchar](20) NOT NULL,
 [FEC_CREACION] [datetime] NOT NULL,
 [USU_ACTUALIZA] [varchar](20) NULL,
 [FEC_ACTUALIZA] [datetime] NULL,
 CONSTRAINT [PK_SEG_MENU_DASH] PRIMARY KEY CLUSTERED
(
 [ID_MENU] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [SEG_USUARIO_DASH](
 [ID_USUARIO] [numeric](8, 0) NOT NULL,
 [COD_EMPLEADO] [numeric](10, 0) NOT NULL,
 [USUARIO] [varchar](20) NOT NULL,
 [PASSWORD] [varchar](20) NOT NULL,
 [STS_REGISTRO] [bit] NOT NULL,
 [STS_RECORDAR] [bit] NOT NULL,
 [USU_CREADOR] [varchar](20) NOT NULL,
 [FEC_CREACION] [datetime] NOT NULL,
 [USU_ACTUALIZA] [varchar](20) NULL,
 [FEC_ACTUALIZA] [datetime] NULL,
 CONSTRAINT [PK_SEG_USUARIO_DASH] PRIMARY KEY CLUSTERED
(
 [ID_USUARIO] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [SEG_USUARIO_ROL_DASH](
 [ID_USUARIO_ROL] [numeric](8, 0) NOT NULL,
 [ID_ROL] [numeric](8, 0) NOT NULL,
 [ID_USUARIO] [numeric](8, 0) NOT NULL,
 [ID_MENU] [numeric](8, 0) NOT NULL,
 [STS_REGISTRO] [bit] NOT NULL,
 [USU_CREADOR] [varchar](20) NOT NULL,
 [FEC_CREACION] [datetime] NOT NULL,
 [USU_ACTUALIZA] [varchar](20) NULL,
 [FEC_ACTUALIZA] [datetime] NULL,
 CONSTRAINT [PK_SEG_USUARIO_ROL_DASH] PRIMARY KEY CLUSTERED
(
 [ID_USUARIO_ROL] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
MODELO:

El la siguiente fase continuaremos creando los procedimientos almacenados a nivel de base datos, luego invocaremos todos los procedimientos almacenados creados desde la fuente de dominio de nuestra aplicación a construir.

La fase II ya se encuentran disponible.

Publicar un comentario

0 Comentarios