Aller au contenu

Spidetra

Hubmaster
  • Compteur de contenus

    326
  • Inscrit(e) le

  • Dernière visite

Messages postés par Spidetra

  1. Je suis d'accord avec MarvinLeRouge. Une association bijective entre deux entités, en théorie, ce n'est pas faux, mais c'est quand même bizarre.

    Je n'en ai jamais vu.

    Je t'ai fait un schéma avec 4 possibilité de relation entre profil et utilisateur.

    La 1° possibilité correspond à ton MPD.

    Je n'ai mis que les clés primaires dans les entités et pas tout les attributs.

    C'est quoi pour toi un profil ?

    profil_utilisateur.jpg

  2. J'utilise sarbacane.

    Très simple d'utilisation, fusion avec des formats d'imports variés.

    Tu peux facilement personaliser l'e-mailing.

    J'utilise la version gratuite.

    Inconvénient de la version gratuite :

    - Publicité pour sarbacane en bas de la newsletter

    - Pas de suivi stats

    -http://www.goto.fr/sarbacane/

  3. J'aime bien réfléchir au niveau MCD, c'est bc pplus simple pour voir rapidement les pb de modélisation. Malheureusement, il n'existe pas de bons outils OpenSource de modélisation ( MCD->MPD->Implémentation multiSGBD ).

    Sur ton diagrame je vois au moins un pb :

    La liason profil : utilisateur.

    Pour moi :

    Cardinalité côté utilisateur : 1,1 => Un utilisateur a un profil et un seul

    Cardinalité côté profil : 0,n => Un profil correspond à 0,n utilisateurs.

    => la clé id_profil doit être dans la table utilisateur. Tu as fait l'inverse.

    J'aime bien garder le même nom de champ pour la PK, et pour la FK.

    La clé FK ( dans la table utilisateur ) je l'apellerai id_profil, et non pas profil_utilisateur(FK).

    Complément : si tu change la cardinalté côté utilisateur. Un utilisateur corrspond à plusieurs profils => création d'une table de liason.

    J'ai pas pris le temps de regarder tout le diagrame, il fait beau et je vais aller faire dun roller.

    Bon week !

  4. Hello,

    Je suis en train de pondre mon MCD avec DBDesigner pour un projet PHP/MySQL et j'ai qqs questions :

    Sauf erreur de ma part, DBDesigner ne permet pas de faire des MCD, mais uniquement des MPD.

    Le MCd est un niveau d'abstraction plus haut que le MPD

    [*]Quand je lis une table à une autre, cette liaison est-elle forcément une clé étrangère ?

    Non. Cela dépend du type de cardinalité que tu as des deux côtés de ton association.

    Dans cet exemple, un jeu appartient à 0,n catégories ( pour être précis la cardinalité aurait dû être 1,n)

    Une catégorie peut avoir entre 0,n jeux.

    Dans ce cas tu auras, une table de liason dont la clé primaire est composé des deux clé primaire de la table jeu et de la table catégorie.

    Le schéma ci-dessous sera un peu plus clair.

    jeu.jpg

    [*]MySQL ne semble gérer les clés étrangères qu'avec les tables InnoDB - est-ce toujours le cas avec MySQL 4.x et quel est l'impact de choisir un type InnoDB plutôt que MyISAM ?

    - Tu vas pouvoir gérer des clés étrangères avec quasiment n'importe quel SGBD. Tu peux gérer ça dés mySQL 3 et avec des tables myISAM.

    Dans l'exemple ci-dessus, dans la table appartient tu as deux clé étrangères : IDJeu et IDCatégorie.

    Généralement tu met des index sur ces champs, afin d'améliorer les performances lorsque tu feras des liaison entre tes tables.

    - Lorsque tu parles de clé étrangère, tu fait peut-être référence à la notion d'intégrité référentielle. C'est à dire, si tu supprimme une catégorie, toutes les lignes de la table appartient doivent aussi être supprimmé.

    Cette intégrité s'obtient avec des contraintes d'intégrité référentielles, et des triggers.

    Cela n'existe effectivement en mySQL4 si tu reste en myIsam

    Voici un exemple en mySQL5.0

    /*==============================================================*/
    /* Nom de SGBD :  MySQL 5.0                                     */
    /* Date de création :  25/03/2006 10:35:06                      */
    /*==============================================================*/


    drop table if exists VILLA;

    drop table if exists VILLE;

    /*==============================================================*/
    /* Table : VILLA                                                */
    /*==============================================================*/
    create table VILLA
    (
      IDVILLA              int not null auto_increment,
      IDVILLE              int not null,
      SUPERFICE            decimal,
      PRIX                 decimal,
      primary key (IDVILLA)
    );

    /*==============================================================*/
    /* Table : VILLE                                                */
    /*==============================================================*/
    create table VILLE
    (
      IDVILLE              int not null auto_increment,
      NOM                  longtext,
      primary key (IDVILLE)
    );

    alter table VILLA add constraint FK_ASSOCIATION_1 foreign key (IDVILLE)
         references VILLE (IDVILLE) on delete restrict on update restrict;

    L'intégrité référentielle entre Villa et Ville est garantie grâce à la contrainte FK_ASSOCIATION_1.

    [*]Si je n'utilise pas de clé étrangère mais m'assure seulement d'avoir des liens logiques dans mes tables, hormis un surplus de programmation, qu'est-ce que je risque ? A l'inverse quels sont les impacts d'utiliser des clés étrangères ?

    Merci d'avance :)

    <{POST_SNAPBACK}>

    Si tu n'utilise pas les contraintes d'intégrité référentielle, ce n'est pas si grave que ça.

    L'important est de mettre les bons indexs sur les champs qui te servent de liaison.

    Si tu n'a pas de contraintes d'intégrité référentielle ce sera à toi de maintenir cette intégrité dans tes programmes afin de ne pas mettre ta base en vrac.

    Les avis sont partagés sur l'utilisation ou non des triggers et des contraintes d'intégrité référentielle. Certains ne jurent que par ça, d'autres n'en veulent pas.

    Le nom de contraintes est vraiment bien choisit :

    add constraint

    ajoute des contraintes sur ta base de donnée. Donc tu perd de la liberté.

    C'est parfois enervant en mode dévloppement de vouloir supprimé des enregistrements avec phpMyAdmin, et qu c'est impossible à cause des contraintes référentielle.

    Un mix que j'aime bien :

    - en phase develop, je n'active pas les contraintes

    - en production, j'essaye d'imposer ( c'est pas tjrs facile ) ,l'activation systématique de l'intégrité référentielle.

    Conclusion : le risque de ne pas utilisé des contraintes de clé étrangères, n'est pas si grave que ça, si tu sais être rigoureux dans tes dev et dans ta manipulation de ta base.

  5. AnalyseSI manque de fonctionnalités. DBdesigner est très bien, mais n'est plus maintenu. Poue le remplacer, MySQL développe MySQL Workbench, qui est encore en bêta.

    <{POST_SNAPBACK}>

    mySQL workbench permettra d'importer les schéma dbdesigner4.

    il est possible de démarrer avec dbdesigner et de migrer vers mySQL workbench, quand une verstion stable sortira

  6. Salut le hub,

    Je vais enfoncer des portes ouvertes de bons matins ( en espérant ne pas me faire éjecter par la fenêtre :lol: ).

    L'arrivée du web 2.0, des folksonomie, tags et autres tentatives de ranking collaboratives vont donner naissance à une nouvelle "génération" de spam.

    Le moteur de recherche sproose.com a déjà déposé la très marketing notion de KR ( Knowledge Rank ). On verra bien si ce concept fera autant de bruit que son ancêtre le PR.

    Le SpamLink et les FarmLinks servent ( en théorie ) à booster son PR, dans un futur on pourra imaginer que le SpamTag et les FarmTags servent à booster son KR ( ou n'importe quel équivalent en deux lettres finnisant par R )

    Un viel article sur le tagspam

    http://www.micropersuasion.com/2005/07/yahoo_myweb_bec.html

    Ce matin dan parle de la baisse du nbr de pages indéxées dans Google d'un site de tags.

    Est-ce qu'on a déjà des retours sur cette nouvelle forme de spam ?

    tag : bonne idée/mauvaise utilisation ?

  7. Sa me chagrine un peu de mettre trop de tables, sa fait moins "propre", je pensai aussi que sa ralentisser le site.

    <{POST_SNAPBACK}>

    J'abandonne !

    C toi qui voit :rolleyes:

    ça veut dire quoi : "ça fait moins propre"

    Ce qui ralentit les SGBRD : ce sont les mauvaises conception et les mauvaises requêtes, l'absence ou la mauvaise utilisation des index, etc.

  8. $sql2='Select num_cmd,produits,qte From Comand_detail Where num_cmd="'.$num.'"';
    $req=mysql_query($sql2) or die ('Erreur SQL!'.$sql2.mysql_error());
    while($list=mysql_fetch_array($req))
    {
    $prod=$list['produits'];
    $qte=$list['qte'];
    $query='Select id,nom,prix From produits Where id="'.$prod.'"';
    $reponse=mysql_query($query) or die ('Erreur SQL!'.$query.mysql_error());
    while($produit=mysql_fetch_array($reponse))[/SQL]
    {
     $nom_prod=$produit['nom'];
     $prix=$produit['prix'];
     $prix_ligne=$qte*$prix;
    }
    }

    1. essaye de simplifier ta requete avec un truc du style ( un peu au pif, je connais pas la structure de tes tables

    SELECT num_cmd, produits, qte, id, nom, prix
    FROM produits INNER JOIN Command_detail ON produits.id = Command_detail.produits
    WHERE num_cmd = $num

    2. Dans ta boucle while, il me semble que tu écrase à chaque tout tes valeurs de noms, prix et qté. Donc tu ne peux pas les afficher

  9. Salut blman,

    Si tes boss sont inquiets et qu'il faut les rassurer tu peux aussi leur proposer des solutions alternatives :

    - cryptage du mail en PGP : ça risque d'être pire, si tes interlocuteurs en face ne savent pas décrypter le mail.

    - Protection du RIB dans un pdf protégé par mot de passe, transmission du mot de passe soit dans un mail séparé soit par tél.

    Je suis assez d'accord avec les autres membres. Je ne pense pas que cela pose un pb de transmettre les RIB en clair.

    C'est pas toi qu'il faut convaincre, ce sont tes boss, c'est pas toujours le plus simple ;)

  10. J'ai donné cette solution car il rechignait à créer une table suplémentaire. Il est bien évident que la solution de la table suplémentaire est la plus évolutive.  ;)

    <{POST_SNAPBACK}>

    Tu sais, je suis un peu psycho-rigide :D

    J'aime bien répéter, 1.000 fois le même message, quitte a passer pour un emme.....deur :whistling:

    Avoir une bonne structure dés le départ, c'est important pour des pb de performances et de facilité de programmation derrière.

    Ensuite on tombe sur des pb qui sont bc plus dur à régler en SQL du style :

    http://www.webmaster-hub.com/index.php?showtopic=22620

  11. Pourquoi pas

    | ...ID... | ...Titre... | Description | Catégorie 1 | Categorie 2 |

    ?

    <{POST_SNAPBACK}>

    Cette structure n'est pas adaptée à une DB performante et évolutive.

    Il en met combien de champ CategorieN : 1, 2, 3, 10, plus ?

    Disons qu'il en met 5.

    Qu'est-ce qu'il fait le jour où un jeu à 6 catégories ?

×
×
  • Créer...