Ejemplo

FUNDAMENTO TEÓRICO




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')