Foreign Key de Vista

05/02/2009 - 20:23 por Francizk0 | Informe spam
Q tal gente acudiendo a uds

Tengo dos tablas articulos:
- Articulo de Venta ( 10 Campos )
- Articulo de Produccion ( 23 campos )
Cada tabla es independiend ya q contiene campos total mente distintos
salvo 3 q son
CodArticulo , DescArticulo , CodFamilia
y tengo una tabla de ordenes de compra que su campo CodArticulo puede
ser FK de cualquiera de estas 2 tablas.
Mi duda es posible hacer esto que el campo CodArticulo de la tabla O.
de Compra sea FK de ambas tablas?????? o como puede hacer para hacer
algo similar

Preguntas similare

Leer las respuestas

#1 Jesús
05/02/2009 - 21:26 | Informe spam
Aquí tienes un modelado de tipos y subtipos. Hay dos alternativas:

Alternativa 1:

Tres tablas

Tabla Artículo con los campos CodArticulo, DescArticulo, CodFamilia, donde
CodArticulo es clave primaria

Tabla Articulo de Venta; con los campos CodArticulo y los campos especificos
de un artículo de venta, donde CodArticulo es clave primaria y clave externa
referenciando a la tabla Artículo

Tabla Artículo de producción: con los campos CodArtículo y los campos
específicos de un artículo de producción, donde CodArticulo es clave
primaria y clave externa referenciando a la tabla Artículo


La tabla ordenes de compra tiene el campo CodArticulo que es clave externa
referenciando a la tabla Artículos.


Alternativa 2:

Una tabla:

La tabla Articulos que tiene todos los campos de un artículo de venta y
todos los campos de un artículo de producción, mas un campo adicional
TipoArtículo que puede tener solo dos valores: "Artículo de Venta" y
"Artículo de producción"

La tabla órdenes de compra tiene el campo CodArtículo que es clave externa
referenciando a la tabla Artículos


La altenativa 1 es normalizada, mientras que la alternativa 2 es
desnormalizada. La alternativa 2 es más eficiente y sencilla, pero deja
muchos valores nulos en los campos.

"Francizk0" escribió en el mensaje de noticias
news:

Q tal gente acudiendo a uds

Tengo dos tablas articulos:
- Articulo de Venta ( 10 Campos )
- Articulo de Produccion ( 23 campos )
Cada tabla es independiend ya q contiene campos total mente distintos
salvo 3 q son
CodArticulo , DescArticulo , CodFamilia
y tengo una tabla de ordenes de compra que su campo CodArticulo puede
ser FK de cualquiera de estas 2 tablas.
Mi duda es posible hacer esto que el campo CodArticulo de la tabla O.
de Compra sea FK de ambas tablas?????? o como puede hacer para hacer
algo similar

Respuesta Responder a este mensaje
#2 Carlos M. Calvelo
05/02/2009 - 21:37 | Informe spam
Hola,

On 5 feb, 20:23, Francizk0 wrote:
Q tal gente acudiendo a uds

Tengo dos tablas articulos:
- Articulo de Venta ( 10 Campos )
- Articulo de Produccion ( 23 campos )
Cada tabla es independiend ya q contiene campos total mente distintos
salvo 3 q son
CodArticulo , DescArticulo , CodFamilia



Y si tenemos un artículo en Articulo de Venta con el mismo
CodArticulo que otro artículo en Articulo de Producción,
son estos dos artículos el mismo? Y si son el mismo, como lo
tienes montado ahora, pueden tener distintos DescArticulo
y/o CodFamilia en las dos tablas?


y tengo una tabla de ordenes de compra que su campo CodArticulo puede
ser FK de cualquiera de estas 2 tablas.
Mi duda es posible hacer esto que el campo CodArticulo de la tabla O.
de Compra sea FK de ambas tablas??????



Si es posible. La pregunta es qué significa eso si lo haces?
Entonces todos los articulos en la tabla de ordenes tienen que
existir en las dos tablas Articulo de Venta *Y* Articulo de
Produccion. Y entonces me pregunto otra vez: son realmente el
mismo artículo en las dos tablas? Si no son el mismo no le veo
mucho sentido a esto. Si sí son el mismo... lee más abajo.

o como puede hacer para hacer
algo similar



Puedes poner los campos comunes en otra tabla (Articulos) y desde
las otras dos tablas que ya tienes, hacer referencia a ella.
Y la tabla ordeners podría hacer referencia a esta nueva tabla en
vez de a las otras dos.

Saludos,
Carlos
Respuesta Responder a este mensaje
#3 Carlos M. Calvelo
05/02/2009 - 22:06 | Informe spam
Hola Jesús,

On 5 feb, 21:26, Jesús wrote:
Aquí tienes un modelado de tipos y subtipos. Hay dos alternativas:

Alternativa 1:

Tres tablas

Tabla Artículo con los campos CodArticulo, DescArticulo, CodFamilia, donde
CodArticulo es clave primaria

Tabla Articulo de Venta; con los campos CodArticulo y los campos especificos
de un artículo de venta, donde CodArticulo es clave primaria y clave externa
referenciando a la tabla Artículo

Tabla Artículo de producción: con los campos CodArtículo y los campos
específicos de un artículo de producción, donde CodArticulo es clave
primaria y clave externa referenciando a la tabla Artículo

