RSS
Facebook
G+

Buscador de IntercambioSOS:


Retroceder   Foro de Ayuda IntercambiosvirtualeS > Soporte Sobre: Educación & Entretenimiento > Zona Académica > Programación

Tema Cerrado
 
Herramientas Desplegado
Antiguo 19-ago-2011     #1
Predeterminado ¿Como relacionar tablas en WinSQL?

Buen dia muchachos, una vez mas por aqui solicitando una manito
Esta vez necesito de su ayuda en SQL.
Tengo el siguiente problemita, me dan esta factura.


En base a la misma debo crear una Base de Datos en WinSQL (aunque primero debo normarlizarla)

Spoiler:

Diccionario de datos (UNF)
Fac-no : Factura numero
Fac-date : Fecha de orden
Cli-name : Nombre del cliente
Cli-dir : Direccion del cliente
Cli-ccnit : Cedula o Nit del cliente
Cli-ciu : Ciudad del cliente
Cli-tel : Telefono del cliente
Pro-cate : Categoria del producto
Pro-cod : Codigo del producto
Pro-desc : Descripcion del producto
Pro-vrunit : Valor unitario del producto
Pro-cantidad: Cantidad del producto

Analisis ERD (Diseño Entidad Relación)
Regla uno: Separar el grupo repetitivo (1FN)

Los datos despues de Cli-tel son repetitivos, es decir que para una misma orden aparecen varias veces.
Los grupos repetitivos deben ser separados del diccionario de datos (UNF) y ser escritos como un grupo independiente con su respectiva llave.


Grupo NO repetitivo
Fac-no
Fac-date
Cli-name
Cli-dir
Cli-ccnit
Cli-ciu
Cli-tel

Grupo repetitivo
Pro-cod
Pro-cate
Pro-desc
Pro-cant
Pro-vrunit

Para el grupo repetitivo se tiene como llave el campo de Pro-cod, ya que el campo de Pro-cate se puede repetir varias veces para distintos productos, mientras que el campo de Pro-cod es único. Por lo cual se combina con el campo Fac-no para que quede como llave única.

Grupo uno
Fac-no
Fac-date
Cli-name
Cli-dir
Cli-ccnit
Cli-ciu
Cli-tel

Grupo dos
Fac-no
Pro-cod
Pro-cate
Pro-desc
Pro-cant
Pro-vrunit

Regla dos: Separar dependencias de las llaves compuestas (2FN)
Como los campos Pro-cate, Pro-desc, Pro-vrunit no dependen enteramente de la llave compuesta, sino que sólo dependen del campo Pro-cod se genera un tercer grupo cuya llave va a ser Pro-cod:

Grupo uno
Fac-no
Fac-date
Cli-name
Cli-dir
Cli-ccnit
Cli-ciu
Cli-tel

Grupo dos
Fac-no
Pro-cod
Pro-cant

Grupo tres
Pro-cod
Pro-cate
Pro-desc
Pro-vrunit

Regla tres: Examinar las interdependencias entre los campos o atributos que no son llaves (3FN)

Todos los campos o atributos en cada grupo que no sean llaves, deben ser examinados para chequear que no existan interdependencias entre ellos, si se encuentran algunas, las mismas deben ser separadas en distintos grupos cuya llave debe ser el campo del cual son dependientes, dejando este campo también en el grupo original.
Analizando el grupo uno, se encuentra que los campos:
• Cli-name
• Cli-dir
• Cli-tel
• Cli-ciu
Son enteramente dependientes del campo Cli-ccnit.
Del grupo dos ya se sacaron las interdependencias durante la (2FN) y el grupo tres es precisamente el resultado de esa separación en la (2FN), por lo tanto se ignora en esta etapa, pasando a sacar las interdependencias solo el grupo uno.
Al separar en un grupo la información del cliente, dejando en un cuarto grupo dicha información, se obtiene la tercera forma normal.

Grupo uno - Factura
Fac-no
Fac-date
Cli-ccnit

Grupo dos - Detalle
Fac-no
Pro-cod
Pro-cant

Grupo tres - Producto
Pro-cod
Pro-cate
Pro-desc
Pro-vrunit

Grupo cuatro -Cliente
Cli-ccnit
Cli-name
Cli-dir
Cli-tel
Cli-ciu


Una vez normalizadas debo crear una tabla en WinSQL de acuerdo a cada grupo obtenido en la 3FN.

Spoiler:

grupo uno al cual llamo Factura

create table factura(
fac_no numeric,
fac_date date,
cli_nit numeric
constraint fac_no primary key)

grupo dos al cual llamo Detalle

create table detalle(
fac_no numeric,
pro_cod numeric,
pro_cant numeric
constraint fac_no primary key)

grupo tres al cual llamo Producto

create table producto(
pro_cod numeric,
pro_cate char(15),
pro_desc char(50),
pro_vlruni numeric
constraint pro_cod primary key)

y grupo cuatro al cual llamo Cliente

create table cliente(
cli_nit numeric,
cli_name char(15),
cli_dir char(30),
cli_tel numeric,
cli_ciu char(20)
constraint cli_nit primary key)



Mi problema radica en que debo relacionarlas y no se como hacerlo, para ello trate de usar la siguiente sintaxis:

create table detalle(
fac_no numeric,
pro_cod numeric,
pro_cant numeric
constraint fac_no primary key,
foreign key(fac_no)references factura(fac_no))


pero WinSQL me da error.
Error: Operación no válida para este tipo de objeto. (State:S1000, Native Code: FFFFFC17)

Entonces necesito que si alguien sabe como puedo relacionarlas, para que me queden de esta forma.


Le agradeceria MUCHISIMO si me dice como, y si no es mucha molestia que me explique un poquito

De antemano muchas gracias

Los siguientes 4 usuarios agradecen a Rekker por este mensaje:
baduser (20-ago-2011), joselmq (27-ago-2011), noxon (01-sep-2012), Orpheus96 (20-ago-2011)
Antiguo 31-ago-2012     #2
Predeterminado solucion

hola, agregame al skype mi usuario es julianon2, y trabajamos en eso o me ayudas ya que yo estoy haciendo el mismo curso en le sena
Los siguientes 3 usuarios agradecen a julianon2 por este mensaje:
baduser (31-ago-2012), josner (31-ago-2012), noxon (01-sep-2012)
Tema Cerrado


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
15 formas de tomar antibióticos naturales hopelin Medicina y Salud 6 08-sep-2011 21:58
¿Cómo destapar una botella de vino sin un sacacorchos? JxAlan Off-Topic 8 09-may-2011 15:56
15 formas de tomar antibióticos naturales hopelin Medicina y Salud 5 23-feb-2011 05:19
Chistes con el idioma cardavid Humor 13 07-jul-2010 20:40


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.
Ad Management by RedTyger