DEV Community

GoyesDev
GoyesDev

Posted on

[CoreData] Crear un modelo de datos

Creando el archivo

En Xcode, vamos a "File" > "New" > "File from Template…", buscamos "Data Model", y lo bautizamos con el nombre "CompanyModel". Asegurarse de que la extensión sea "xcdatamodeld" (terminado en "d").

En esencia, el archivo llamado "Core Data Model Bundle", de extensión ".xcdatamodeld" (termina en "d"), es el contenedor que maneja múltiples versiones del model de CoreData, lo que facilita la migración y evolución de los esquemas.

Por otro lado, el archivo "Individual Data Model Version", de extensión ".xcdatamodel", es una versión individual del modelo de datos que define una estructura para un punto específico en el tiempo.

El "Bundle" tiene en su interior uno o más modelos individuales junto con un Info.plist que ayuda a versionar el modelo de datos.

El modelo de datos solo almacena los metadatos de la base de datos, es decir: ¿qué clases componen a la base de datos? ¿Cuáles son sus propiedades? ¿Cómo se relacionan entre sí? No se almacenan datos de la base de datos.


Crear un tipo de entidad en el modelo conceptual

En la parte inferior izquierda de la pantalla buscar el botón "Add Entity". Al presionarlo, aparecerá una nueva entidad dentro de la sección "ENTITIES", justo encima de la sección "COMPOSITE TYPES". Al hacer doble clic sobre el nombre "Entity" se puede cambiar el nombre de la entidad, para lo que conviene usar algún prefijo (e.g. "DB") o sufijo (e.g. "Entity") que haga alusión a la base de datos.

Nueva entidad

En la sección de atributos, se puede agregar los atributos primitivos que haga falta (e.g. "name", "number", "location"). Para ello, se presiona el símbolo de adición en la sección "Attributes". En la columna "Type" se puede definir el tipo del atributo. En caso de que requiera que el atributo sea de tipo complejo, tendrá que establecer una relación.

DBEmployee con sus atributos primitivos

En caso de que algún atributo tenga alguna característica especial (e.g. opcional, calculado, que tenga un valor por defecto, que tenga validación con regex o deba estar dentro de un rango), se puede ir al inspector de atributos y modificar lo que haga falta. Por ejemplo, todos los atributos vienen por defecto opcionales - Se puede quitar esta característica donde convenga.

A continuación se presentan las características de los atributos del empleado:

  • Número de identificación: Integer de 64 bits, obligatorio (NO opcional), y con valor por defecto 0.
  • Fecha de nacimiento: Date, obligatorio (NO opcional) y sin valor por defecto.
  • Nombre: String, obligatorio (NO opcional), sin valor por defecto, longitud mínima 1, y longitud máxima 60
  • Apellido: String, obligatorio (NO opcional) y sin valor por defecto, longitud mínima 1, y longitud máxima 60
  • Dirección: String, obligatorio (NO opcional) y sin valor por defecto
  • Salario: Integer 64 bits, obligatorio (NO opcional), con valor mínimo 0
  • Sexo: Bool, obligatorio (NO opcional), con valor por defecto "NO".

Relaciones

Seleccionar una entidad (e.g. "DBEmployee) y buscar la sección "Relationships" debajo de "Attributes". Allí hacer clic en "Add Items" para agregar una nueva relación. Configurar con un nombre y destino.

En la parte derecha de la pantalla aparece el inspector del modelo de datos (que se parece al inspector de atributos), que tiene toda la información sobre la relación. Se puede decir si la relación es opcional o requerida, se puede marcar el destino de la relación, su relación inversa, regla de borrado y tipo (que puede ser "uno-a-uno" o "uno-a-varios").

Al crear una relación entre A y B (A -> B), si no existe ninguna relación en el sentido contrario (B -> A), entonces no podremos elegir ninguna opción para la relación inversa. Si, en caso contrario, ya existe al menos una relación en sentido contrario, podremos elegirla como "inversa", que automáticamente fijará la relación actual como inversa de la otra.

Top comments (0)