Bienvenue Invité Dans Le Forum De Tous Ceux Qui Aiment Le Sénégal !

Connecté en tant que Anonymous. Dernière visite le

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Poster un nouveau sujet  Répondre au sujet

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

1default [MYSQL 5] Heritage de tables et triggers le Jeu 3 Juil 2008 - 13:53

lyncx


Membre - Expert

Membre - Expert
Sexe:Masculin Balance Buffle
Salut!
Bon, je vais droit au but: je dois développer une application web en php, et là, j'en suis à l'extraction de mon script de création de base de données depuis mon modèle conceptuel de données (de WinDesign vers MySQL). Mon problème, c'est que je n'arrive pas à traduire l'héritage d'entités! J'ai bien un utilitaire sous Windesign qui permet de choisir le mode de traduction de l'héritage, mais aucune ne me satisfait...

Je vous montre mon MCD, le MLD généré par WinDesign et le script généré à partir du MLD:
MCD (une partie, je ne vais quand même pas vous donner tout le schéma de ma BD nak! Le fou ):




L'utilitaire de choix du mode de traduction de l'héritage:




le MLD:



et le script SQL (qui ne me satisfait absolument pas!)

DROP DATABASE IF EXISTS MLR8;
CREATE DATABASE IF NOT EXISTS MLR8;
USE MLR8;
# -----------------------------------------------------------------------------
# TABLE : BU
# -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS BU
(
NoBU CHAR(32) NOT NULL ,
NomBU CHAR(32) NULL
, PRIMARY KEY (NoBU)
)
comment = "";
# -----------------------------------------------------------------------------
# TABLE : Agents
# -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS Agents
(
NoAgent CHAR(32) NOT NULL ,
NoInterimaire CHAR(32) NULL ,
NomInterimaire CHAR(32) NULL ,
PrenomInterimaire CHAR(32) NULL ,
NoSalarie CHAR(32) NULL ,
NoNonCadre CHAR(32) NULL ,
NomNonCadre CHAR(32) NULL ,
PrenomNonCadre CHAR(32) NULL ,
NoCadre CHAR(32) NULL ,
NomCadre CHAR(32) NULL ,
PrenomCadre CHAR(32) NULL
, PRIMARY KEY (NoAgent)
)
comment = "";
# -----------------------------------------------------------------------------
# INDEX DE LA TABLE Agents
# -----------------------------------------------------------------------------

CREATE INDEX I_NoInterimaire
ON Agents (NoInterimaire ASC);


CREATE INDEX I_NoSalarie
ON Agents (NoSalarie ASC);


# -----------------------------------------------------------------------------
# TABLE : Appartient
# -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS Appartient
(
NoBU CHAR(32) NOT NULL ,
NoAgent CHAR(32) NOT NULL ,
NoSalarie CHAR(32) NOT NULL
, PRIMARY KEY (NoBU,NoAgent,NoSalarie)
)
comment = "";

# -----------------------------------------------------------------------------
# CREATION DES REFERENCES DE TABLE
# -----------------------------------------------------------------------------

ALTER TABLE Appartient
ADD FOREIGN KEY FK_Appartient_BU (NoBU)
REFERENCES BU (NoBU) ;


ALTER TABLE Appartient
ADD FOREIGN KEY FK_Appartient_Agents (NoAgent)
REFERENCES Agents (NoAgent) ;


Je voudrais que mysql traduise autrement l'héritage que par des index. Could anyone help me?
Autre chose: J'ai une base hébergée par sql.free.fr, et sous phpMyadmin, je n'arrive pas à créer de triggers (il me dit que je dois avoir des Super-privilèges pour ça). Que faire?

Kou sacc sama ourdinator?

Thiamaass


Membre - Familiarisé

Membre - Familiarisé
Sexe:Masculin Vierge Rat
ouff c cho déh rétaane Grithia

"Au Seuil De Ses Émeraudes, Mon Souffle Repose. Et Sur Son Eclantante Humeur Chaude, Mon Sourire Se Dépose."[THIAM Babel]

! Cliquez ICI Et Passez Votre Annonce !

Nemam


Membre - Modérateur

Membre - Modérateur
Sexe:Féminin Gémeaux Cochon
c quoi ce charabia encore ré

Quand passe la passion suis la là où elle t'améne, il vaut mieux la prendre au vol de peur qu'elle s'envole.

sowdiomyero


Membre - Expert

Membre - Expert
Sexe:Masculin Taureau Chien
C chaud dé !!! on va fumer un bédo pour apporter une petite, strict minimum necessaire (SMN) ré mais par contre tu paieras au SMIC.

Bon déjà, si j'ai bien compris ton MCD, ta table genirique c Agent et les autres tbles sont heritées !! C bien ça? Je pense que tu pourrais supprimer les deux tables "Cadres" et NonCadre" pour les mettre dans une même table qui definit leurs caracteristiques communes : dans une table Categorie avec id de la table qui prend deux valeurs possibles : 1= Cadre et 2=NonCadre (Mysql te permettra de le definir avec aise  respect ) Tu accompagne la clef primaire de cette table d'un libellé qui indiquera à koi correspond le code de la table .

Pour ce qui est de ta base dans PhpMyadmin, choisi bien le type de la base, qui prend en compte et respecte toutes les contraintes k tu avais definit sur win design : InnoDb . (MyISAM) est par defaut. Sinon l'enegistrement de certaines données ne respecteront ni les contraintes definies, encore moins les info à stocker dans la table generique à partir des autres tables heritées.

Enfin, pour ce qui est des Trigger, pour l'instant, jusqu'à la version 4 de Mysql et je dirai même 5.0.1, les declencheurs (pour les mises à jour) n'étaient pas pris en compte. Dans la version , la 5.0.2, je ne suis pas sûr, j'ai pas d'info exactes mais les declencheurs devaient y être (Pas du PL SQL pour l'instant). Mais je pense qu'il n'ont pas le choix, puisque ce sont quand même de grosse bases . Dans free, verifie bien que la version est ulterieur à la 5.0.2, sinon adieu les triggers . Pour les verouillages, je ne sais pas exactement lequel est mis par defaut.

Voilà, j'espère avoir repondu à quelques unes de tes questions mess

Ce qu’il y a d’ennuyeux dans l’amour, c’est que c’est un crime où l’on ne peut pas se passer d’un complice."
Baudelaire

lyncx


Membre - Expert

Membre - Expert
Sexe:Masculin Balance Buffle
sowdiomyero a écrit: Je pense que tu pourrais supprimer les deux tables "Cadres" et NonCadre" pour les mettre dans une même table qui definit leurs caracteristiques communes : dans une table Categorie avec id de la table qui prend deux valeurs possibles : 1= Cadre et 2=NonCadre (Mysql te permettra de le definir avec aise  respect ) Tu accompagne la clef primaire de cette table d'un libellé qui indiquera à koi correspond le code de la table .


Déjà fait! rétaane en fait, après avoir posté mon premier message, j'ai réfléchi sur les futures requêtes que j'aurais à faire en php, et je me suis rendu compte que cette solution, si elle n'était la meilleure, était la moins mauvaise. Mais ça ne résoud pas mon blème! Sad
En effet, si j'adopte cette solution, alors qu'il y a certaines relations qui ne doivent être rattachées qu'aux cadres, je devrais à chaque fois faire des requêtes de contrôles avant d'enregistrer des données. En outre, le fait que les salariés et les intérimaires partagent la même table n'est pas un acte de gestion réellement approuvé par la direction de l'entreprise (tu sais, juridiquement...). Même si MySQL 5 gère le vues (je pourrais créer une vue pour les Salariés et une autre pour les intérimaires, toutes deux basées sur la table Agents), il faut que je mette en place des triggers "AFTER UPDATE", afin de mettre à jour la table Agents apres chaque mise à jour des vues.

Ce qui me permet d'enchaîner sur l'existence des triggers. En effet, depuis la sortie de MySQL 5, on peut en créer, mais d'une façon extrêmement rudimentaire. On ne peut pas utiliser de curseur dedans, et il y a plein d'autres fonctionnalités qui manquent. En plus (et surtout), j'ai créé une base chez free.fr, une autre chez iFrance et une autre chez db4free.net: tous sont unanimes: ils n'autorisent pas les triggers!... A chaque fois que j'essaie d'en créer (avec la bonne syntaxe), ils me mettent: "Action denied. Need Super-privilege to perform this action".

So, i'm (still) desperately searching!

Kou sacc sama ourdinator?

sowdiomyero


Membre - Expert

Membre - Expert
Sexe:Masculin Taureau Chien
Salariés et interimaires ne partage pas la même table sur ton MCD. Ils sont des agents oui, mais ils n'ont pas les mêmes caracteristiques.

je vais te dire comment je vois les champs qui composeront ta BD : Le champs Salarié sera composé des attributs suivants : idSalarié/ NomSal/PrenomSal/FonctionSal (qui est le libellé contenu dans la table categorie).
Puisque la table categorie est associée à celle des salariés qui elle même associée à agents, les enregistrements qui seront effectués ne le seront pas dans les tables elle m^mes, mais dans les tables d'association.Par exemple, imaginons k pour la table categorie libellé=cadre ait le code id=1 et le libellé=non cadre code id=2. Avec tes requêtes, ce qui sera enregistré, ne le sera pas dans cette table là, mais dans la table qui l'associe avec celle des salariés (nommons la "associer"). Tu inserre dans "associer" l'id du salarié et l'id de sa categorie correspondante. id.salaries=id.categorie. Je ne sais pas si je me suis fait comprendre . Mais bon tu me diras.

Pour ce qui est de tes triggers ils appartiennent dans le LDD de sql, et pour celà, tu dois le faire en interne, c'est à dire tu dois disposer entierement de ta base. Je te conseille une chose, telecharge wamp serveur et travaille avec, tu es le root de la BD et peux creer tout ce que tu veux. Je suppose qu'à la fin de ton appli tu dois l'heberger quelque part, pas sur un serveur gratuit qui offre des possibilités rduites. C sur MySQL 5.0.2 k les triggers ont été intégrés. Les versions des BD de free et des autres sont elles à jours?

Ce qu’il y a d’ennuyeux dans l’amour, c’est que c’est un crime où l’on ne peut pas se passer d’un complice."
Baudelaire

lyncx


Membre - Expert

Membre - Expert
Sexe:Masculin Balance Buffle
sowdiomyero a écrit:
je vais te dire comment je vois les champs qui composeront ta BD : Le champs Salarié sera composé des attributs suivants : idSalarié/ NomSal/PrenomSal/FonctionSal (qui est le libellé contenu dans la table categorie).
Puisque la table categorie est associée à celle des salariés qui elle même associée à agents, les enregistrements qui seront effectués ne le seront pas dans les tables elle m^mes, mais dans les tables d'association.Par exemple, imaginons k pour la table categorie libellé=cadre ait le code id=1 et le libellé=non cadre code id=2. Avec tes requêtes, ce qui sera enregistré, ne le sera pas dans cette table là, mais dans la table qui l'associe avec celle des salariés (nommons la "associer"). Tu inserre dans "associer" l'id du salarié et l'id de sa categorie correspondante. id.salaries=id.categorie. Je ne sais pas si je me suis fait comprendre . Mais bon tu me diras.


Si j'ai parfaitement compris, c'est ce que je vais faire.

sowdiomyero a écrit:
Pour ce qui est de tes triggers ils appartiennent dans le LDD de sql, et pour celà, tu dois le faire en interne, c'est à dire tu dois disposer entierement de ta base. Je te conseille une chose, telecharge wamp serveur et travaille avec, tu es le root de la BD et peux creer tout ce que tu veux. Je suppose qu'à la fin de ton appli tu dois l'heberger quelque part, pas sur un serveur gratuit qui offre des possibilités rduites. C sur MySQL 5.0.2 k les triggers ont été intégrés. Les versions des BD de free et des autres sont elles à jours?


Il sont bien en MySQL 5.1. Mais impossible de créer les triggers dedans. Si je choisis Wamp Server, je ne pourrais pas migrer mes Procédures et mes triggers sur la base que me propose l'hébergeur. De ce fait, tout mon travail aurait servi à rien... Mais bon, je ne sais pas si c'est préférable, mais je crois que c'est mieux de simuler les triggers avec php. A défaut de grives, on mange des merles...
Tu ne connaitrais pas un hébergeur qui proposerait une base avec des privilèges root? Neutral

Kou sacc sama ourdinator?

sowdiomyero


Membre - Expert

Membre - Expert
Sexe:Masculin Taureau Chien
lyncx a écrit:
Tu ne connaitrais pas un hébergeur qui proposerait une base avec des privilèges root? Neutral

Si tu paie l'hebergement de ton site et de ta base, alors tu pourra l'administrer comme bon te senble, puisqu'elle est à toi. Ce qui me fait dire que si vous comptez migrer vers un hebergeur digne de ce nom, alors tu ne perdras pas tes traggers auquels tu tiens tant

Ce qu’il y a d’ennuyeux dans l’amour, c’est que c’est un crime où l’on ne peut pas se passer d’un complice."
Baudelaire

lyncx


Membre - Expert

Membre - Expert
Sexe:Masculin Balance Buffle
Je vérifierais demain dans la base de l'entreprise. Je te tiendrais au courant.

Kou sacc sama ourdinator?

BAD_Killer


Membre - Nouveau

Membre - Nouveau
Sexe:Masculin Vierge Cheval
Heu depuis que je programme en php j ai jamais entendu parler de WinDesign vous pourriez peut etre nous expliquer ce que c est ? parceque je n y comprends rien
N empeche je cherche de mon cote

BAD_Killer


Membre - Nouveau

Membre - Nouveau
Sexe:Masculin Vierge Cheval
Description
Le Design simple, rapide et complet de vos Systèmes d'Information
Depuis la version 5.6, toutes les évolutions intégrées dans Win'Design, concourent à un même objectif : étendre les capacités d'ouverture et de paramétrage de la Gamme, pour une adaptation aux différents contextes d'utilisation et la mise à disposition d'un environnement de travail toujours plus intuitif et personnalisable.
La Version 6.5 offre la possibilité de dériver un nouveau type d'objet, à partir d'un stéréotype.


C est pas de mon niveau je renonce

sowdiomyero


Membre - Expert

Membre - Expert
Sexe:Masculin Taureau Chien
Pourtant il est très simple d'utilisation, c un genie logiciel pour la modelisation des SI. Pour ceux qui sont specialisés en SI ou encore en Business Intelligence (BI), ou en modelisation de BD, c'est très pratique. Il peut être du niveau de tout le monde, suffit juste de comprendre ce que l'on fait, voilà !! mess

Ce qu’il y a d’ennuyeux dans l’amour, c’est que c’est un crime où l’on ne peut pas se passer d’un complice."
Baudelaire

BAD_Killer


Membre - Nouveau

Membre - Nouveau
Sexe:Masculin Vierge Cheval
sowdiomyero a écrit:Pourtant il est très simple d'utilisation, c un genie logiciel pour la modelisation des SI. Pour ceux qui sont specialisés en SI ou encore en Business Intelligence (BI), ou en modelisation de BD, c'est très pratique. Il peut être du niveau de tout le monde, suffit juste de comprendre ce que l'on fait, voilà !! mess

Moylolou j ai trop de choses en tete j ai pas le temps d apprendre qqch de new
bayil ma tjap ci mysql rek mo gueune

14 Re: [MYSQL 5] Heritage de tables et triggers le Sam 5 Juil 2008 - 15:55

lyncx


Membre - Expert

Membre - Expert
Sexe:Masculin Balance Buffle
lyncx a écrit:Je vérifierais demain dans la base de l'entreprise. Je te tiendrais au courant.


Je reviens pour te dire que c'est impossible. Tous les hébergeurs restreignent l'accès aux triggers. Je crois que je vais me contenter de php!

Kou sacc sama ourdinator?

BAD_Killer


Membre - Nouveau

Membre - Nouveau
Sexe:Masculin Vierge Cheval
makhala bayill diay pro Vive le PHP

16 Re: [MYSQL 5] Heritage de tables et triggers le Sam 12 Juil 2008 - 19:33

Admin


Membre - Familiarisé

Membre - Familiarisé
Sexe:Masculin Poissons Singe
Eh ben y en a des forts par ici alors....

Le combat pratique de ces intérêts particuliers qui constamment se heurtent réellement aux intérêts collectifs et illusoirement collectifs rend nécessaire l'intervention pratique et le refrènement par l'intérêt "universel" illusoire sous forme d'État.

Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Poster un nouveau sujet  Répondre au sujet

Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum