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

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!
):

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?
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!
):
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?

Portail









) Tu accompagne la clef primaire de cette table d'un libellé qui indiquera à koi correspond le code de la table .







