ntity relationship

Discussion of open issues, suggestions and bugs regarding LinqConnect – Devart's LINQ to SQL compatible ORM
Post Reply
degas
Posts: 77
Joined: Mon 16 Feb 2009 18:36
Location: Argentina

ntity relationship

Post by degas » Mon 23 Feb 2009 16:58

CREATE TABLE DEGNET.USUARIO (
ID_USUARIO NUMBER(4),
NOMBRE VARCHAR2(25) NOT NULL,
PASSWORD VARCHAR2(32),
ID_ENTIDAD_LEGAL NUMBER(4) NOT NULL,
ROL_CI CHAR(1) DEFAULT 'N',
ROL_CLIENTE_GAS CHAR(1) DEFAULT 'N',
ROL_CARGADOR CHAR(1) DEFAULT 'N',
ROL_BROKER CHAR(1) DEFAULT 'N',
ROL_GRUPO_CLIENTE CHAR(1) DEFAULT 'N',
FH_ULTIMA_VISITA DATE DEFAULT SYSDATE,
REINTENTOS NUMBER(1) DEFAULT 0,
EMAIL_ADMINISTRATIVO VARCHAR2(1500),
EMAIL_OPERATIVO VARCHAR2(1500),
CONSTRAINT CHK_EMAIL_ADMINISTRATIVO CHECK ( EMAIL_ADMINISTRATIVO LIKE '%@%' ),
CONSTRAINT CHK_EMAIL_OPERATIVO CHECK ( EMAIL_OPERATIVO LIKE '%@%' ),
CONSTRAINT CHK_USUARIO_ROL_BROKER CHECK ( ROL_BROKER IN ('S','N') ),
CONSTRAINT CHK_USUARIO_ROL_CARGADOR CHECK ( ROL_CARGADOR IN ('S','N') ),
CONSTRAINT CHK_USUARIO_ROL_CI CHECK ( ROL_CI IN ('S','N') ),
CONSTRAINT CHK_USUARIO_ROL_CLIENTE_GAS CHECK ( ROL_CLIENTE_GAS IN ('S','N') ),
CONSTRAINT CHK_USUARIO_ROL_GRUPO_CLIENTE CHECK ( ROL_GRUPO_CLIENTE IN ('S','N') ),
CONSTRAINT FK_USUARIO_ID_ENTIDAD_LEGAL FOREIGN KEY (ID_ENTIDAD_LEGAL)
REFERENCES RED.(ID_ENTIDAD_LEGAL),
CONSTRAINT PK_ID_USUARIO PRIMARY KEY (ID_USUARIO),
CONSTRAINT UK_USUARIO_NOMBRE UNIQUE (NOMBRE))
TABLESPACE DATA
STORAGE (
INITIAL 192K
MAXEXTENTS UNLIMITED
)
LOGGING;

COMMENT ON TABLE DEGNET.USUARIO IS 'Nomina de usuarios habilitados para operar con el sitio web o Movil';
COMMENT ON COLUMN DEGNET.USUARIO.ID_USUARIO IS 'Identificador del Usuario autogenerado.';
COMMENT ON COLUMN DEGNET.USUARIO.NOMBRE IS 'Nombre del usuario para el login en el sitio web.';
COMMENT ON COLUMN DEGNET.USUARIO.PASSWORD IS 'Contraseña encriptada del usuario';
COMMENT ON COLUMN DEGNET.USUARIO.ID_ENTIDAD_LEGAL IS 'Identificador de la Entidad Legal. Refiere a la tabla RED.ENTIDAD_LEGAL';
COMMENT ON COLUMN DEGNET.USUARIO.ROL_CI IS 'S: Indica que el usuario tiene disponibles las opciones para CI';
COMMENT ON COLUMN DEGNET.USUARIO.ROL_CLIENTE_GAS IS 'S: Indica que el usuario tiene disponibles las opciones para Cliente Gas';
COMMENT ON COLUMN DEGNET.USUARIO.ROL_CARGADOR IS 'S: Indica que el usuario tiene disponibles las opciones para Cargador';
COMMENT ON COLUMN DEGNET.USUARIO.ROL_BROKER IS 'S: Indica que el usuario tiene disponibles las opciones para Broker';
COMMENT ON COLUMN DEGNET.USUARIO.ROL_GRUPO_CLIENTE IS 'S: Indica que el usuario tiene disponibles las opciones para Grupo Cliente';
COMMENT ON COLUMN DEGNET.USUARIO.FH_ULTIMA_VISITA IS 'Fecha y hora de la ultima visita del usuario al sitio web. (Ultimo login exitoso)';
COMMENT ON COLUMN DEGNET.USUARIO.REINTENTOS IS 'Contador de reintentos. Se cerea ante un login exitoso';
COMMENT ON COLUMN DEGNET.USUARIO.EMAIL_ADMINISTRATIVO IS 'Direcciones de correo de caracter administrativo separadas por punto y coma.';
COMMENT ON COLUMN DEGNET.USUARIO.EMAIL_OPERATIVO IS 'Direcciones de correo de caracter operativo separadas por punto y coma.';

CREATE TABLE DEGNET.USUARIO_CONTACTO (
ID_USUARIO NUMBER(4),
ID_CONTACTO NUMBER(5),
ROL CHAR(1),
CONSTRAINT CHK_USUARIO_CONTACTO_ROL CHECK ( ROL IN ('A', 'O') ),
CONSTRAINT FK_USUARIO_CONTACTO_CONTACTO FOREIGN KEY (ID_CONTACTO)
REFERENCES RED.(ID_CONTACTO),
CONSTRAINT FK_USUARIO_CONTACTO_USUARIO FOREIGN KEY (ID_USUARIO)
REFERENCES DEGNET.USUARIO(ID_USUARIO),
CONSTRAINT NN_USUARIO_CONTACTO_CONTACTO CHECK ( NOT ID_CONTACTO IS NULL ),
CONSTRAINT NN_USUARIO_CONTACTO_USUARIO CHECK ( NOT ID_USUARIO IS NULL ),
CONSTRAINT PK_USUARIO_CONTACTO PRIMARY KEY (ID_CONTACTO, ID_USUARIO, ROL))
TABLESPACE DATA
STORAGE (
INITIAL 64K
MAXEXTENTS UNLIMITED
)
LOGGING;

