FK

05/12/2006 - 17:24 por L.Barzi | Informe spam
Hola a todos estoy desarrollando el modelo de la B.D de un sistema
multiempresa y tengo la tabla productos de la sgte manera:

codigo_producto char 6 NOT NULL
codigo_empresa char 3 NOT NULL
codigo_agencia char 3 NOT NULL
descripcion_producto varchar 100 NOT NULL
codigo_barras varchar 15 NULL
codigo_proveedor char 6 NULL
codigo_linea char 3 NULL
codigo_familia char 3 NULL
codigo_grupo char 3 NULL
codigo_clase char 3 NULL
codigo_medida char 3 NULL
codigo_presentacion char 3 NULL
codigo_color char 3 NULL
codigo_marca char 3 NULL
codigo_pais char 4 NULL
procedencia_producto char 1 NULL
fecha_produccion smalldatetime 4 NULL
fecha_vencimiento smalldatetime 4 NULL
fecha_ultima_compra smalldatetime 4 NULL
fecha_ultima_venta smalldatetime 4 NULL
cantidad_factor decimal 9 NULL
stock_minimo decimal 9 NULL
stock_actual decimal 9 NULL
valor_stock decimal 9 NULL
codigo_moneda char 3 NULL
precio_compra decimal 9 NULL
precio_venta decimal 9 NULL
precio_venta_igv decimal 9 NULL
cantidad decimal 9 NULL
porcentaje_utilidad decimal 9 NULL
tiempo_produccion smalldatetime 4 NULL
precio_minuto decimal 9 NULL
indice_compuesto char 1 NULL
indice_exclusivo char 1 NULL
indice_precios char 1 NULL
indice_stock char 1 NULL
cuenta_compra char 1 NULL
cuenta_ventas char 1 NULL
cuenta_existencia char 1 NULL


Mi duda es que tengo en esta tabla productoslos sgtes campos que son
llaves foraneas:

codigo_linea char 3 NULL
codigo_familia char 3 NULL
codigo_grupo char 3 NULL
codigo_clase char 3 NULL
codigo_medida char 3 NULL
codigo_presentacion char 3 NULL
codigo_color char 3 NULL
codigo_marca char 3 NULL

Y estan relacionadas con las tablas:
Linea, Familia, Grupo, Clase, Medida, Presentacion, Color y Marca

Estos campos en la tabla productos son NULL ya que algunos productos no
tienen marca, color (por dar solo un ejemplo) y asi otros productos no
tienen ciertos valores.

Mi pregunta es tendria problemas mas adelante al tener esas foraneas en
NULL.

Es necesario de las llaves foraneas sean NOT NULL? ya q en mi caso como
les comente hay campos q no se necesitan grabar.

Gracias.
 

Leer las respuestas

#1 BitOne®
05/12/2006 - 19:47 | Informe spam
Hola L.Barzi:

Mira el diseno de una base de datos relacionar es una de las partes mas
completa del modelo completo, esto es
debido a que tienes que modelar algo abstracto y no tienes mucho donde
probar para ver como andan las cosas,
es por esto que cada persona modela de un modo diferente siempre amparandose
en los standard de modelado,
diseno y programacion, entre otros.

Por esta y otras razones te digo que tu mas que nadie sabe si luego pudieras
tener problemas pues el diseno de esta
base de datos es tuyo y lo debes conocer, esto tomando en cuenta que has
levantado informacion sobre lo requerido
sobre lo que se necesita y sobre lo que no se necesitaria.

de esta lado te puedo dar un consejo, los valores nulos son peligrosos en
todo momento, poco recomendados y si bien
es cierto que siempre existiran valores nulos en algun lugar, debemos
evitarlo a toda costa.

ahora bien te dare un ejemplo.

Si tiene una tabla de ventas y esas ventas pueden o ser realizadas en el
lugar o pueden ser realizadas por un vendedor
pero si la venta se hace en el punto de venta no lleva ningun vendedor
entonces se pensaria en colocar un campo que
acepte valores nulos para aquellas ventas que no tengan un vendedor.

pero esto no es lo correcto lo correcto es que cada campo de estos tenga un
valor por defecto en donde se dan estos
casos.

por tal razon hay que tener cuenta en el diseno y modelado de base de datos
pues luego en el futuro puedes
o tener datos incoherentes o tener relaciones ambiguas.

Lee un poquito en los BOL sobre los valores null y veras como puedes
evitarlo y ayudarte a tener un
mejor desempeno y rendimiento de tu base de datos.

Claro como te dije al principio cada cual modela de una manera distinta
siempre siñendose a los standares.

Esto es solo una opinión.

saludos,

BitOne®



"L.Barzi" wrote in message
news:
Hola a todos estoy desarrollando el modelo de la B.D de un sistema
multiempresa y tengo la tabla productos de la sgte manera:

codigo_producto char 6 NOT NULL
codigo_empresa char 3 NOT NULL
codigo_agencia char 3 NOT NULL
descripcion_producto varchar 100 NOT NULL
codigo_barras varchar 15 NULL
codigo_proveedor char 6 NULL
codigo_linea char 3 NULL
codigo_familia char 3 NULL
codigo_grupo char 3 NULL
codigo_clase char 3 NULL
codigo_medida char 3 NULL
codigo_presentacion char 3 NULL
codigo_color char 3 NULL
codigo_marca char 3 NULL
codigo_pais char 4 NULL
procedencia_producto char 1 NULL
fecha_produccion smalldatetime 4 NULL
fecha_vencimiento smalldatetime 4 NULL
fecha_ultima_compra smalldatetime 4 NULL
fecha_ultima_venta smalldatetime 4 NULL
cantidad_factor decimal 9 NULL
stock_minimo decimal 9 NULL
stock_actual decimal 9 NULL
valor_stock decimal 9 NULL
codigo_moneda char 3 NULL
precio_compra decimal 9 NULL
precio_venta decimal 9 NULL
precio_venta_igv decimal 9 NULL
cantidad decimal 9 NULL
porcentaje_utilidad decimal 9 NULL
tiempo_produccion smalldatetime 4 NULL
precio_minuto decimal 9 NULL
indice_compuesto char 1 NULL
indice_exclusivo char 1 NULL
indice_precios char 1 NULL
indice_stock char 1 NULL
cuenta_compra char 1 NULL
cuenta_ventas char 1 NULL
cuenta_existencia char 1 NULL


Mi duda es que tengo en esta tabla productoslos sgtes campos que son
llaves foraneas:

codigo_linea char 3 NULL
codigo_familia char 3 NULL
codigo_grupo char 3 NULL
codigo_clase char 3 NULL
codigo_medida char 3 NULL
codigo_presentacion char 3 NULL
codigo_color char 3 NULL
codigo_marca char 3 NULL

Y estan relacionadas con las tablas:
Linea, Familia, Grupo, Clase, Medida, Presentacion, Color y Marca

Estos campos en la tabla productos son NULL ya que algunos productos no
tienen marca, color (por dar solo un ejemplo) y asi otros productos no
tienen ciertos valores.

Mi pregunta es tendria problemas mas adelante al tener esas foraneas en
NULL.

Es necesario de las llaves foraneas sean NOT NULL? ya q en mi caso como
les comente hay campos q no se necesitan grabar.

Gracias.

Preguntas similares