Вы находитесь на странице: 1из 5

EJEMPLO E-R: JUICIOS

BASES DE DATOS

1. Se pretende diseñar una base de datos que refleje la información que necesita una sociedad para desarrollar un sistema
judicial como el que sigue:

• Cuando un ciudadano denuncia a otro se constituye un jurado para celebrar el juicio correspondiente. El jurado estará
formado por un juez (J), un secretario (S) y una serie de vocales (V), todos ellos ciudadanos. Por lo que para cada juicio
se quiere registrar el NIC (Número de Identificación del Ciudadano) del denunciante, el NIC del denunciado, el
identificador y el texto de la denuncia, así como los NICs de los miembros del jurado con el cargo de cada uno. Dado el
carácter hostil de los ciudadanos de esta sociedad es muy frecuente que dos ciudadanos se denuncien repetida veces,
aunque por la misma denuncia no se celebra más de un juicio.
• Dentro de un jurado un ciudadano no puede tener más de un cargo que se almacena como un carácter (J, S o V).
• De los ciudadanos se quiere guardar su NIC, su nombre y su primer apellido. Y para aquellos ciudadanos que estén
cumpliendo alguna condena se guarda la fecha de inicio de su encarcelación, la duración de su pena y el nombre del
penal donde la cumple (Villabona o La Modelo de Avilés).
• Dada la nefasta experiencia de años anteriores se quiere que el sistema evite asignar jurados a juicios inexistentes.
EJEMPLO E-R: JUICIOS
BASES DE DATOS

(0,n) ID_Juicio
NIC Denunciante

Nombre N:M Texto


(0,m)
CIUDADANO JUICIO
Denunciado
Apellido (1,1)

(1,n)
(0,m)

Jurado N:M
1:1

Cargo
(0,1)

CONDENADOS

Duración Penal
Fecha

L= { NIC  Nombre, apellido (1)


NIC  fecha, duración, Penal (2)
ID_Juicio  Texto, NIC_Denunciante, NIC_Denunciado, (3)
ID_Juicio NIC_jurado  Cargo} (4)

CIUDADANO= (NIC , Nombre, apellido)


JUICIO= (ID_Juicio , NIC_Denunciante, NIC_Denunciado, Texto) FK: Ciudadanos(NIC), Ciudadanos(NIC)
JURADO = (ID_Juicio, NIC_Jurado , Cargo) FK: Juicio(ID_Juicio), Ciudadanos(NIC)
CONDENADOS= (NIC , Fecha,duración,Penal) FK: Ciudadanos(NIC)

(1) se impone en la tabla Ciudadanos por ser NIC la PK


(2) se impone en la tabla Condenados por ser NIC la PK
(3) se impone en la tabla Juicio por ser ID_Juicio la PK
(4) se impone en la tabla Jurado por ser ID_Juicio, ID_Jurado la PK

Todas las tablas están en FNBC

Para comprobar que uno no sea su propio juez habrá que hacer un trigger o un aserto de la forma:
CREATE ASSERTION ( NOT Exists (
select *
from Juicio inner join Jurado on (Jucio.id_Juicio=Jurado.id_Juicio)
where Jucio.NIC_Denunciado = Jurado.NIC_Jurado or
Jucio.NIC_Denunciaante = Jurado.NIC_Jurado ))
EJEMPLO E-R: JUICIOS
BASES DE DATOS

(1, 1) ID_Juicio
NIC

Denunciante
Nombre N:1:1 Texto
(1, 1) (1, n)
CIUDADANOS C-J JUICIOS
Denunciado
Apellido (1,1) (1,n)

(0,m)
Jurado N:M
1:1

Cargo
(0,1)

CONDENADOS

Duración Penal
Fecha

CIUDADANO= (NIC , Nombre, apellido)


JUICIO= (ID_Juicio , NIC_Denunciante, NIC_Denunciado, Texto) FK: Ciudadanos(NIC), Ciudadanos(NIC)
JURADO = (ID_Juicio, NIC_Jurado , Cargo) FK: Juicio(ID_Juicio), Ciudadanos(NIC)
CONDENADOS= (NIC , Fecha,duración,Penal) FK: Ciudadanos(NIC)

Como puede verse el resultado es el mismo, ya que la tabla JUICIOS es idéntica a la anterior tabla, ya que la relación C_J al
ser 1:1:N no genera tabla.
EJEMPLO E-R: JUICIOS
BASES DE DATOS

1:N ID_Juicio
NIC (1, 1) (1, n)
denunciante

Nombre Texto
(1, 1) (1, n)
CIUDADANO denunciado JUICIO

Apellido (1,1)
1:N (1,n)

(0,m)
Jurado N:M
1:1

Cargo
(0,1)

CONDENADOS

Duración Penal
Fecha

CIUDADANO= (NIC , Nombre, apellido)


JUICIOS= (ID_Juicio , NIC_Denunciante, NIC_Denunciado, Texto) FK: Ciudadanos(NIC), Ciudadanos(NIC)
JURADO = (ID_Juicio, NIC_Jurado , Cargo) FK: Juicio(ID_Juicio), Ciudadanos(NIC)
CONDENADOS= (NIC , Fecha,duración,Penal) FK: Ciudadanos(NIC)

Como puede verse el resultado es el mismo, ya que la tabla JUICIOS es idéntica a la anterior, ya que las relaciones
denunciante y denunciado al ser 1:N no generan tabla.
EJEMPLO E-R: JUICIOS
BASES DE DATOS

ID_Juicio
NIC

N:M
Nombre Texto
(1, 1) (1, n)
CIUDADANO C-J JUICIO

Apellido (1,1) (1,n)


Ante/Ado

(0,m)
Jurado N:M
1:1

Cargo
(0,1)

CONDENADOS

Duración Penal
Fecha

CIUDADANO= (NIC , Nombre, apellido)


JUICIOS= (ID_Juicio , Texto)
C_J= (ID_Juicio , NIC, denuncianteOdenunciado) FK: Juicio(ID_Juicio), Ciudadanos(NIC)
JURADO = (ID_Juicio, NIC_Jurado , Cargo) FK: Juicio(ID_Juicio), Ciudadanos(NIC)
CONDENADOS= (NIC , Fecha,duración,Penal) FK: Ciudadanos(NIC)

Como puede verse el resultado varía un poco, ya que C-J genera tabla

Вам также может понравиться