COMMENT ON TABLE DEGNET.USUARIO_CONTACTO IS 'Relacion usuario de DegNet y contactos de las Entidad Legal correspondiente. Se utiliza para el envio de mails operativos y administrativos.';
COMMENT ON COLUMN DEGNET.USUARIO_CONTACTO.ID_USUARIO IS 'Identificador del usuario DegNet. Refiere a la tabla DEGNET.USUARIO.';
COMMENT ON COLUMN DEGNET.USUARIO_CONTACTO.ID_CONTACTO IS 'Identificador del contacto. Refiere a la tabla RED.CONTACTO.';
COMMENT ON COLUMN DEGNET.USUARIO_CONTACTO.ROL IS 'Rol del contacto para DegNet. A=Administrativo / O=Operativo';

CREATE OR REPLACE TRIGGER DEGNET.TRIBI_ID_USUARIO
BEFORE INSERT ON DEGNET.USUARIO FOR EACH ROW
DECLARE
Id NUMBER;
BEGIN
SELECT SEQ_ID_USUARIO.NEXTVAL INTO Id FROM DUAL;
:NEW.ID_USUARIO := Id;
END TRIBI_ID_USUARIO;
/

CREATE OR REPLACE TRIGGER DEGNET.TRI_AIU_USUARIO
AFTER INSERT OR UPDATE OF "ROL_CI", "ROL_CLIENTE_GAS", "ROL_BROKER", "ROL_GRUPO_CLIENTE", "ROL_CARGADOR" ON DEGNET.USUARIO FOR EACH ROW
DECLARE
/******************************************************************************
Creado por : ACM (29/05/2008)
Objetivo : Limitar la asignacion de rol de DegNet a los roles habilitados
de la entidad legal correspondiente.
Modificado por:
xx ../../.. xxxxxxxxxxxxxx
******************************************************************************/
vID_ENTIDAD PLS_INTEGER;
vROL VARCHAR2(20);
eERROR_ROL EXCEPTION;
BEGIN
vID_ENTIDAD := :NEW.ID_ENTIDAD_LEGAL;

vROL := 'OK';
IF (:NEW.ROL_CI = 'S') AND (RED.PK_RED.ENTIDAD_ES_CLIENTE(vID_ENTIDAD) 'S') THEN
vROL := 'CI';
ELSIF (:NEW.ROL_CLIENTE_GAS = 'S') AND (RED.PK_RED.ENTIDAD_ES_CLIENTE_GAS(vID_ENTIDAD) 'S') THEN
vROL := 'Cliente Gas';
ELSIF (:NEW.ROL_CARGADOR = 'S') AND (RED.PK_RED.ENTIDAD_ES_CARGADOR (vID_ENTIDAD) 'S') THEN
vROL := 'Cargador';
ELSIF (:NEW.ROL_BROKER = 'S') AND (RED.PK_RED.ENTIDAD_ES_BROKER (vID_ENTIDAD) 'S') THEN
vROL := 'Broker';
ELSIF (:NEW.ROL_GRUPO_CLIENTE = 'S') AND (RED.PK_RED.ENTIDAD_ES_GRUPO_CLIENTE (vID_ENTIDAD) 'S') THEN
vROL := 'Grupo Cliente';
END IF;

IF vROL 'OK' THEN
RAISE eERROR_ROL;
RETURN;
END IF;

EXCEPTION WHEN eERROR_ROL
THEN RAISE_APPLICATION_ERROR (-20008,'No puede asignar rol ' || vROL || '. La entidad legal no tiene ese rol asociado.');
END TRI_AIU_USUARIO;
/


co dentro del Degas';
COMMENT ON COLUMN RED.ENTIDAD_LEGAL.RAZON_SOCIAL IS 'Razón social';
COMMENT ON COLUMN RED.ENTIDAD_LEGAL.CUIT IS 'Clave única de identificacion tributaria.';
COMMENT ON COLUMN RED.ENTIDAD_LEGAL.FAX IS 'Numero de FAX';
COMMENT ON COLUMN RED.ENTIDAD_LEGAL.TELEFONO IS 'Numero de telefono';
COMMENT ON COLUMN RED.ENTIDAD_LEGAL.MEGID IS 'Identificador para el MEG';

CREATE OR REPLACE TRIGGER RED.BI_ENTIDAD_LEGAL
BEFORE INSERT ON RED.ENTIDAD_LEGAL FOR EACH ROW
BEGIN
SELECT RED.SEQ_ID_ENTIDAD_LEGAL.NEXTVAL
INTO :NEW.ID_ENTIDAD_LEGAL
FROM DUAL;
END BI_ENTIDAD_LEGAL;
/

I have 3 tables DEGNET.USUARIO, DEGNET.USUARIO_CONTACTO and RED.CONTACTO

When using the Entity Developer Tool, the 3 entity should be related (see the FK) but they don't. Is it possible this kind of relationship using devArt?

Thanks

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Tue 24 Feb 2009 15:10

Thank you for the report, we are investigating the problem. I will let you know about the results.

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Wed 25 Feb 2009 08:53

The problem is fixed, look forward to the next build.

Post Reply