elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Crear una relación en base de datos (sql oracle)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear una relación en base de datos (sql oracle)  (Leído 1,971 veces)
alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Crear una relación en base de datos (sql oracle)
« en: 26 Noviembre 2018, 21:59 pm »

Soy nueva en base de datos y tengo que crear una serie de tablas y sus relaciones. Lo primero que tengo que hacer son estas dos tablas y la relación que las une:


No entiendo muy bien donde tengo que colocar las foreign key, si en las tablas relacionadas o en la relación. Aquí pongo como lo he hecho yo que ha sido colocando una clave foránea con un nombre en la tabla relacionada y otra clave en la relación. No se muy bien como afecta que sea una relación 1,1 -> 1,n

Código:
CREATE TABLE MULTIUSOS (
    id_multiusos number,
    megafonia varchar(20),
    red varchar(5) default 'FALSE',   
    codigo number,
    nombre_salas varchar(50),
    capacidad number,
    tipo varchar(2),
   
    constraint CK_red_valor check (red ='TRUE' or red ='FALSE'),
    constraint multiusos_pk primary key (id_multiusos)
    );

CREATE TABLE RESERVAS (
    id_reserva number,
    fehca date,
    hora_ini date,
    hora_fin date,
    evento varchar(20),
    id_multiusos number,
    id_empleado number,
   
    constraint reservas_pk primary key (id_reserva),
    constraint multiusos_fk
        foreign key( id_multiusos)
            references MULTIUSOS(id_multiusos),
    constraint empleado_fk
        foreign key (id_empleado)
            references EMPLEADOS(id_empleado)
    );

CREATE TABLE RESERVAS_MULTIUSOS (
    id_reservas number,
    id_multiusos number,
   
    constraint rel_reservas_multiusos_fk
        foreign key (id_reservas)
            references RESERVAS(id_reserva),
    constraint rel_multiusos_reservas_fk
        foreign key(id_multiusos)
            references MULTIUSOS(id_multiusos)
    );


Si alguien puede sacarme de dudas :huh:...gracias.


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.041



Ver Perfil
Re: Crear una relación en base de datos (sql oracle)
« Respuesta #1 en: 27 Noviembre 2018, 03:12 am »

Saludos,

- Dependerá algo de la metodología y sintáxis que estés utilizando, yo lo haría así:

-- Multiusos (1,1) <=> Reservas (0,n), implica Cardinalidad máxima o mínima:
--- Un Multiusos puede tener como mínimo 0 Reservas
--- Un Multiusos puede tener como máximo n Reservas
--- Una Reserva puede tener como mínimo 1 Multiusos
--- Una Reserva puede tener como máximo 1 Multiusos

-- Se deduce una Relación 1 a muchos:
--- Multiusos (1:n) Reservas
--- Puede existir Multiusos sin necesidad de Reservas
--- Reservas DEPENDE de la existencia de Multiusos, entonces la clave foranea va en Reservas

Código
  1. CREATE TABLE Multiusos (
  2.  id_multiusos INTEGER PRIMARY KEY,
  3.  megafonia    VARCHAR(20),
  4.  red          VARCHAR(5) DEFAULT 'FALSE'
  5. )
  6.  
  7. CREATE TABLE Reservas (
  8.  id_reserva   INTEGER PRIMARY KEY,
  9.  id_multiusos INTEGER FOREIGN KEY REFERENCES Multiusos(id_multiusos),
  10.  fecha        DATE,
  11.  hora_ini     TIME,
  12.  hora_fin     TIME,
  13.  evento       VARCHAR(20)
  14. )

- Por lo tanto me parece que vas por buen camino.


En línea

alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Re: Crear una relación en base de datos (sql oracle)
« Respuesta #2 en: 27 Noviembre 2018, 12:27 pm »

- Dependerá algo de la metodología y sintáxis que estés utilizando, yo lo haría así:

-- Multiusos (1,1) <=> Reservas (0,n), implica Cardinalidad máxima o mínima:
--- Un Multiusos puede tener como mínimo 0 Reservas
--- Un Multiusos puede tener como máximo n Reservas
--- Una Reserva puede tener como mínimo 1 Multiusos
--- Una Reserva puede tener como máximo 1 Multiusos

-- Se deduce una Relación 1 a muchos:
--- Multiusos (1:n) Reservas
--- Puede existir Multiusos sin necesidad de Reservas
--- Reservas DEPENDE de la existencia de Multiusos, entonces la clave foranea va en Reservas


Muchas gracias.
Entonces entiendo que para una relación 1,1<->1,n no necesito una tabla de relación?
Es que he visto algunas tablas de relaciones. Supongo que se usaran para relaciones 1<->1.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda]Conexión a base de datos Oracle
Hacking
nacho87 1 2,626 Último mensaje 15 Agosto 2012, 06:26 am
por atxdz18
Auditoria Base de datos Oracle
Desarrollo Web
Bhrentox 0 1,502 Último mensaje 9 Noviembre 2012, 17:16 pm
por Bhrentox
Duda Base de datos Oracle
Bases de Datos
MNicolas 0 2,024 Último mensaje 21 Febrero 2015, 19:02 pm
por MNicolas
BASE DE DATOS (Modelo Entidad Relacion)
Bases de Datos
NaxoHR 3 5,852 Último mensaje 29 Diciembre 2016, 13:51 pm
por crisoof
Crear lista HTML(formulario) con datos de base de datos (Oracle)
Desarrollo Web
nelbored 1 2,850 Último mensaje 15 Mayo 2017, 16:42 pm
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines