Rechercher : dans
Par :

[Merise:>Modéle de données] Comment savoir ?

Dernière réponse le 6 fév 2007 à 14:43:29 P@, le 25 jan 2007 à 16:13:13 
 Signaler ce message aux modérateurs

Bonjour,

je m'autoforme sur merise.
J'ai fait mon modéle, mais comment savoir si c'est bon ??

J'ai des questions notament sur 1 entité.

En fait, j'ai une entité contact.
je pensai en faire une autre statut et type.

Puis je me suis, que je pouvait rassemblait statut et type dans une même entité (le seul lien entre elle est leur cardinalité avec l'entité contact 1,n ? soit un contact ne peut avoir qu'un statut et un seul type alors qu'un statut, tout comme un type, peut être associé à plusieur contact).

Alors je me demande si je ne devrais pas mettre statut et type en tant qu'attribut de l'entite contact.

Je ne sais pas si je suis clair dans mon explication.
mais si vous pouviez me guider.
Merci d'avance ..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein
Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « [Merise:>Modéle de données] Comment savoir ? » dans :
MERISE - Modèle conceptuel des données Voir Modèle conceptuel des données Le modèle conceptuel des données (MCD) a pour but d'écrire de façon formelle les données qui seront utilisées par le système d'information. Il s'agit donc d'une représentation des données, facilement compréhensible,...
MERISE - Modèle logique des données Voir Le modèle logique des données Le modèle logique des données consiste à décrire la structure de données utilisée sans faire référence à un langage de programmation. Il s'agit donc de préciser le type de données utilisées lors des...
MERISE - Modèle organisationnel des traitements Voir Le modèle organisationnel des traitements Le modèle organisationnel des traitements s'attache à décrire les propriétés des traitements non traitées par le modèle conceptuel des données, c'est-à-dire : le temps les ressources le lieu Le modèle...
Télécharger Pierre Le Muzic - Modeleur CSV VoirLe format CSV n’est pas connu du grand publique, qui sont plutôt habitué au format XLS. Modeleur CSV est une application permettant de transférer des fichiers de données texte entre logiciels qui supportent le format CSV. Il vous est aussi...
MERISE - Modèle conceptuel de la communication VoirDéfinition de l'organisation La première étape de ce modèle est d'arriver à isoler le système en le délimitant. Il s'agit donc de définir le système et les éléments externes avec lesquels il échange des flux d'information. Ces éléments...
MERISE - Modèle physique des données VoirLe modèle physique Cette étape consiste à implémenter le modèle dans le SGBD, c'est-à-dire le traduire dans un langage de définition de données. Le langage généralement utilisé pour ce type d'opération est le SQL, et plus spécialement le langage...
MERISE - Modèle conceptuel des traitements VoirLe modèle conceptuel des traitements Le modèle conceptuel des traitements permet de traiter la dynamique du système d'information, c'est-à-dire les opérations qui sont réalisées en fonction d'événements. Ce modèle permet donc de représenter de...

1

kij_82, le 25 jan 2007 à 16:45:24

Tu t'es bien exprimé, en tout cas j'ai compris (ca veut tout dire :D)

En fait ce genre de litiges, on ne peut le résoudre qu'en se posant la question suivante :
"Qu'est ce que je veux représenter exactement via mon modèle de donnée ?"
et dans ton cas présent :
"status" et "type" sont elle des informations primordiales ?

Ce que je veux dire par là, c'est que tu as certainement défini tes besoins (cahier des charges) avant de modèliser ton MCD. Donc tu devra savoir si à l'avenir tu aura par exemple besoin de connaitre les différents status ou type (par exemple pour en dresser les listes dans des éléments de type 'select' en html/php), ou autre chose... ou simplement étendre ton MCD en ajoutant un module qui a besoin d'une entité 'type' par exemple.
~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

2

P@, le 25 jan 2007 à 16:54:51

Mon entité statut est là pour marquer si le contact est actif ou non.
Mon entité type est là pour montrer si le contact est interne, externe ou autre.
Il est sur que je ferait des requêtes pour sortir les contacts actif et interne ou seulement contacts actif ou seulement interne.
Il y aura trés peu de requête demandant de lister (en select) le contenu de statut ou type

Y a t il un des points négatif a mettre beaucoup de table ??
Car je viens de décomposer la table contacts ...
..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

3

kij_82, le 25 jan 2007 à 17:19:11
  • +1

Eléments négatifs ? Non je ne peuse pas.

Toujours est-il qu'il faut bien gérer le lien (clés étrangères) entre les tables pour pouvoir utiliser correctement la base de données plus tard et ne pas la corrompre avec des données qui ne sont rattachées à rien du tout.

Plus ta base est décomposées plus elle te permet d'etre maléable et adaptable par la suite si tu veux ajouter des modules à tes programmes et qui demandent certaines fonctionnalités en plus que celles existante.
Mais le but n'est pas non plus de fragmenter le plus possible sa base de données (donc le MCD) parce que cela implique qu'elle devient plus complexe à gérér, et point de vue code, plus complexe sera l'application qui utilise la base de données, plus complexe seront les requêtes SQL générée, et parfois même, le temps d'acces aux données en sera plus long.

C'est pour cela qu'il faut réfléchir à l'avance aux fonctionnalités de l'application qui repose sur la base de données, afin d'avoir une base la plus adaptables et la plus rapide à la fois.

Dans ton cas, si tu laisse par exemple 'status' en tant que propriété, tu aura de la redondance dans tes tables, mais vu que tu ne t'en servira que pour effectuer des requêtes de sélection pour connaitre les connectés et les non connectés, il faut que tu laisse cela en tems que propriété.
Si tu en fais une table, tu n'aura que deux valeurs dedans, qui ne te serviront pas à grands choses au final et compliquera tes requetes sur la base.
Pour ce qui est du 'type' par contre... à voir selon les fonctionnalités de ton application.
~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

4

P@, le 26 jan 2007 à 10:14:56

Ok, merci :D
autre question, suite à Toujours est-il qu'il faut bien gérer le lien (clés étrangères) entre les tables pour pouvoir utiliser correctement la base de données plus tard et ne pas la corrompre avec des données qui ne sont rattachées à rien du tout.

J'utilise une base mysql, peut on gérer "directement" sur la base les clés étrangére pour contrôle la cohérence ou faut il tout contrôler par le code que je vais écrire.
Bien entendu, le code controlera. Mais je voudrais savoir si il y a un contrôle en plus coté mysql ? ..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

5

kij_82, le 26 jan 2007 à 10:31:39
  • +1

Non, mysql ne gère pas les clés étrangères il me semble, ou peut etre dans une des dernières versions, je ne suis plus trop au courant de ca.
Le fait que mysql ne gère pas les clés étrangères signifie qu'il te faut créer des tables intermédiaire pour lier les objets.
Ex :

Tu as une table voiture :

Voiture {
    id_voiture
    immatriculation
}


et une table couleur :
Couleur {
    id_couleur
    libelle
}

Tu veux attribuer une couleur à une voiture, tu créé la table intermédiaire (qui s'appelle une association en MERISE et non une ENTITE) :
Voiture_Couleur {
   id_voiture
   id_couleur
}


Voilà la présentation de la base de donnée.
Du coup, il te faut faire les controles au niveau du code, dans tes requete SQL, par exemple tu souhaite lister toutes les voitures de couleur verte :
$request = "SELECT v.immatriculation FROM Voiture c, Couleur c, Voiture_Couleur vc WHERE vc.id_voiture = v.id_voiture AND vc.id_couleur = c.id_couleur AND c.libelle = 'vert'";


Comme tu le vois dans l'exemple, c'est à toi dans le code de lier les tables par rapport aux identifiants.
~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

8

P@, le 5 fév 2007 à 16:03:01

Allo,

je bug sur la requete d'insertion.
Comment peut on faire pour un insert avec une valeur en auto_increment qui doit servir de foregin key dans une autre table.

Voila.
J'ai une table

voiture{
id_voiture,
couleur}

et une table
usine{id_usine,id_voiture}

au moment d'inserer une voiture, il faut aussi que j'insérer dans la table usine une ligne avec l'id_voiture qui lui est auto_incrementer dans la table vioture.
Comment fait on ??
doit faire plusieurs requete
type un insert suivi d'un select (dernier element insérer) pour trouver l'id puis a nouveau un insert dans la 2nd table ?? Cette technique est certes réalisable, mais elle me semble trés peu sur

qu'en pensez vous ??
que me conseillez vous ??
dois je utiliser quelque chose comme on duplicate key ou quelque chose du genre ??
Merci d'avance pour votre aide ..:::P@ ... a tras, a PoOf ou a chou :::..
L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

9

kij_82, le 5 fév 2007 à 17:37:45
  • +2

Bonjour,

au moment d'inserer une voiture, il faut aussi que j'insérer dans la table usine une ligne avec l'id_voiture qui lui est auto_incrementer dans la table vioture.
Comment fait on ??


La tu parle donc niveau PHP.
Une solution est, en PHP donc, d'effectuer ta requete d'insertion via
mysql_query(..,..);

Puis, toute suite derriere tu récupère le nouvel identifiant ainsi créé via l'instruction :
$id = mysql_insert_id();


Puis, tu effectuant ta seconde requète pour liée avec la valeur récupérée :)

Récapitulatif :
$request = "INSERT INTO <table> (id,libelle) VALUES ('','coucou')";
@mysql_query($request,$conn);
$id = @mysql_insert_id();

$request = "INSERT INTO <table> (...) VALUES ('".$id."',...)";
@mysql_query($request2,$conn);


Bon courage pour la suite :)
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

10

P@, le 6 fév 2007 à 10:02:18

Ok, merci pour l'info

mais pourquoi mets tu @ avant mysql_query ??
..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

11

kij_82, le 6 fév 2007 à 13:39:04
  • +1

Cela permet de ne pas afficher les erreurs d'exécution mysql sur la page s'il y en as. Donc cela fait moins moche sur la page si une erreur survient.

Ca ne gène pas de ne pas les mettre.
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

12

 P@, le 6 fév 2007 à 14:43:29

Ok merci pour l'info ..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

6

P@, le 26 jan 2007 à 11:04:02

Ok, merci.
je comprend.
Donc mon mcd est presque fini
je le finalise, puis je créer mes table et je concoit mes class ??
enfait, je commence la POO en php (j'ai jamais fait de POO).
Et je voudrais savoir si, mes entité peuvent ressemebler plus ou moins a mes class dans lesquelles j'ajouterais les méthodes me permettant de faire toutes les actions concernant les contacts par exemple.
c'est ca ou bien ??

j'ai un peu du mal a concevoir les class avant de les écrire :D
..:::P@ ... a tras, a PoOf ou a chou :::..

L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

7

kij_82, le 26 jan 2007 à 11:13:25

Oui tu peux créer tes classes objet PHP à l'image de tes tables SQL, au niveau des propriétés.

Ainsi, tu pourra loader toutes tes informations de la bases dans des objets PHP, et à l'aide des méthodes des classes, mettre à jour dans la bases les données, etc...

C'est tres utile pour ce qui est de construire graphiquement un inventaire de personnage par exemple, avec les cases, les équipements placés à tel et tel endroit, etc.. (c'est un exemple).

C'est utile pour laoder des informations depuis des fichiers XML et ensuite effectuer des traitements de vérification dessus avant de mettre à jour ces infos dans la base de donnée.

~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82
Collection CommentÇaMarche.net