El mapeo de SQL es una técnica más sencilla en la que las columnas imaginadas por un usuario normal (normalmente decimos como metadatos) se almacenan en forma de tablas diferentes. Toda la información de la tabla se puede unir con otras tablas mediante relaciones especiales como una clave externa en una base de datos. En todas y cada una de las tablas, tendremos Clave principal o Clave única para identificar de forma única un valor de columna en una tabla. Hay diferencias sutiles entre las claves únicas y primarias.
- La clave única identificará de forma única un registro, pero puede permitir valores nulos.
- La clave principal identificará de forma única un registro, pero no permitirá valores nulos.
- Además, tenemos claves foráneas para combinar los detalles entre 2 o más tablas (se debe tener cuidado durante el tiempo de asignación de SQL)
Por ejemplo, para un empleado, la información personal se almacena en una tabla. la información oficial se almacena en otra tabla. Tabla de detalles personales: ‘employeeId’ es la clave principal para la tabla A (tabla principal). En la tabla B (donde se almacenan los detalles oficiales), la tabla A Clave principal se mantiene como clave externa. mesa infantil). Solo cuando existe un padre, el hijo también existirá. En el mismo concepto, cuando un empleado ‘E001’ está presente en la tabla A, el mismo empleado ‘E0001’ puede estar presente en la tabla B. De lo contrario, no puede existir. De manera similar, al eliminar, primero debemos eliminar todos los registros del hijo y luego solo el padre. Para mantener todo este tipo de relaciones, existen varias claves en bases de datos como SQL Server. Ahora llegando a la parte de asignación de SQL,
Tipo de datos Java |
Tipo de datos de SQL Server equivalente |
---|---|
Cuerda | varchar, nvarchar |
int, corto, byte | Bit, tinyInt, SmallInt, Integer, BigInt, etc., |
flotador, doble | Real, Flotante, Decimal |
En Java, si estamos creando una clase, entonces es una clase de objeto Java simple y antigua (POJO) y tendrá diferentes atributos según los requisitos. Veamos con un ejemplo para la clase POJO ‘empleado’ en java
Java
public class Employee { // different attributes // for Employee class // This is required to // identify the employee uniquely private int id; // firstName of an employee private String firstName; // lastName of an employee private String lastName; // salary of an employee private int salary; // qualification of an employee private String qualification; //..... }
Podemos mapear estos atributos de empleados en tablas de SQL Server fácilmente. Vamos a ver cómo hacer eso
CREATE TABLE [dbo].[Employee] ( [id] INT NOT NULL, -- Primary Key and hence not null [firstName] VARCHAR (20) NULL, [lastName] VARCHAR (20) NULL, [salary] INT NULL, [qualificatio] VARCHAR (50) NULL, CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED ([id] ASC) );
Siempre que necesitemos guardar los datos o necesitemos tratar con la base de datos. En un lenguaje de programación orientado a objetos como Java, necesitamos crear una clase POJO y todos los nombres de atributos y su tipo de datos deben coincidir con la tabla correspondiente en una base de datos como SQL Server.
Manera de mapear las tablas y relaciones presentes en SQL a los objetos y sus relaciones en Java
- Propiedad y
- Mapeo de relaciones
1. Mapeo de propiedades
En el mapeo de propiedades, el mapeo involucra los atributos físicos y los atributos virtuales de los objetos a una o más columnas. A veces no es obligatorio ni necesario asignar todos los atributos de los objetos a sus respectivas columnas en las tablas. La razón es que estamos usando datos (tipo de datos de string en Java/varchar en SQL Server) a base de persistencia. Pocas columnas son obligatorias y son útiles para identificar los registros de forma única. Todas las columnas de clave principal son obligatorias. Por lo tanto, en Java también debería estar presente y se asigna a la clave principal de una tabla. En el ejemplo anterior, ID es la columna Clave principal. Además, es posible que necesitemos tener lo siguiente en la clase de empleado
status (String datatype in java/varchar in SQL Server) emailId (String datatype in java/varchar in SQL Server) mobileNumber (String datatype in java/varchar in SQL Server) gender (String datatype in java/varchar in SQL Server) emergencyContactNumber (String datatype in java/varchar in SQL Server) emergencyContactPerson (String datatype in java/varchar in SQL Server) etc.,
Considere otro ejemplo de inventario. Allí, para todos y cada uno de los artículos, el precio se almacena y el usuario proporciona la cantidad de un artículo, por lo tanto, debido a este cálculo de cantidad para un artículo, se maneja en el nivel de la aplicación y finalmente se almacena en la tabla. Durante este tiempo, la fórmula de cálculo es simple y de vez en cuando puede variar dependiendo de los descuentos que se aplicaron. Por lo tanto, no es necesario almacenar la fórmula de cálculo en la base de datos. Entonces, prácticamente verifique lo que sea necesario y asigne esos atributos a las columnas correspondientes en la base de datos. Esta forma de hacer el mapeo se llama mapeo de propiedades.
2. Mapeo de relaciones
Hay tres tipos de relaciones, a saber, uno a uno/uno a muchos o muchos a uno/muchos a muchos relaciones que deben tenerse en cuenta al asignar los objetos a SQL. En términos de SQL Server,
- uno a uno es sencillo: un estudiante solo puede tener un rango.
- relación de uno a muchos: un solo estudiante puede tomar múltiples cursos de programación como Java, Python, etc., un estudiante puede participar en múltiples deportes como cricket, voleibol, etc.
- relación de muchos a muchos: un solo estudiante puede asignarse a varios proyectos y, de manera similar, un solo proyecto puede asignarse a varios estudiantes.
En los objetos, las relaciones se clasifican según la direccionalidad. Puede ser unidireccional/bidireccional. En unidireccional, un objeto no es consciente del otro pero el otro es consciente del primero. es decir, el objeto de estudiante es consciente del objeto de rango pero el objeto de rango no es consciente del objeto de estudiante. Bidireccional es todo lo contrario. Ambos objetos saben el uno del otro. El objeto empleado es consciente del objeto jefe de departamento y el objeto jefe de departamento es consciente del empleado.
Forma de representación UML
- Unidireccional se indica con una sola flecha
- Bidireccional se denota por una sola línea
Estos se siguen en los diagramas UML.
- Para asociatividad uno a uno 1…1 se denota
- Para uno a muchos, 1..* se denota
- Para muchos a muchos, *..* se denota
Se debe tener cuidado cuando hay claves foráneas presentes en la relación. Si están disponibles, tiene que ser manejado de manera diferente. De lo contrario, es bastante más fácil solamente. Cuando hay claves foráneas, las restricciones de integridad referencial entrarán en escena.
Publicación traducida automáticamente
Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA