[bofhers] Re: [bofhers] Re: [bofhers] Problemilla con diseño de BD SQL Server 2008 (para el cole)

  • From: Alex Lorenzo <alex.lorenzoe@xxxxxxxxx>
  • To: bofhers@xxxxxxxxxxxxx
  • Date: Thu, 14 Mar 2013 09:01:57 +0100

Completamente de acuerdo con TarodBOFH, básicamente no debes tener hijos
sin padres ni operaciones sin sus dueños XD


El 14 de marzo de 2013 08:07, TarodBOFH <bofh@xxxxxxxxxxxxx> escribió:

> Para la integridad referencial tienes que tener en cuenta que entidades
> tienen sentido unas sin otras y cuales no.
>
> Por ejemplo, un cliente puede no tener una dirección (si tienes tablas
> clientes y otra direcciones), por lo que en ese caso ON_DELETE (en
> dirección) --> SET NULL a cliente; mientras que una dirección sin cliente
> no tiene sentido (ON_DELETE_CASCADE --> cliente)
>
> Otro ejemplo es permitir el borrado: No deberías borrar datos de clientes
> que tengan compras. Aunque si la bbdd está bien hecha, INVOICES siempre
> será una copia con todos los datos de los clientes y precios, y tendrás
> columnas de referencia para agilizar las búsquedas (ojo, si tu caso es para
> un ejercicio, esto que se *debe* hacer en la vida real no estaría
> normalizado para el ejercicio!)
>
> ¿Es eso a lo que te refieres?
>
> En tu caso:
> - Prestamo (te falta fecha de devolución? ) -> no podrías borrar un socio
> que aún tiene préstamos sin devolver (o incluso borrar un socio con
> préstamos antigios, ya que num_socio en prestamo es not null)
> - Al borrar un libro --> en cascada cascada de  fondo (si borras el libro,
> desaparece de fondo), etc.
>
>
> 2013/3/14 Autoestopista El <autoestopistael@xxxxxxxxx>
>
>> Bueeeno, pues como comenté esta mañana ahí lo lanzo.
>>
>> Arresulta que tengo el siguiente diseño de una BD. Tiene los detalles
>> justos requeridos según un enunciado (DiagramaER_corregido.vsd) del cual he
>> sacado, normalizando y desnormalizando, el siguiente juego de tablas
>> (Tablas_corregido.vsd). Hay otros posibles, pero este es el mío.
>>
>> El caso es que he creado la BD según las especificaciones que me piden
>> con este script (biblioteca.sql) y generado las tablas y sus relacions
>> (foreign keys) con este otro (tablas.sql). Si, señores, me lo piden así de
>> separadito. Como véis he definido un par de constraints para las foreign
>> keys y un UNIQUE para que me cuadrara una clave candidata. Todos los campos
>> a NOT NULL de momento.
>>
>> Así que ahora me piden un tercer script que haga dos cosas:
>>
>> - Aplicar restricciones de integridad referencial.
>> - Establecer que atributos admiten o no valores NULL.
>>
>> El caso es que no tengo muy claro en que me tengo que fijar para
>> determinar el tema de la integridad referencial. Es decir, ¿que tengo que
>> tener en cuenta a la hora de aplicar una restricción? Supongo que no es
>> tan difícil pero al final me ha vencido el tiempo y el pánico, y las BBDD
>> no son precisamente mi fuerte.
>>
>> Y ya podéis lartearme tranquilamente, que yo agacho la cabeza a la espera
>> de vuestro aleccionamiento.
>> --
>> Lista de Correo #BOFHers - //www.freelists.org/list/bofhers
>> Síguenos también el Twitter, en el hastag #BOFHers (y derivados)
>> ¡También tenemos un servidor IRC! irc.escomposlinux.org:6667 canal
>> #BOFHers
>>
>
>

Other related posts: