Published on

January 1, 2014

Diseño de un esquema de base de datos para la gestión de empleados y proyectos

Cuando se diseña una base de datos para una organización donde los empleados pueden trabajar en múltiples proyectos, es importante considerar las relaciones entre empleados, proyectos, designaciones y tecnologías. En este artículo, discutiremos cómo diseñar un esquema de base de datos para gestionar eficientemente estas relaciones.

Tabla de empleados

El primer paso es crear una tabla para almacenar información sobre los empleados. Esta tabla debe incluir campos como ID de empleado, nombre, apellido y fecha de ingreso. Aquí tienes un ejemplo de cómo se puede crear la tabla de empleados:

	CREATE TABLE [dbo].[tbl_employees](
		[employeeid] [int] IDENTITY(1,1) NOT NULL,
		[firstname] [nvarchar](100) NULL,
		[lastname] [nvarchar](100) NULL,
		[regdatum] [datetime] NULL,
		[nvarchar](100) NULL,
		CONSTRAINT [PK_tbl_employees] PRIMARY KEY CLUSTERED (
			[employeeid] ASC
		)
	) ON [PRIMARY]
	

Para insertar datos de empleados en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_employees(firstname, lastname, regdatum, email)
	VALUES
		('Vivek', 'Johari', '02/01/2007', 'vivek@xyz.com'),
		('Mohit', 'Rathi', '03/01/2013', 'mohit@xyz.com'),
		('Aviral', 'Lamba', '05/01/2007', 'aviral@xyz.com'),
		('Chandra', 'Singh', '10/01/2010', 'chandra@xyz.com'),
		('Abhinav', 'Golwalkar', '01/01/2007', 'abhinav@xyz.com'),
		('Gaurav', 'Negi', '05/01/2013', 'gaurav@xyz.com');
	

Tabla de proyectos

A continuación, crea una tabla para almacenar información sobre los proyectos. Esta tabla debe incluir campos como ID de proyecto, nombre de proyecto, fecha de inicio y fecha de finalización. Aquí tienes un ejemplo de cómo se puede crear la tabla de proyectos:

	CREATE TABLE [dbo].[tbl_project](
		[projectid] [int] IDENTITY(1,1) NOT NULL,
		[projectname] [nvarchar](200) NULL,
		[startdate] [datetime] NULL,
		[enddate] [datetime] NULL,
		CONSTRAINT [PK_tbl_project] PRIMARY KEY CLUSTERED (
			[projectid] ASC
		)
	) ON [PRIMARY]
	

Para insertar datos de proyectos en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_project(projectname, startdate, enddate)
	VALUES
		('Learninglms', '02/01/2007', '10/01/2010'),
		('Bankpds', '05/01/2013', '05/01/2014'),
		('ERPsystem', '05/01/2012', '10/01/2014');
	

Tabla de designaciones

Ahora, crea una tabla para almacenar información sobre las designaciones. Esta tabla debe incluir campos como ID de designación y nombre de designación. Aquí tienes un ejemplo de cómo se puede crear la tabla de designaciones:

	CREATE TABLE [dbo].[tbl_designation](
		[designationid] [int] IDENTITY(1,1) NOT NULL,
		[designationname] [nvarchar](150) NULL,
		CONSTRAINT [PK_tbl_designation] PRIMARY KEY CLUSTERED (
			[designationid] ASC
		)
	) ON [PRIMARY]
	

Para insertar datos de designaciones en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_designation(designationname)
	VALUES
		('Trainee'),
		('Software Engineer'),
		('Tech Lead'),
		('Senior Tech Lead'),
		('Project Manager');
	

Tabla de tecnologías

Por último, crea una tabla para almacenar información sobre las tecnologías. Esta tabla debe incluir campos como ID de tecnología y nombre de tecnología. Aquí tienes un ejemplo de cómo se puede crear la tabla de tecnologías:

	CREATE TABLE [dbo].[tbl_technology](
		[technologyid] [int] IDENTITY(1,1) NOT NULL,
		[technologyname] [nvarchar](150) NULL,
		CONSTRAINT [PK_tbl_technology] PRIMARY KEY CLUSTERED (
			[technologyid] ASC
		)
	) ON [PRIMARY]
	

Para insertar datos de tecnologías en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_technology(technologyname)
	VALUES
		('JAVA'),
		('C#'),
		('CSS'),
		('JQUERY'),
		('SQL Server'),
		('ORACLE'),
		('PHP'),
		('HTML5');
	

Relación empleado-proyecto

En cualquier organización, un empleado puede trabajar en múltiples proyectos y un proyecto puede tener múltiples empleados. Para gestionar esta relación de muchos a muchos, crea una tabla de transacciones para almacenar la relación entre empleados y proyectos. Esta tabla debe incluir campos como ID de empleado-proyecto, ID de empleado, ID de proyecto, fecha de inicio de asignación y fecha de finalización de asignación. Aquí tienes un ejemplo de cómo se puede crear la tabla de relación empleado-proyecto:

	CREATE TABLE [dbo].[tbl_employee_project](
		[empprojectid] [int] IDENTITY(1,1) NOT NULL,
		[employeeid] [int] NULL,
		[projectid] [int] NULL,
		[allocationstartdate] [datetime] NULL,
		[allocationenddate] [datetime] NULL
	) ON [PRIMARY]
	

Para establecer relaciones de clave externa con las tablas maestras, usa los siguientes comandos:

	ALTER TABLE [dbo].[tbl_employee_project] WITH CHECK ADD CONSTRAINT [FK_tbl_employee_project_tbl_employees] FOREIGN KEY([employeeid]) REFERENCES [dbo].[tbl_employees] ([employeeid])
	ALTER TABLE [dbo].[tbl_employee_project] CHECK CONSTRAINT [FK_tbl_employee_project_tbl_employees]

	ALTER TABLE [dbo].[tbl_employee_project] WITH CHECK ADD CONSTRAINT [FK_tbl_employee_project_tbl_project] FOREIGN KEY([projectid]) REFERENCES [dbo].[tbl_project] ([projectid])
	ALTER TABLE [dbo].[tbl_employee_project] CHECK CONSTRAINT [FK_tbl_employee_project_tbl_project]
	

Para insertar datos de relación empleado-proyecto en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_employee_project (employeeid, projectid, allocationstartdate, allocationenddate)
	VALUES
		(1, 2, '05/01/2013', NULL),
		(1, 3, '05/01/2012', '05/20/2013'),
		(2, 1, '02/01/2007', '10/01/2010'),
		(3, 1, '02/01/2007', '10/01/2010'),
		(4, 3, '05/01/2012', NULL),
		(5, 2, '05/01/2013', NULL),
		(5, 3, '05/01/2012', NULL),
		(6, 3, '05/01/2012', NULL);
	

Relación empleado-designación

En una organización, un empleado puede tener una designación a la vez, pero su designación puede cambiar con el tiempo. Para almacenar esta información y mantener un historial de las designaciones de los empleados, crea una tabla de transacciones. Esta tabla debe incluir campos como ID de empleado-designación, ID de empleado, ID de designación y fecha de asignación. Aquí tienes un ejemplo de cómo se puede crear la tabla de relación empleado-designación:

	CREATE TABLE [dbo].[tbl_emp_designation](
		[empdesignationid] [int] IDENTITY(1,1) NOT NULL,
		[employeeid] [int] NULL,
		[designationid] [int] NULL,
		[allocationdate] [datetime] NULL
	) ON [PRIMARY]
	

Para establecer relaciones de clave externa con las tablas maestras, usa los siguientes comandos:

	ALTER TABLE [dbo].[tbl_emp_designation] WITH CHECK ADD CONSTRAINT [FK_tbl_emp_designation_tbl_designation] FOREIGN KEY([designationid]) REFERENCES [dbo].[tbl_designation] ([designationid])
	ALTER TABLE [dbo].[tbl_emp_designation] CHECK CONSTRAINT [FK_tbl_emp_designation_tbl_designation]

	ALTER TABLE [dbo].[tbl_emp_designation] WITH CHECK ADD CONSTRAINT [FK_tbl_emp_designation_tbl_employees] FOREIGN KEY([employeeid]) REFERENCES [dbo].[tbl_employees] ([employeeid])
	ALTER TABLE [dbo].[tbl_emp_designation] CHECK CONSTRAINT [FK_tbl_emp_designation_tbl_employees]
	

Para insertar datos de relación empleado-designación en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_emp_designation(employeeid, designationid, allocationdate)
	VALUES
		(1, 3, '01/06/2012'),
		(1, 4, GETDATE()),
		(2, 2, '01/06/2012'),
		(3, 1, '01/06/2013'),
		(4, 2, '10/01/2010'),
		(4, 3, GETDATE()),
		(5, 3, '01/01/2007'),
		(5, 4, '01/06/2012'),
		(5, 5, GETDATE()),
		(6, 2, '05/01/2013');
	

Relación empleado-tecnología

Un empleado puede tener conocimientos de múltiples tecnologías y una tecnología puede ser conocida por múltiples empleados. Para gestionar esta relación de muchos a muchos, crea una tabla de transacciones. Esta tabla debe incluir campos como ID de empleado-tecnología, ID de empleado e ID de tecnología. Aquí tienes un ejemplo de cómo se puede crear la tabla de relación empleado-tecnología:

	CREATE TABLE [dbo].[tbl_employee_technology](
		[emptechnologyid] [int] IDENTITY(1,1) NOT NULL,
		[employeeid] [int] NULL,
		[technologyid] [int] NULL
	) ON [PRIMARY]
	

Para establecer relaciones de clave externa con las tablas maestras, usa los siguientes comandos:

	ALTER TABLE [dbo].[tbl_employee_technology] WITH CHECK ADD CONSTRAINT [FK_tbl_employee_technology_tbl_employees] FOREIGN KEY([employeeid]) REFERENCES [dbo].[tbl_employees] ([employeeid])
	ALTER TABLE [dbo].[tbl_employee_technology] CHECK CONSTRAINT [FK_tbl_employee_technology_tbl_employees]

	ALTER TABLE [dbo].[tbl_employee_technology] WITH CHECK ADD CONSTRAINT [FK_tbl_employee_technology_tbl_technology] FOREIGN KEY([technologyid]) REFERENCES [dbo].[tbl_technology] ([technologyid])
	ALTER TABLE [dbo].[tbl_employee_technology] CHECK CONSTRAINT [FK_tbl_employee_technology_tbl_technology]
	

Para insertar datos de relación empleado-tecnología en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_employee_technology(employeeid, technologyid)
	VALUES
		(1, 6),
		(1, 5),
		(1, 1),
		(1, 8),
		(1, 3),
		(2, 3),
		(2, 8),
		(2, 4),
		(3, 3),
		(3, 8),
		(3, 4),
		(4, 5),
		(4, 2),
		(4, 4),
		(5, 5),
		(5, 2),
		(5, 4),
		(6, 1),
		(6, 3),
		(6, 4);
	

Relación proyecto-tecnología

Por último, crea una tabla de transacciones para almacenar la relación entre proyectos y tecnologías. Esta tabla debe incluir campos como ID de proyecto-tecnología, ID de proyecto e ID de tecnología. Aquí tienes un ejemplo de cómo se puede crear la tabla de relación proyecto-tecnología:

	CREATE TABLE [dbo].[tbl_project_technology](
		[projecttechnologyid] [int] IDENTITY(1,1) NOT NULL,
		[projectid] [int] NULL,
		[technologyid] [int] NULL
	) ON [PRIMARY]
	

Para establecer relaciones de clave externa con las tablas maestras, usa los siguientes comandos:

	ALTER TABLE [dbo].[tbl_project_technology] WITH CHECK ADD CONSTRAINT [FK_tbl_project_technology_tbl_project] FOREIGN KEY([projectid]) REFERENCES [dbo].[tbl_project] ([projectid])
	ALTER TABLE [dbo].[tbl_project_technology] CHECK CONSTRAINT [FK_tbl_project_technology_tbl_project]

	ALTER TABLE [dbo].[tbl_project_technology] WITH CHECK ADD CONSTRAINT [FK_tbl_project_technology_tbl_technology] FOREIGN KEY([technologyid]) REFERENCES [dbo].[tbl_technology] ([technologyid])
	ALTER TABLE [dbo].[tbl_project_technology] CHECK CONSTRAINT [FK_tbl_project_technology_tbl_technology]
	

Para insertar datos de relación proyecto-tecnología en la tabla, puedes usar el siguiente comando:

	INSERT INTO tbl_project_technology(projectid, technologyid)
	VALUES
		(1, 8),
		(1, 4),
		
Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.