PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Una cuestión importante
Una cuestión importante
Started by Manolo, Aug., 26 2008 1:28 PM - 3 replies
Posted on August, 26 2008 - 1:28 PM
En bases de datos como Sql Server y Access es posible establecer en una tabla varios campos como clave primaria. ¿En Windev como se hace esto?. He probado con Composite key pero si tengo que realizar esto en varias tablas, no es posible.

Imaginemos el siguiente problema:
En mi base de datos tengo que almacenar información sobre la estructura de una empresa y sus elementos (La empresa, centros de trabajo, departamentos, puestos y empleados). Por supuesto, cada uno de estos elementos es una Entidad y su clave debe ser única dentro de su tipo y de la empresa a la que pertenece. Cada entidad debe guardar la información sobre a que entidad pertenecenen.

Orden de pertenencia.
=====================
Empresa
|_Centro
|_Departamento
|_Puesto
|_Empleado

Un ejemplo: *Campos calve

Empresa
*Id Nombre otros campos....
EHj PC soft
Ekl Borland
Ukl Microsoft

Centros de trabajo
*Empresa *Id Nombre otros campos...
EHj C1 Centro Principal
EHj C2 Segundo centro

*Empresa *Centro *Id Nombre otros campos...
EHj C1 P1 Peón
EHj C2 A23 Albañil
Posted on August, 26 2008 - 3:02 PM
Hola. La solución creo que pasaría por crear una clave única
autoincrementada (de las que te crea Windev para asegurarnos que la clave es
realmente única) y definir después una clave compuesta sin duplicados por
los campos que tu quieras. Al hacer el enlace de las tablas en el análisis
te crea un campo de enlace en la tabla hijo con el tamaño adecuado para la
suma de los campos de enlace.

Otra opción que podrías probar es a definir tu estructura en MSSQL e
intentar importarla en el diccionario a ver como te la define Windev.


Rubén Sánchez Peña



"Manolo" <kileno@hotmail.com> escribió en el mensaje de noticias
news:ef1bc1577a2e937db23b3baf06ad0266@news.pcsoft...

En bases de datos como Sql Server y Access es posible establecer en una
tabla varios campos como clave primaria. ¿En Windev como se hace esto?. He
probado con Composite key pero si tengo que realizar esto en varias
tablas, no es posible.

Imaginemos el siguiente problema:
En mi base de datos tengo que almacenar información sobre la estructura de
una empresa y sus elementos (La empresa, centros de trabajo,
departamentos, puestos y empleados). Por supuesto, cada uno de estos
elementos es una Entidad y su clave debe ser única dentro de su tipo y de
la empresa a la que pertenece. Cada entidad debe guardar la información
sobre a que entidad pertenecenen.

Orden de pertenencia.
=====================
Empresa
|_Centro
|_Departamento
|_Puesto
|_Empleado

Un ejemplo: *Campos calve

Empresa
*Id Nombre otros campos....
EHj PC soft
Ekl Borland
Ukl Microsoft

Centros de trabajo
*Empresa *Id Nombre otros campos...
EHj C1 Centro Principal
EHj C2 Segundo centro

*Empresa *Centro *Id Nombre otros campos...
EHj C1 P1 Peón
EHj C2 A23 Albañil
Posted on September, 16 2008 - 6:23 PM
Manolo,
Nosotros trabajamos por mas de 15 años con progress y clarion y en ambos
casos se trabaja con claves compuestas como tu lo indicas.
Decidimos olvidarnos de esa metodología y asumimos la de windev (merise) y
ahora todas las tablas son independientes y se relacionan entre si por
claves simples.
Al principio nos costó un poco asimilar el concepto, pero con el tiempo
hemos visto que es mucho mas eficiente y mas flexible.
También se ahorra espacio en disco y líneas de código.
El caso típico: Compañía->Sucursal->Cliente->Factura->Renglón. En el renglón
teníamos una clave primaria con todas las claves primarias de los padres.
Ahora tenemos el id automático y como campo relacionado el id de la
factura. Como ese id de factura es único, no necesito mas relaciones. La
factura está en el mismo caso.
En general, todas las tablas tienen el id de la tabla madre como campo
adicional, creado en el momento de crear la relación con el drag-drop en el
editor del modelo.
Esto tiene sentido, ya que un renglón solo no significa nada sin la factura,
y la misma tampoco significa nada sin el cliente. Nada impide que le pongas
el campo de cia a las facturas directamente, o el de sucursal, o todos; pero
no hace falta.
Ya tenemos 5 años trabajando de esta nueva manera y cada día me alegro mas
de haberlo hecho.

Por cierto, esta forma de trabajo funciona bien con cualquier base de datos
que uilices.

Saludos.

"Manolo" <kileno@hotmail.com> escribió en el mensaje de noticias
news:ef1bc1577a2e937db23b3baf06ad0266@news.pcsoft...

En bases de datos como Sql Server y Access es posible establecer en una
tabla varios campos como clave primaria. ¿En Windev como se hace esto?. He
probado con Composite key pero si tengo que realizar esto en varias
tablas, no es posible.

Imaginemos el siguiente problema:
En mi base de datos tengo que almacenar información sobre la estructura de
una empresa y sus elementos (La empresa, centros de trabajo,
departamentos, puestos y empleados). Por supuesto, cada uno de estos
elementos es una Entidad y su clave debe ser única dentro de su tipo y de
la empresa a la que pertenece. Cada entidad debe guardar la información
sobre a que entidad pertenecenen.

Orden de pertenencia.
=====================
Empresa
|_Centro
|_Departamento
|_Puesto
|_Empleado

Un ejemplo: *Campos calve

Empresa
*Id Nombre otros campos....
EHj PC soft
Ekl Borland
Ukl Microsoft

Centros de trabajo
*Empresa *Id Nombre otros campos...
EHj C1 Centro Principal
EHj C2 Segundo centro

*Empresa *Centro *Id Nombre otros campos...
EHj C1 P1 Peón
EHj C2 A23 Albañil
Posted on September, 17 2008 - 1:49 AM
Hola Manolo,

Ademas en Hyper-File tablas puedes describir muchas claves primarias.

--
Pat
http://megustawindev.free.fr