FUNDAMENTO TEÓRICO
EJEMPLO RELACIONAL
EJEMPLO RELACIONAL
MODELO ENTIDAD - RELACIÓN
MODELO RELACIONAL
FICHA - (Relación 1:1) Entre FICHA & USUARIO
(id_ficha,
biografia,
id_usuario)
CP: id_ficha
CF: id_usuario <-- USUARIO
USUARIO
(id_usuario,
logged
password
nombre,
permisos)
CP: id_usuario
ANUNCIO (Relación 1:m) USUARIO & ANUNCIO
(id_anuncio,
fecha,
texto,
id_usuario)
CP: id_anuncio
CF: id_usuario <-- USUARIO
ARTICULO (Relación 1:m) USUARIO & ARTICULO
(id_articulo,
fecha,
texto,
título,
autorizado,
id_usuario)
CP: id_articulo
CF: id_usuario <-- USUARIO (Relación 1:m)
CATEGORIA
(id_categoria,
descripción)
CP: id_categoria
CLASIFICA (Relación m:m) CATEGORIA & ARTICULO
(id_categoria,
id_articulo)
CP: (id_categoria, id_articulo)
CF: id_categoria <-- CATEGORIA (Relación m:m)
CF: id_ articulo <-- ARTICULO (Relación m:m)
SQL
¿Cual tabla hacemos primero?Rta: Aquellas que no reciban llaves foráneas de otras tablas.
Revisemos el modelo relacional: Las tablas USUARIO y CATEGORIA no le llegan llaves foráneas (CF) de ningún otra tabla.
CREATE TABLE
CREATE TABLE USUARIO
(ID_USUARIO VARCHAR2(12),
LOGGED VARCHAR2(4),
PASSWORD VARCHAR2(8),
NOMBRE VARCHAR2(100),
PERMISOS VARCHAR2(50),
CONSTRAINT PK_USUARIO PRIMARY KEY (ID_USUARIO));
CREATE TABLE CATEGORIA
(ID_CATEGORIA VARCHAR2(2),
DESCRIPCIÓN VARCHAR2(200),
CONSTRAINT PK_CATEGORIA PRIMARY KEY (ID_CATEGORIA));
CREATE TABLE FICHA
(ID_FICHA VARCHAR2(4),
BIOGRAFIA VARCHAR2(200),
ID_USUARIO VARCHAR2(12),
CONSTRAINT PK_FICHA PRIMARY KEY (ID_FICHA),
CONSTRAINT FK_FICHA_USUARIO FOREIGN KEY (ID_USUARIO)
REFERENCES USUARIO(ID_USUARIO));
CREATE TABLE ANUNCIO
(ID_ANUNCIO VARCHAR2(4),
FECHA DATE,
TEXTO VARCHAR2(400),
ID_USUARIO VARCHAR2(12),
CONSTRAINT PK_ANUNCIO PRIMARY KEY (ID_ANUNCIO),
CONSTRAINT FK_ANUNCIO_USUARIO FOREIGN KEY (ID_USUARIO)
REFERENCES USUARIO(ID_USUARIO));
CREATE TABLE ARTICULO
(ID_ARTICULO VARCHAR2(4),
FECHA DATE,
TEXTO VARCHAR2(400),
TÍTULO VARCHAR2(100),
AUTORIZADO VARCHAR2(50),
ID_USUARIO VARCHAR2(12),
CONSTRAINT PK_ARTICULO PRIMARY KEY (ID_ARTICULO),
CONSTRAINT FK_ARTICULO_USUARIO FOREIGN KEY (ID_USUARIO)
REFERENCES USUARIO(ID_USUARIO));
CREATE TABLE CLASIFICA
(ID_ARTICULO VARCHAR2(4),
ID_CATEGORIA VARCHAR2(2),
CONSTRAINT PK_CLASIFICA PRIMARY KEY (ID_ARTICULO, ID_CATEGORIA),
CONSTRAINT FK_CLASIFICA_ARTICULO FOREIGN KEY (ID_ARTICULO)
REFERENCES ARTICULO(ID_ARTICULO),
CONSTRAINT FK_CLASIFICA_CATEGORIA FOREIGN KEY (ID_CATEGORIA)
REFERENCES CATEGORIA(ID_CATEGORIA));
INSERTAR DATOS EN LA TABLA
USUARIO
INSERT INTO USUARIO (ID_USUARIO, LOGGED, PASSWORD, NOMBRE, PERMISOS)
VALUES ('13721304', 'SI', '12345', 'Diego Rojas', 'ADMINISTRADOR')
INSERT INTO USUARIO (ID_USUARIO, LOGGED, PASSWORD, NOMBRE, PERMISOS)
VALUES ('12342871', 'NO', '23456', 'Sara Arevalo', 'USUARIO')
INSERT INTO USUARIO (ID_USUARIO, LOGGED, PASSWORD, NOMBRE, PERMISOS)
VALUES ('63431889', 'SI', '34567', 'Alex Cruz', 'USUARIO')
INSERT INTO USUARIO (ID_USUARIO, LOGGED, PASSWORD, NOMBRE, PERMISOS)
VALUES ('28769407', 'NO', '45678', 'Lina Pinzón', 'USUARIO')
CATEGORIA
INSERT INTO CATEGORIA (ID_CATEGORIA, DESCRIPCIÓN)
VALUES ('01', 'Recursos Humanos')
INSERT INTO CATEGORIA (ID_CATEGORIA, DESCRIPCIÓN)
VALUES ('02', 'Financiera')
INSERT INTO CATEGORIA (ID_CATEGORIA, DESCRIPCIÓN)
VALUES ('03', 'Edición')
FICHA
INSERT INTO FICHA (ID_FICHA, BIOGRAFIA, ID_USUARIO) VALUES ('01', 'Escritora de profesion', '12342871')
INSERT INTO FICHA (ID_FICHA, BIOGRAFIA, ID_USUARIO) VALUES ('02', 'Escritor Amateur', '63431889')
INSERT INTO FICHA (ID_FICHA, BIOGRAFIA, ID_USUARIO) VALUES ('03', 'Reportera', '28769407')
Falto la tilde en profesión debemos actualizar el registro
UPDATE FICHA SET BIOGRAFIA='Escritora de Profesión' WHERE ID_USUARIO='12342871';
ANUNCIO
INSERT INTO "PRUEBA"."ANUNCIO" (ID_ANUNCIO, FECHA, TEXTO, ID_USUARIO)
VALUES ('1', TO_DATE('10/01/2010', 'DD/MM/YY'), 'Twitter presentó este jueves Twitter Music, un servicio para descubrir y escuchar canciones en función de la actividad y preferencias musicales del resto de usuarios de la red de "microblogging".', '12342871')
INSERT INTO "PRUEBA"."ANUNCIO" (ID_ANUNCIO, FECHA, TEXTO, ID_USUARIO) VALUES ('2', TO_DATE('12/03/2010', 'DD/MM/YY'), 'La compañía japonesa Fujitsu Laboratories ha desarrollado una interfaz que permite convertir –casi– cualquier objeto en una superficie táctil interactiva.', '63431889')
INSERT INTO "PRUEBA"."ANUNCIO" (ID_ANUNCIO, FECHA, TEXTO, ID_USUARIO) VALUES ('3', TO_DATE('13/02/2010', 'DD/MM/YY'), 'Facebook afirmó que las funciones de su nuevo software disponible para teléfonos Android, Facebook Home, comenzará a utilizarse esta semana también en los iPhones.', '28769407')