In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

¿Por que es necesaria una clave primaria en odbcDataSource?

Foro de Xailer profesional en español
Responder
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por joseluis »

Ignacio,
¿Por que es necesaria una clave primaria en cada tabla para utilizar
odbcDatasource?
Saludos,
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por ignacio »

José Luis,
Para tener certeza absoluta que una operación de UPDATE o DELETE sólo afecta
a una fila de la tabla.
Un saludo,
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:[email=42f33a0b@ozsrvnegro.ozlan.local...]42f33a0b@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
> ¿Por que es necesaria una clave primaria en cada tabla para utilizar
> odbcDatasource?
>
> Saludos,
> José Luis Capel
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por joseluis »

Ignacio,
>
> Para tener certeza absoluta que una operación de UPDATE o DELETE sólo afecta
> a una fila de la tabla.
>
Entonces, en una tabla de lineas de albaranes.... la clave primaria no
puede tener restricciones.... no puedo crear la clave así­:
ALTER TABLE LIN_ALBARAN ADD CONSTRAINT PK_LIN_ALBARAN PRIMARY KEY
(lnalb_serie, lnalb_numero );
Por que no me dejará poner dos lineas...
Esa es una imposición del odbc o de los datasources ?
Saludos,
José Luis Capel
jasm.nospam
Mensajes: 203
Registrado: Vie Abr 01, 2005 9:05 am

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por jasm.nospam »

Jose Luis,
En una tabla de lineas de albaranes, facturas o lo que quieras tienes
que crear una columna linea del tipo autoincrementado que forme parte de
la clave primaria junto con el número de albarán.
Saludos
Jose Alfonso Suarez
José Luis Capel escribió:
> Ignacio,
>
>
>>
>> Para tener certeza absoluta que una operación de UPDATE o DELETE sólo
>> afecta a una fila de la tabla.
>>
>
> Entonces, en una tabla de lineas de albaranes.... la clave primaria no
> puede tener restricciones.... no puedo crear la clave así­:
>
> ALTER TABLE LIN_ALBARAN ADD CONSTRAINT PK_LIN_ALBARAN PRIMARY KEY
> (lnalb_serie, lnalb_numero );
>
> Por que no me dejará poner dos lineas...
>
> Esa es una imposición del odbc o de los datasources ?
>
> Saludos,
> José Luis Capel
>
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por joseluis »

José Alfonso,
>
> En una tabla de lineas de albaranes, facturas o lo que quieras tienes
> que crear una columna linea del tipo autoincrementado que forme parte de
> la clave primaria junto con el número de albarán.
¿Hay que hacer eso por nar*c*s?
Saludos y gracias,
José Luis Capel
PD: y como se indica que es autoincremental ???
jasm.nospam
Mensajes: 203
Registrado: Vie Abr 01, 2005 9:05 am

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por jasm.nospam »

Jose Luis,
>
> ¿Hay que hacer eso por nar*c*s?
Pues sí­.
>
> Saludos y gracias,
> José Luis Capel
> PD: y como se indica que es autoincremental ???
En MySQL:
// Cabecera de albaranes
CREATE TABLE `c_albaran` (
`id` int(10) unsigned NOT NULL auto_increment,
`fecha` date default NULL,
`id_cliente` int(10) unsigned default NULL,
`total` decimal(11,0) default '2',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
// Detalle de albaranes
CREATE TABLE `d_albarán` (
`id_albaran` int(10) unsigned NOT NULL default '0',
`linea` int(10) unsigned NOT NULL auto_increment,
`id_articulo` int(10) unsigned default NULL,
`cantikdad` int(10) unsigned default NULL,
`precio` decimal(9,0) default '2',
PRIMARY KEY (`id_albaran`,`linea`)
) TYPE=MyISAM;
En MS SQL Server:
// Cabecera de albaranes
CREATE TABLE `c_albaran` (
`id` int NOT NULL IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
`fecha` datetime default NULL,
`id_cliente` int unsigned default NULL,
`total` decimal(11,0) default '2',
PRIMARY KEY (`id`)
)
// Detalle de albaranes
CREATE TABLE `d_albarán` (
`id_albaran` int(10) unsigned NOT NULL default '0',
`linea` int(10) unsigned NOT NULL IDENTITY(1, 1),
`id_articulo` int(10) unsigned default NULL,
`cantikdad` int(10) unsigned default NULL,
`precio` decimal(9,0) default '2',
CONSTRAINT PK_d_lbaran PRIMARY KEY REFERENCES ( id_albaran, linea )
)
Un saludo,
Jose A. Suarez
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por joseluis »

José Alfonso,
Gracias!!!!
Saludos,
José Luis Capel
Jose Alfonso Suárez Moreno escribió:
> Jose Luis,
>
>>
>> ¿Hay que hacer eso por nar*c*s?
>
> Pues sí­.
>
>>
>> Saludos y gracias,
>> José Luis Capel
>> PD: y como se indica que es autoincremental ???
>
>
> En MySQL:
>
> // Cabecera de albaranes
> CREATE TABLE `c_albaran` (
> `id` int(10) unsigned NOT NULL auto_increment,
> `fecha` date default NULL,
> `id_cliente` int(10) unsigned default NULL,
> `total` decimal(11,0) default '2',
> PRIMARY KEY (`id`)
> ) TYPE=MyISAM;
>
>
> // Detalle de albaranes
> CREATE TABLE `d_albarán` (
> `id_albaran` int(10) unsigned NOT NULL default '0',
> `linea` int(10) unsigned NOT NULL auto_increment,
> `id_articulo` int(10) unsigned default NULL,
> `cantikdad` int(10) unsigned default NULL,
> `precio` decimal(9,0) default '2',
> PRIMARY KEY (`id_albaran`,`linea`)
> ) TYPE=MyISAM;
>
>
> En MS SQL Server:
>
> // Cabecera de albaranes
> CREATE TABLE `c_albaran` (
> `id` int NOT NULL IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
> `fecha` datetime default NULL,
> `id_cliente` int unsigned default NULL,
> `total` decimal(11,0) default '2',
> PRIMARY KEY (`id`)
> )
>
>
> // Detalle de albaranes
> CREATE TABLE `d_albarán` (
> `id_albaran` int(10) unsigned NOT NULL default '0',
> `linea` int(10) unsigned NOT NULL IDENTITY(1, 1),
> `id_articulo` int(10) unsigned default NULL,
> `cantikdad` int(10) unsigned default NULL,
> `precio` decimal(9,0) default '2',
> CONSTRAINT PK_d_lbaran PRIMARY KEY REFERENCES ( id_albaran, linea )
> )
>
> Un saludo,
>
> Jose A. Suarez
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por ignacio »

José Luis,
No se a que te refieres con 'tener restricciones'.
La regla más importante de la normalización de tablas 'Es que no pueden
existir dos filas iguales', y precisamente eso es lo que la clave primaria
suministra. Un control por el cual en base a los campos que tu le indiques
dos filas no pueden ser iguales en dichos campos. Por dicho motivo en el
caso de albaranes es muy normal tener que añadir un campo adicional para el
número de linea que de esta forma evita la duplicidad de filas.
Un saludo,
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:42f34318$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
>
>>
>> Para tener certeza absoluta que una operación de UPDATE o DELETE sólo
>> afecta a una fila de la tabla.
>>
>
> Entonces, en una tabla de lineas de albaranes.... la clave primaria no
> puede tener restricciones.... no puedo crear la clave así:
>
> ALTER TABLE LIN_ALBARAN ADD CONSTRAINT PK_LIN_ALBARAN PRIMARY KEY
> (lnalb_serie, lnalb_numero );
>
> Por que no me dejará poner dos lineas...
>
> Esa es una imposición del odbc o de los datasources ?
>
> Saludos,
> José Luis Capel
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jasm.nospam
Mensajes: 203
Registrado: Vie Abr 01, 2005 9:05 am

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por jasm.nospam »

Ignacio,
Creo que Jose Luis esta confundido por usar la clausula CONSTRAINT (que
se usa tambien para las restricciones) para crear las claves primarias.
Obviamente una clave primaria es una restricción de la tabla (del tipo
UNIQUE)y que tiene la particularidad de ser el í­ndice primario que
identifica de forma _univoca_ a cada fila de la tabla.
Un saludo,
Jose A. Suarez
Ignacio Ortiz escribió:
> José Luis,
>
> No se a que te refieres con 'tener restricciones'.
>
> La regla más importante de la normalización de tablas 'Es que no pueden
> existir dos filas iguales', y precisamente eso es lo que la clave primaria
> suministra. Un control por el cual en base a los campos que tu le indiques
> dos filas no pueden ser iguales en dichos campos. Por dicho motivo en el
> caso de albaranes es muy normal tener que añadir un campo adicional para el
> número de linea que de esta forma evita la duplicidad de filas.
>
> Un saludo,
>
> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
> news:42f34318$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
>>Ignacio,
>>
>>
>>
>>>Para tener certeza absoluta que una operación de UPDATE o DELETE sólo
>>>afecta a una fila de la tabla.
>>>
>>
>>Entonces, en una tabla de lineas de albaranes.... la clave primaria no
>>puede tener restricciones.... no puedo crear la clave así­:
>>
>>ALTER TABLE LIN_ALBARAN ADD CONSTRAINT PK_LIN_ALBARAN PRIMARY KEY
>>(lnalb_serie, lnalb_numero );
>>
>>Por que no me dejará poner dos lineas...
>>
>>Esa es una imposición del odbc o de los datasources ?
>>
>>Saludos,
>>José Luis Capel
>>
>
>
>
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Por que es necesaria una clave primaria en odbcDataSource?

Mensaje por joseluis »

Ignacio,
Como muy bien apunta José Alfonso, mi desconocimiento de SQL (que voy
aprendiendo a base de tortazos y manuales), hace que confunda conceptos.
Siento hacerte perder el tiempo en algunos casos.
Saludos,
José Luis Capel
Ignacio Ortiz escribió:
> José Luis,
>
> No se a que te refieres con 'tener restricciones'.
>
> La regla más importante de la normalización de tablas 'Es que no pueden
> existir dos filas iguales', y precisamente eso es lo que la clave primaria
> suministra. Un control por el cual en base a los campos que tu le indiques
> dos filas no pueden ser iguales en dichos campos. Por dicho motivo en el
> caso de albaranes es muy normal tener que añadir un campo adicional para el
> número de linea que de esta forma evita la duplicidad de filas.
>
> Un saludo,
>
> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
> news:42f34318$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
>>Ignacio,
>>
>>
>>
>>>Para tener certeza absoluta que una operación de UPDATE o DELETE sólo
>>>afecta a una fila de la tabla.
>>>
>>
>>Entonces, en una tabla de lineas de albaranes.... la clave primaria no
>>puede tener restricciones.... no puedo crear la clave así­:
>>
>>ALTER TABLE LIN_ALBARAN ADD CONSTRAINT PK_LIN_ALBARAN PRIMARY KEY
>>(lnalb_serie, lnalb_numero );
>>
>>Por que no me dejará poner dos lineas...
>>
>>Esa es una imposición del odbc o de los datasources ?
>>
>>Saludos,
>>José Luis Capel
>>
>
>
>
Responder