La tabla ordenes de compra tiene el campo CodArticulo que es clave externa
referenciando a la tabla Artículos.

Alternativa 2:

Una tabla:

La tabla Articulos que tiene todos los campos de un artículo de venta y
todos los campos de un artículo de producción, mas un campo adicional
TipoArtículo que puede tener solo dos valores: "Artículo de Venta" y
"Artículo de producción"

La tabla órdenes de compra tiene el campo CodArtículo que es clave externa
referenciando a la tabla Artículos



Estas dos alternativas no son equivalentes. En la primera, artículo
X puede ser al mismo tiempo artículo de venta y de producción. En
la segunda se tiene que considerar TipoArtículo parte de la clave
(y de la clave foránea en órdenes también) para conseguir lo mismo.
Sino artículo X será o bien de producción o bien de venta, pero no
las dos cosas.

Lo digo porque si se presentan como alternativas, serán
alternativas a lo mismo y con la misma capacidad de expresión.



La altenativa 1 es normalizada, mientras que la alternativa 2 es
desnormalizada. La alternativa 2 es más eficiente y sencilla, pero deja
muchos valores nulos en los campos.




Como las alternativas no son equivalentes, difícilmente se puede
hablar de normalización/denormalización aquí.

Saludos,
Carlos
Respuesta Responder a este mensaje
#4 Jose TH
05/02/2009 - 22:39 | Informe spam
O sea que una misma orden de compra puede incluir materia prima (me imagino
que esos son los artículos que has nombrado como "de producción") y también
bienes terminados ?
A un mismo suplidor ?
Los bienes terminados que se compran, son para simple reventa, o se usarán
como componentes para ensamblar otros artículos ?
Se pueden vender también tanto materias primas como bienes terminados ?
Aparte de artículos, se venden servicios?

Has pensado en (pese a los campos 'diferentes') tener mejor una sola tabla
general de artículos (o items) ?



"Francizk0" escribió en el mensaje
news:

Q tal gente acudiendo a uds

Tengo dos tablas articulos:
- Articulo de Venta ( 10 Campos )
- Articulo de Produccion ( 23 campos )
Cada tabla es independiend ya q contiene campos total mente distintos
salvo 3 q son
CodArticulo , DescArticulo , CodFamilia
y tengo una tabla de ordenes de compra que su campo CodArticulo puede
ser FK de cualquiera de estas 2 tablas.
Mi duda es posible hacer esto que el campo CodArticulo de la tabla O.
de Compra sea FK de ambas tablas?????? o como puede hacer para hacer
algo similar

Respuesta Responder a este mensaje
#5 Jose Mariano Alvarez
05/02/2009 - 22:59 | Informe spam
Carlos no entiendo por que dices que las dos alternativas presentadas por
Jesus no son equivalentes.
A mi si me parece que lo son si no introduces lo que propones (TipoArtículo)

Mas alla de eso coincido con parte de tu razonamiento en cuanto a las
limitaciones del modelo.



Saludos


Ing. Jose Mariano Alvarez
SQLTotal Consulting

(Cambia los ceros por O y saca lo que sobra)

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por
favor tratar de indicar la versión de SQL y Service Pack. La inclusión de
(CREATE, INSERTS, etc.) para poder reproducir el problema también ayuda.










"Carlos M. Calvelo" wrote in message
news:
Hola Jesús,

On 5 feb, 21:26, Jesús wrote:
Aquí tienes un modelado de tipos y subtipos. Hay dos alternativas:

Alternativa 1:

Tres tablas

Tabla Artículo con los campos CodArticulo, DescArticulo, CodFamilia,
donde
CodArticulo es clave primaria

Tabla Articulo de Venta; con los campos CodArticulo y los campos
especificos
de un artículo de venta, donde CodArticulo es clave primaria y clave
externa
referenciando a la tabla Artículo

Tabla Artículo de producción: con los campos CodArtículo y los campos
específicos de un artículo de producción, donde CodArticulo es clave
primaria y clave externa referenciando a la tabla Artículo

La tabla ordenes de compra tiene el campo CodArticulo que es clave
externa
referenciando a la tabla Artículos.

Alternativa 2:

Una tabla:

La tabla Articulos que tiene todos los campos de un artículo de venta y
todos los campos de un artículo de producción, mas un campo adicional
TipoArtículo que puede tener solo dos valores: "Artículo de Venta" y
"Artículo de producción"

La tabla órdenes de compra tiene el campo CodArtículo que es clave
externa
referenciando a la tabla Artículos



Estas dos alternativas no son equivalentes. En la primera, artículo
X puede ser al mismo tiempo artículo de venta y de producción. En
la segunda se tiene que considerar TipoArtículo parte de la clave
(y de la clave foránea en órdenes también) para conseguir lo mismo.
Sino artículo X será o bien de producción o bien de venta, pero no
las dos cosas.

Lo digo porque si se presentan como alternativas, serán
alternativas a lo mismo y con la misma capacidad de expresión.



La altenativa 1 es normalizada, mientras que la alternativa 2 es
desnormalizada. La alternativa 2 es más eficiente y sencilla, pero deja
muchos valores nulos en los campos.




Como las alternativas no son equivalentes, difícilmente se puede
hablar de normalización/denormalización aquí.

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida