relaciones en sql server 2005 express edition

03/10/2007 - 10:56 por mecodi | Informe spam
Necesito saber si si estaría bien el siguiente diagrama de base de datos:
Tengo las tablas:
Empleados(IdEmpleado(clave pirncipal),nombre,apellidos,...)
Equipos(IdEquipo(clave primaria),IdEmpleado,nombre,)
Vehiculos(IdVehiculo(clave primaria),IdEmpleado,matricula,)
Un empleado puede tener 0 ó varios equipos=> Empleados.IdEmpleado
(1>varios)Equipos.IdEmpleado.
Un empleado puede tener 0 ó 1 vehículo=> no se como ponerlo, o si en vez de
Tener el IdEmpleado en la tabla vehículos a lo mejor tengo que tener
IdVehiculo en la de empleados.
Si alguien me puede ayudar se lo agradecería, gracias.
Es para una aplicación en ASP.NET(C#).

Preguntas similare

Leer las respuestas

#6 Carlos M. Calvelo
03/10/2007 - 22:50 | Informe spam
On 3 okt, 22:04, "Carlos M. Calvelo" wrote:
On 3 okt, 13:56, "Juan Diego Bueno"
wrote:

> Hola

> "mecodi" escribió en el mensajenews: Necesito saber si si estaría bien el siguiente diagrama de base de datos:
> > Tengo las tablas:
> > Empleados(IdEmpleado(clave pirncipal),nombre,apellidos,...)
> > Equipos(IdEquipo(clave primaria),IdEmpleado,nombre,)
> > Vehiculos(IdVehiculo(clave primaria),IdEmpleado,matricula,)
> > Un empleado puede tener 0 ó varios equipos=> Empleados.IdEmpleado
> > (1>varios)Equipos.IdEmpleado.

> Es una relación M:M por lo que veo. Crea una tabla llamada
> Equipos_Empleados, cuya clave principal sea IdEquipo,IdEmpleado (siendo
> claves foráneas de sus respectivas tablas también)

Merce,
Si además quieres que un determinado equipo no se
pueda asignar a mas de un empleado puedes también poner
un constraint unique (y not null) a la columna idEquipo.




Ui! Es más.. (no me había dado cuenta).. si es así
(un equipo no se puede asignar a mas de un empleado)
entonces pones solo idEquipo como clave primaria de
la tabla Equipos_Empleados.

Saludos,
Carlos
Respuesta Responder a este mensaje
#7 Juan Diego Bueno
04/10/2007 - 12:09 | Informe spam
Hola Carlos:

"Carlos M. Calvelo" escribió en el mensaje
news:

Ui! Es más.. (no me había dado cuenta).. si es así
(un equipo no se puede asignar a mas de un empleado)
entonces pones solo idEquipo como clave primaria de
la tabla Equipos_Empleados.



Yo he deducido que la relación entre equipos y empleados es M:M
obligatoria-opcional. De esta forma, sí que un equipo podría ser asignado a
más de un empleado y entonces eso ya no valdría. Convendría que Merce nos
explicara de forma un poco más clara que es lo que quiere.

Apoyo lo del constraint unique en los vehículos (se me había pasado) y
recordar que se podría hacer al revés: ID_VEHICULO como clave principal y
foránea a la vez e "ID_EMPLEADO" como clave foránea y única. A gusto del
consumidor.

Saludos
Respuesta Responder a este mensaje
#8 mecodi
08/10/2007 - 13:55 | Informe spam
Todavía no lo tengo muy claro, me fallan conceptos básicos yo creo en
BDrelacionales. Al final lo puse:
tablas:
- Empleados(IdEmpleado(PK),...)
- Empleados_Vehiculos(IdEmpleado(PK),IdVehiculo(FK,unique,tipo indice),...)
- Vehiculos(IdVehiculo(PK),)
relaciones:
Entre Empleados y Empleados_Vehiculos (1:1).

(PK)IdEmpleado > (PK)IdEmpleado
Entre Vehiculos y Empleados_Vehicules (1:1)
(PK)IdVehiculo -->(FK,UNIQUE)IdVehiculo
Pero por ejemplo:
Si un empleado no tiene vehículo asignado, en la tabla Empleados_Vehiculos
SÍ aparecería ese IdEmpleado (pues es PK), pero el IdVehiculo seria NULL????
Lo de la relación 1:1 ya me aparece y lo de opcional-opcional, ya estaría
también?
Si me dejais un correo, os pasaria mi diagrama para q le echaseis un
vistazo. Es que traigo un cacao con las relaciones que no veas y ya lo miré
por documentación pero nada. Mi correo
Gracias por adelantado y perdon por el turre que os doy.
Un saludo. Merce
Respuesta Responder a este mensaje
#9 Juan Diego Bueno
08/10/2007 - 14:56 | Informe spam
Hola mecodi:

"mecodi" escribió en el mensaje
news:
Todavía no lo tengo muy claro, me fallan conceptos básicos yo creo en
BDrelacionales. Al final lo puse:
tablas:
- Empleados(IdEmpleado(PK),...)
- Empleados_Vehiculos(IdEmpleado(PK),IdVehiculo(FK,unique,tipo
indice),...)
- Vehiculos(IdVehiculo(PK),)
relaciones:
Entre Empleados y Empleados_Vehiculos (1:1).

(PK)IdEmpleado > (PK)IdEmpleado
Entre Vehiculos y Empleados_Vehicules (1:1)
(PK)IdVehiculo -->(FK,UNIQUE)IdVehiculo
Pero por ejemplo:
Si un empleado no tiene vehículo asignado, en la tabla Empleados_Vehiculos
SÍ aparecería ese IdEmpleado (pues es PK), pero el IdVehiculo seria
NULL????



No, pero si un empleado no tiene vehículo asignado, simplemente, no lo metes
en esa tabla y ya está. Es decir, en la tabla empleados_vehiculos, solo has
de meter aquellos empleados que tengan vehículos.

Cuando realices la consulta en la que tomes los datos del empleado junto con
su vehículo, puedes hacer un left join de la tabla de empleados sobre la de
vehículos, de forma que si el empleado no tiene, te dará null.


Lo de la relación 1:1 ya me aparece y lo de opcional-opcional, ya estaría
también?
Si me dejais un correo, os pasaria mi diagrama para q le echaseis un
vistazo. Es que traigo un cacao con las relaciones que no veas y ya lo
miré
por documentación pero nada.



Mejor por aquí, así aprendemos todos. Si lo deseas, adjunta el diagrama
aquí.

Un saludo
Respuesta Responder a este mensaje
#10 mecodi
08/10/2007 - 18:43 | Informe spam
gracias por la ayuda:
¿cómo puedo adjuntar el diagrama? intenté copiarlo y pegarlo aquí pero no me
deja.
De todas formas, voy a ver si haciendo los accesos (insertar, borrar,
actualizar) desde EL web developper (ASP.NET) me va funcionando.
Hasta ahora ya me funciona para las tablas EQUIPOS(asignando valores
directamente y tambien desde otras tablas como son EquiposTipo,
EquiposProveedores y EquiposEstado) y para VEHICULOS(asignando valores
directamente y desde otras tablas VehiculosCategoria y VehiculosProveedor).
Ahora voy a ver si creo el menú para el empleado, al que se puedo asignar
vehículo o Equipo.
Ya os cuento.
Un saludo.Merce
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida