Claves Primarias, Ajenas, secundarias, etc (Modelo Relacional Vs Real)

Si estas buscando algo nuevo y realmente productivo no dejes de ver estos videos y el inicio de este Blog

En primer lugar para entender el modelo de Velneo, nada mejor que el siguiente tutor:

http://dl.velneo.com/es/productos/v7/openapps/documentos/tutor_analisis.pdf

http://velneo.es/tutor-de-analisis/

En segundo lugar comentar que Velneo va un paso más alla que las bases de datos relacionales y no podemos establecer un paralelismo claro con la definición o el uso de Clave Primaria y Clave Ajena de otras herramientas.

Espero este potpurri os abra los ojos a las posibilidades de Velneo

Lo normal es que la clave principal, sea autonumérica, esto es lo mas cómodo
Aunque viendo lo que dice wikipedia y la normalización esto es siempre lo lógico :Wikipedia: Normalización

En Velneo esto es así , aunque puedes decirle que no sea autonumérica, pero como verás a continuación, es lo mas cómodo ya que se da la siguiente circunstancia.

    • 1º En una aplicacion Velneo, esa clave primaria puede ser totalmnte tranparente para el usurio final. Por ejemplo en una tabla de articulos, podemos definir el campo código como siguiente al último, pero el usuario siempre entrara a localizar o buscar un articulo por el campo e índice referencia que sera como tu quieras que sea, o por un indice compuesto de dos campos (Proveedor/Referencia) , por la referencia del provedor que puede ser otro campo o simplemente por trozos de palabra de su descripción, esto no es ningún handicap.Por tanto independientemente del campo código (Que podríamos entender por indice Primaria) podremos acceder por cualquier otro índice en igualdad de condiciones.
    • 2º En Velneo, unido a lo anterior, no es problema crear tantos índices como necesites, no te va a penalizar el funcionamiento.
    • 3º La no duplicación de un registro, la puedes establecer, tambien con cualquier indice que crees (Lo que entenderíamos en otros sistemas como claves secundarias), ya que te bastará decir por ejemplo que el indice formado por Proveedor / Referencia, es clave única, por tanto esa limitación tampoco es obvice para tratarlas a nuestro gusto.
    • 4º En Velneo, la definición de clave Ajena, no tiene mucho sentido, ya que su definición en las bases de datos relacionales, es que una clave ajena es aquella que siendo un campo de una tabla, es a su vez la clave principal o primaria de otra tabla.
      En Velneo vamos un paso mas alla, ya que no definimos la relación , sino que la establecemos, no teniendo que solucionarla en ejecución.Es decir cualquier campo de la tabla lo puedes definir como puntero a otra tabla, creando la relación uno a uno, y gestionandola el propio sistema, de esa manera te permitira de cualqueir registro localizar, editar un maestro mostrando su formualrio y gestioando el enlace y su modificación sin intervencion del programador o realizar cualquier operación. Pero es mas, esos enlaces los tendrás disponibles tambien en la edición de tu programa. Tu te despreocupas.

      Ese enlace, internamente, siempre se realizará con esa clave primaria o campo código, pero te reitero es trasnparente. Tu simplemente defines un campo, por ejemplo provincia en una tabla de clientes, le dices que apunta a la tabla provincias, y en el desarrollo si tienes un edit de la provincia, le diras que quieres localizar la provincia, o editar la provincia o visualizar el nombre de la provincia. El ya sabrá como obtenerlo y gestionarlo.

    • 5º Y finalmente te quedarán las relaciones uno a muchos, en los cuales , se genera un enlace Plural, por ejemplo entre un registro de la tabla provincias y todas las entidades que estan apuntando a esa provincia.
      Para ello simplemente necesitamos que la tabla entidades, tenga un índice cuyo primer componente sea la provincia, aunque esto tambien te lo genera Velneo de forma automatica, tu lo puedes manipular o crear nuevas relaciones, ya que entre paises, puede haber varias relaciones uno a muchos con entidades, por ejemplo Provincia-Codigo de entidad o provincia-Importe facturado, etc, dandote diversos ordenes.
  • 6º Tendrá gran importancia en otro tipo de enlaces como los punteros singular del plural , al margen quedan los punteros a hermanos, punteros indirectos, o relaciones uno a uno o uno a muchos sobre la misma tabla , que enriquecen de forma notable los conceptos habituales de base de datos relacional y tambien el juego posible con índices condicionados y utilizados en plurales. Por ejemplo de una entidad tener directamente sus facturas pagadas y sus facturas pedientes

Por tanto

      A) Define los campos código como autonumericos, no tiene la menor importancia.
      B) Crea los indices simples o compuestos que crees oportunos con el resto de campos, y utilizalos para que el usuario localice los registros por ellos o para acceder directamente desde otras tablas a los plurales definidos por indices compuestos con el campo puntero a la maestra y lso que te convenga a continuación.
      C) En Velneo , es muy habitual localizar por el campo nombre, gracias a la potencia del Indice por trozos de palabra. Investigas estas posibilidades, unido al posibilidad de que el Valor inicial, te mantenga el contenido automaticamente.

Por ejemplo (Aunque sea una chapuza, creo que es esclarecedor) si queremos localizar un cliente por el nombre de la provincia y no queremos hacer nada de nada, podemos crear un campo nombre de provincia, cuyo valor incial fuese el nombre que figura en la tabla provincias, es decir Provincia.nombre) . Aunque ese campo no apareciera en ningun sitio, el sistema lo gestionaría y si cambiaramos el contenido de la provincia apuntada, nos lo actualizaría automáticamente. Imagina ahora poner un campo llamado superbusqueda, cuyo valor incial sea una concatenacion de atributos propios de esa tabla y de otros. Por ejemplo para componentes de una casa de electronica “Nombre del fabricante + Nombre del fabricante alternativo + Nombre del tipo de componente + descripcion del componente en esa tabla + Etc”

En ejecución tendríamos un localizador que a medida el usuario fuera introduciendo parte o trozos de atibutos nos iría restringiendo los articulos mostrados, independientemente del orden y de que esten completos o no.

Son simplemente idéas, pero ademas con las caracteristicas de funcionamiento del Valor inicial, ese campo se mantendría actualizado de forma automática.
D) No tengas reparos en crear indices, como se aconseja en otras bases de datos, no te van a penalizar el rendimiento.

E) Cuando de un registro quieres acceder a la información de un puntero, esto es automático, en cualquier formulario, informe, parametro, etc en el que estes en un registro, podras utilizar información de un Maestro o del maesto d eun maestro. Si la base de datos esta bien construida, te permitira en el diseño de un informe o un formulario de facturas, mostrar el nombre de la provincia, de la ciudad, del cliente en el que estas, o incluso con enlaces mas avanzados, el cliente mas importante de la provincia de la ciudad del cliente en el que estas. SI no puedes, modificas tu base de datos, creas las relaciones y en programación podrás acceder con lso asistentes, si lo consigues, en ejecución funcionará de la misma forma.

D) Cuando es al reves, siempre hablaremos de Plurales, lo cual se define en la Tabla, pudiendo siempre leer los registros que estan apuntando al maestro en el que estamos. Por ejemplo de un cliente podemos leer todas sus facturas, simplemente diciendo Cargar Plural Facturas por el indice que mas nos convenga y recorrer esa lista tratando cada registro, visualizandolos, etc.

E) Y no olvides que de un maestro puede haber varios plurales por varios indices, y además que estos indices se pueden condicionar.

Anuncios

Acerca de Miguel Pérez Oliver
Un abuelo en esto del negocio del software, habiendo recorrido en estos 30 años de todo : Programador, analista, consultor, implantador y ahora en el lado oscuro. Coordinador del departamento comercial en Velneo y viajero.

One Response to Claves Primarias, Ajenas, secundarias, etc (Modelo Relacional Vs Real)

  1. Excelente comentario , estoy de acuerdo con su punto de vista espero sigan aportando temas como este voy a seguir pendiente de este blog saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: