Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2601 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

   ... pour modéliser mon système.

 

 

 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

... pour modéliser mon système.

n°2092969
Profil sup​primé
Posté le 02-08-2011 à 22:19:21  answer
 

Bonjour,
 
J'essaye de faire un truc, je n'y arrive pas.
Avec Java en modélisation orientée objet ?
Avec C++ ?
C ?
Je me demande si un SGBD ne serait pas mieux adapter.
 
En effet, j'ai N "noms" d'objets et N  "actions" sur chacun des N objets appartenant N "utilisateurs".
Ce que je ne parviens pas à modéliser concrètement avec le langage Ada en modélisation orientée objet
Mon besoin est de pouvoir tester si une action appartient à une classe pour un utilisateur.
 Si oui
     On effectue l'action sur l'objet pour l'utilisateur.
  fin si;
Ada me fournit divers SGBD
Faisable... ?
S'il vous plaît !
Merci pour vos réponses.


Message édité par Profil supprimé le 02-08-2011 à 22:31:14
mood
Publicité
Posté le 02-08-2011 à 22:19:21  profilanswer
 

n°2092970
Profil sup​primé
Posté le 02-08-2011 à 22:36:25  answer
 

Up !  :o

n°2092981
mrbebert
Posté le 02-08-2011 à 23:39:17  profilanswer
 

Oui, ça ne doit pas être très compliqué d'enregistrer tout ça dans une base SQL.
Ensuite, tu récupère l'action qui correspond à tes critères.


---------------
Doucement le matin, pas trop vite le soir.
n°2092983
Profil sup​primé
Posté le 02-08-2011 à 23:46:22  answer
 

mrbebert a écrit :

Oui, ça ne doit pas être très compliqué d'enregistrer tout ça dans une base SQL.
Ensuite, tu récupère l'action qui correspond à tes critères.


 
Ah, merci bien Mr. bebert.  :jap:  
 
Donc en gros, si mes souvenir son bon, c'est du genre !
 
 
1 create db
3 ou 4 create tablle
Des insert ou un truc du genre.
Et une requête .| ?
Merci.
 
 

n°2092990
mrbebert
Posté le 03-08-2011 à 00:18:38  profilanswer
 

En théorie, il y a d'abord une phase de réflexion mais en pratique, oui, c'est ça :jap:  
Le SGBD fournit le stockage et le moteur d'accès mais il faut voir aussi comment tu accèdes aux données dans ton langage.


---------------
Doucement le matin, pas trop vite le soir.
n°2092999
Profil sup​primé
Posté le 03-08-2011 à 00:57:42  answer
 

En théorie, je sais pas trop sur quoi réfléchir.
Merci pour tes réponses.

n°2093016
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2011 à 09:06:33  profilanswer
 

+1 pour une modélisation dans une BD. En plus, si t'as un grand nb d'objets/actions/utilisateurs, côtés perfs, un SGBD sera bien mieux ;)
Donc nous disons :
1 table objet
1 table action
1 table utilisateurs
1 table relationnelle entre objet et action (au moins les 2 clés étrangères des 2 tables concernées)
1 table relationnelle entre entre objet et utilisateur (idem, au moins les 2 clés étrangères des tables concernées).


Message édité par rufo le 03-08-2011 à 09:07:34

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2093027
Profil sup​primé
Posté le 03-08-2011 à 09:32:40  answer
 

Et bonjour rufo... Merci pour ta contribution...
Si tu as le temps, tu peux me souvenir le rôle des clef étrangère, comment on les détermine.
Pour le moment j'ai même pas les def des table principales.
Faut que je révise les SGBD.

n°2093048
Profil sup​primé
Posté le 03-08-2011 à 10:29:24  answer
 

table "utilisateur"

  • User_id

accessoirement, j'aimerais ajouter :

  • logged

tant qu'à y être  

  • User_name
  • Password


table "object"

  • Object_id
  • Owner_id (de même type que user_id)

accessoirement, j'aimerais ajouter :

  • Address_object (ce doit être un pointeur sur un objet Ada, je ne sais pas si c'est possible et comment faire autrement).
  • Class_name (une chaine de caractère);

peut-être même un

  • Object_name


table
"action"

  • Action_id

accessoirement, j'aimerais ajouter :

  • Address_action (ce doit être un pointeur sur une une procédure Ada, je ne sais pas si c'est possible et comment faire autremen).
  • Class_name (une chaîne de caractères);
  • Action_name (une chaîne de caractères)


table "Object_from_user"

  • User_id
  • Object_id


table "action_from_object"

  • Object_id
  • Action_id

Message cité 1 fois
Message édité par Profil supprimé le 03-08-2011 à 11:07:35
n°2093049
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2011 à 10:38:19  profilanswer
 

une clé étrangère sert à établir une relation entre la table dans laquelle elle est définie "étrangère" et pointe sur une clé primaire d'une table. Dans el cas d'une relation 1-n ou 0-n, la clé étrangère se trouve directement dans la table à laquelle elle lie la table dont elle est issue
ex : une entreprise contient plusieurs employés.
J'ai une table entreprise avec comme clé primaire IDentreprise
J'ai une table employé avec comme clé primaire IDemployé et comme clé étrangère, IDentreprise pour me permettre d'établir la relation qu'un employé travaille dans une entreprise.
 
Ici, t'es dans le cas d'une relation n-n, il faut donc une table relationnelle qui va lier les 2 tables impliquées dans la relation (objet et action, par ex). La table objet a comme clé primaire IDobjet, la table action, la clé primaire IDaction.
Il faut une table relationnelle ObjetAction qui peut avoir une clé primaire (un entier auto incrémenté par ex, mais cette clé primaire n'est pas obligatoire) et au moins, chaque clé primaire des 2 tables. La clé primaire de cette table relationnelle peut éventuellement être la concaténation des 2 clés étrangères. Par ailleurs, si y'a d'autres infos qui caractérisent une relation objet-action, c'est dans cette table qu'il faut rajouter les champs correspondant à ces caractéristiques supplémentaires. ;)


Message édité par rufo le 03-08-2011 à 10:38:33

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 03-08-2011 à 10:38:19  profilanswer
 

n°2093050
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2011 à 10:41:10  profilanswer
 


 
C'est ça l'idée, par contre le coup de stocker des pointeurs ada en base, je le sens pas :/ Habituellement, on sérialise carrément l'objet quan don veut le stocker en BD.
 
Sinon, pour le coup de tracer si un user est loggé ou pas, on le fait pas trop dans la table users, mais plutôt dans une table de type "log" (on y trouve, par ex, la date et heure de connexion, pourquoi pas l'IP...).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2093052
Profil sup​primé
Posté le 03-08-2011 à 10:45:33  answer
 

rufo a écrit :


 
Habituellement, on sérialise carrément l'objet quan don veut le stocker en BD.


Merci rufo...  
Qu'entends tu par sérialiser les objets ?
Merci.

n°2093054
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2011 à 11:06:03  profilanswer
 


 
C'est transformer sous la forme d'une chaîne de caractères les attributs d'un objet, en général sous un formalisme qui ressemble beaucoup au JSON.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2093060
Profil sup​primé
Posté le 03-08-2011 à 11:14:33  answer
 


Mais heu ! Je vais jamais savoir faire ça.[:tceupa]  
edit : en fait j'ai déjà trouver une bibliothèque Ada. [:powa]
 
Merci rufo.  :jap:

n°2093192
Profil sup​primé
Posté le 03-08-2011 à 18:21:28  answer
 

Bonjour ou re-
 
Que faut-il faire avant de pouvoir se connecter à une base de donnée.
Peut-être la créer ? Mais comment ?
J'ai installé MySql-server-5.0.0, j'ai entré un mot de passe, j'ai oublié de noter le nom pour l'administration  :cry:  
Et après dans mon code j'ai fais ceci :

Code :
  1. with Gnu.Db.MySQL;                       use Gnu.Db.MySQL;
  2. procedure Main is
  3.  
  4.   MySQL_Object : Gnu.Db.MySQL.Object;
  5. begin
  6.   Initialize (This => MySQL_Object);
  7.   User       (MySQL_Object, "admin" );
  8.   Password   (MySQL_Object, "" );
  9.   Connect    (this => MySQL_Object,
  10.               Server => "localhost" );


Mais j'ai une erreur MySql.Connect_Failure.
 
S'il vous plaît ?
Merci pour vos lumières.

n°2093198
Profil sup​primé
Posté le 03-08-2011 à 18:49:55  answer
 

J'ai trouvé, pour le moment je suis l'utilisateur root.
Je renseigne le mot de passe correspondant et c'est bon.
 

Code :
  1. Initialize(This => MySQL_Object);
  2.   User(MySQL_Object, "root" );
  3.   Password(MySQL_Object, "********" );
  4.   Connect   (this => MySQL_Object,
  5.              Server => "localhost" );

n°2093236
rufo
Pas me confondre avec Lycos!
Posté le 04-08-2011 à 09:32:19  profilanswer
 

Y'a juste besoin de se connecter au serveur Mysql. Après, avec des requêtes SQL tu peux créer une BD (CREATE DATABASE), des tables (CREATE TABLE), modifier la structure d'une table (ALTER TABLE), insérer, modifier, supprimer des enregistrements dans ne table (INSERT INTO, UPDATE, DELETE)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2093278
Profil sup​primé
Posté le 04-08-2011 à 13:26:28  answer
 

Bonjour à touts, bonjour rufo, merci pour ça.
 
Je reviens sur l'analyse de mes besoins (la structure de la db),  
 
Dans ma base, Je veux :

  • Ajouter des utilisateurs ;
  • Ajouter des objets ;
  • Ajouter des actions ;


En suite, je veux savoir si un utilisateur à le droit d'effectuer une action sur une objet.
Par défaut tous les utilisateurs ont le droit d'effectuer quelques actions.
Suite à une de ces quelque actions, les utilisateurs peuvent effectuer les actions restantes.
 
Comment procéder (structurellement parlant) ?
 
Pour le moment j'ai  :
table "Users_Table"

  • User_Id INTEGER
  • User_Name VARCHAR(32)
  • User_passwd VARCHAR(32) ... pour stocker un Md5


table "Objects_Table"

  • Object_Id INTEGER
  • Object_Name VARCHAR(32)


table "Actions_Table"

  • Action_Id INTEGER
  • Action_Name VARCHAR(32)


Ma requête sera constitué de "User_Name", "Action_Name", "Object_Name" qui doit me retourner un booléen.  
 
 
Pour synthétiser,
Je prend :
la liste de verbes d'un langage naturel pour en faire des actions ;
la liste des noms   "       "           "        "     "     "     "  objets ;
J'ajoute en suite un à un les utilisateurs qui ont par défaut le droit d'effectuer les actions "créer" "construire" "générer" "produire", etc, sur quelque objet.
Suite à une des actions précédente, l'utilisateur à le droit d'effectuer toute les autres actions sur l'objet généré.
 
Vous voyer ce que j'essaye de faire ?
Merci pour vos réponses.


Message édité par Profil supprimé le 04-08-2011 à 13:46:10
n°2093287
rufo
Pas me confondre avec Lycos!
Posté le 04-08-2011 à 14:05:10  profilanswer
 

1) Pas la peine de mettre "_Table" dans le nom de tes tables, ça alourdit et on se doute bien que ce sont des tables.
 
2) préfère le sha-1 au md5 (algo cassé depuis qq années).
 
Comme dit dans mon post http://forum.hardware.fr/hfr/Progr [...] m#t2093050
 
Il te manque 2 tables de relations : une table pour stocker les relations entre objet et action et une autre entre objet et utilisateur.
 
La table obj_action est initialisée avec TOUTES les actions qu'on peut faire sur un objet donné.
 
par contre, par rapport à ce que tu dis, c'est pas une relation entre objet et utilisateur qu'il te faut, mais entre la table relationnelle obj_action et utilisateur.
 
Cette table obj_action_user est initialisée avec les seules actions que chaque utilisateur peut faire pour certains objets.
 
Du coup on se retrouve avec toujours 5 tables :
Objet : ObjID, ObjNom ...
Action : ActID, ActNom ...
Utilisateur : UtilID, UtilNom, UtilMdP ...
ObjetAction : ObjActID, ObjID, ActID
ObjetActionUtilisateur : ObjActUtilID, ObjActID, UtilID, ActionFaite
 
ActionFaite est un booléen pour dire si l'action a été effectuée ou pas.
Je pense pas qu'on puisse faire qu'une table pour la relation objet/action/utilisateur car en faisant ça, on pourrait plus lister les actions pouvant être faites sur les objets, indépendamment des droits des utilisateurs.
 
Ensuite, une fois que tes utilisateurs ont fait certaines actions, celles-ci peuvent déclencher l'ajout de nouvelles entrées dans la table ObjetActionUtilisateur permettant ainsi à un utilisateur de faire de nouvelles actions. Les actions ajoutées seront celles qui se trouve dans
la table ObjetAction et qui n'ont pas de couple [ObjActID, UtilID] dans ObjetActionUtilisateur... ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2093326
Profil sup​primé
Posté le 04-08-2011 à 15:33:25  answer
 

Rufo, merci, merci bien pour ton aide. :jap:  
Je crée trois tables de données et les 2 tables de relations avec MySQL....

Code :
  1. -- Table utilisateurs, clef primaire "User_Id" ;
  2. CREATE TABLE Users
  3.   (Used_Id INTEGER NOT NULL,
  4.    User_Name VARCHAR(32) NOT NULL,
  5.    User_Passwd VARCHAR(32) NOT NULL,
  6.    PRIMARY KEY User_Id)
  7.  
  8. -- Table objects, clef primaire "Object_Id" ;
  9. CREATE TABLE Objects
  10.   (Object_Id INTEGER NOT NULL,
  11.    Object_Name VARCHAR(32) NOT NULL,
  12.    PRIMARY KEY Object_Id)
  13.  
  14. -- Table actions, clef primaire "Action_Id ;
  15. CREATE TABLE Actions
  16.    (Action_Id INTEGER NOT NULL,
  17.     Action_Name VARCHAR(32) NOT NULL,
  18.     PRIMARY KEY Action_Id)
  19.  
  20. -- Table de relation objet-action, avec deux clef étrangères : Object_Id et Action_Id
  21. CREATE TABLE ObjectAction
  22.   (ObjectAction_Id INTEGER AUTO_INCREMENT,
  23.    Object_Id INTEGER,
  24.    Action_Id INTEGER,
  25.    FOREIGN KEY (Object_Id) REFERENCES Objects(Object_Id),
  26.    FOREIGN KEY (Action_Id) REFERENCES Actions(Action_Id),
  27.    PRIMARY KEY ObjectAction_Id)
  28.  
  29. -- Table de relation objetaction-user; avec deux clef étrangères : ObejctAction_Id et User_Id
  30. CREATE TABLE ObjectActionUser
  31.   (ObjectActionUser_Id INTEGER AUTO_INCREMENT,
  32.    ObjectAction_Id INTEGER,
  33.    User_Id INTEGER,
  34.    Is_Done BOOLEAN,
  35.    FOREIGN KEY (ObjectAction_Id) REFERENCES ObjectAction(ObjectAction_Id),
  36.    FOREIGN KEY (User_Id) REFERENCES Users(User_Id),
  37.    PRIMARY KEY ObjectActionUser_Id)


 

Citation :

Ensuite, une fois que tes utilisateurs ont fait certaines actions, celles-ci peuvent déclencher l'ajout de nouvelles entrées dans la table ObjetActionUtilisateur permettant ainsi à un utilisateur de faire de nouvelles actions. Les actions ajoutées seront celles qui se trouve dans la table ObjetAction et qui n'ont pas de couple [ObjActID, UtilID] dans ObjetActionUtilisateur... ;)


 
Ce qui veux dire, qu'a chaque ajout d'un utilisateur, j'ajoute les actions primaires.
Suite à une action primaire j'ajoute les actions secondaires.
 
Ca se renseigne comment une table de relation ?
 
15 ans que j'ai pas fait de bd. :/
 
il faut que je maintienne deux groupe d'actions :

  • Un groupe d'actions primaires pouvant être effectuées par défaut avec lesquelles j'initialise la base de données pour chaque nouvel utilisateur.
  • Un groupe d'actions secondaires qui seront ajoutées automatiquement après une des actions primaire.


Je poste, je suis pomé là.

n°2093341
rufo
Pas me confondre avec Lycos!
Posté le 04-08-2011 à 16:21:21  profilanswer
 

Pour pas avoir de pb, mets comme valeur par défaut FALSE pour Is_Done dans la déf de ta table ;)
 
Ben dans l'ordre, tu remplis d'abord les 3 tables Action, user et Object.
Ensuite ObjectAction, dans laquelle tu vas mettre les couples Object_Id/Action_Id (donc l'ensemble des action possibles pour chaque objet).
Enfin, ObjectActionUser dans laquelle tu vas mettre les couples ObjectAction_Id/user_Id pour définir les actions que chaque utilisateur peut faire au départ sur certains objets, ObjectAction_Id étant trouvé en recherchant dans la table ObjectAction le couple action/objet que l'utilisateur pourra faire au début.
 
Vu qu'apparemment la notion d'action primaire (celle pouvant être faite au début par n'importe quel utilisateur) et secondaire (action faite ensuite) semble ne pas dépendre d'un algorithme/logique métier (cf ton topic sur les réseaux de neurones et d'apprentissage) va falloir ajouter un champ dans une table, voire une table.
 
Si la notion de primaire/secondaire ne dépend que du type d'action, alors, faut rajouter le champ "Type" (valeur 1 pour "primaire" et 2 pour "secondaire" ) dans la table Action.
Si cette notion dépend de l'objet et donc de l'action, faut rajouter le champ "Type" dans la table ActionObject.
Si cette notion dépend de l'utilisateur et de l'action ou carrément de l'utilisateur/action/objet, alors faut créer une table relationnelle de paramétrage avec une clé primaire auto-incrémentée, les clés primaires des tables concernées (donc 2 ou 3 clés) et le champ "Type".
 
Après, pour remplir ta table ObjectActionUser, faudra aller piocher dans la nouvelle table (ou dans le champ Type mis sur une des tables existantes) et filtrer d'abord sur la valeur 1 puis 2 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2094492
Profil sup​primé
Posté le 10-08-2011 à 16:16:35  answer
 

Bonjour rufo, bonjour à tous,
Désolé pour ma réponse tardive, un défaut d'Internet.
Merci encore rufo pour ces réponse rapide et précise.
En fait, je suis encore à me demander comment fonction mon système à ce jour.
 
Mais je profite du fil pour te demander rufo si par hasard tu saurais, et pouvais me dire pour quoi mes requêtes MySQL ci-dessus ne fonctionne pas même avec un point- virgule à la fin ?
Je doit dire que je retrouve le net à l'instant je n'ai pas cherché encore.
Je fait ces requêtes à partir d'un client Ada MySQL... et en ligne de command en exécutant mysql, ces requête ne passe pas.

n°2094501
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 16:35:22  profilanswer
 

Le type INTEGER n'existe pas. Suivant la taille, tu as TINYINT (1 octet), SMALLINT (2 octets), INT (4 octets), BIGINT...
Ca donne pour ta première table

Code :
  1. CREATE TABLE `Toto`.`Users` (
  2. `User_Id` INT UNSIGNED NOT NULL ,
  3. `User_Name` VARCHAR( 32 ) NOT NULL ,
  4. `User_Passwd` VARCHAR( 32 ) NOT NULL ,
  5. PRIMARY KEY ( `User_Id` )
  6. ) ENGINE = MYISAM


 
Au passage, tu souhaites utiliser les foreign key, ça veut dire qu'il faut utiliser le moteur InnoDB (cf instruction ENGINE). Ici, je l'ai fait en Myisam. Dans une BD, tu peux mélanger les moteurs suivant les tables..
 
Je te conseille de t'installer wampserver ou un outil graphique pour construire tes tables : ça te génère le code sql ;) Dans wampserver, l'outil s'appelle phpmyadmin...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2094518
Profil sup​primé
Posté le 10-08-2011 à 16:59:28  answer
 

Merci rufo.  :jap:  
 

rufo a écrit :


 
Au passage, tu souhaites utiliser les foreign key, ça veut dire qu'il faut utiliser le moteur InnoDB (cf instruction ENGINE). Ici, je l'ai fait en Myisam. Dans une BD, tu peux mélanger les moteurs suivant les tables..
 
Je te conseille de t'installer wampserver ou un outil graphique pour construire tes tables : ça te génère le code sql ;) Dans wampserver, l'outil s'appelle phpmyadmin...


 
Non, je veux pas utiliser tout ça, j'ai mis Foreign key parce que c'était l'exemple donné.
Je veux simplement lier mes tables avec mes clefs étrangères.

n°2094520
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 17:01:30  profilanswer
 

ben sans les foreign key, les contraintes entre les tables devront être gérées par l'appli. C'est pas un pb en soit, faut juste en avoir conscience ;)
 
Dans ce cas, le moteur MyIsam suffit (attention, c'est pas forcément le moteur qui est mis par défaut, donc bien le préciser dans la création de tes tables avec la clause ENGINE=MYISAM).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2094705
Profil sup​primé
Posté le 11-08-2011 à 15:58:15  answer
 

Bonjour, merci rufo.
J'aurais deux questions concernant MySQL... Je suis aller à la fnac pour trouver un bouquin sur MySQL, j'ai pas trouvé, même en commande, ça peu se trouver en librairie ?
L'autre concerne l'hébergement de ma base, je ne sais pas ou elle est mais j'aurais voulu la mettre dans mon répertoire personnel qui se trouve sur le partition /home, est-ce possible ?
 
 
Edit : j'ai trouvé pour la localisation de la base. Merci.


Message édité par Profil supprimé le 11-08-2011 à 16:29:46
n°2094713
rufo
Pas me confondre avec Lycos!
Posté le 11-08-2011 à 16:35:37  profilanswer
 

Répertoire /data de mysql.
 
Pour le bouquin, pas utile, y'a l'aide en ligne ;) T'as tout sur toutes les commandes, avec des exemples. Et sur le web, pleins de tutos.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2094732
Profil sup​primé
Posté le 11-08-2011 à 17:07:18  answer
 

j'ai fait ça pour la localisation de la base, j'ai déplacer /var/lib/mysql dans /home et modifier le path de datadir dans /etc/mysql.cnf
En suivant ce tuto : http://www.kitsgraphiques.net/chan [...] -tu44.html
 
Ok pour l'aide, je vais voir. Merci encore rufo.  :jap:  
En fait je suis encore dans l'intérrogation sur la structure de ma base.
Ah oui, une autre question : Peut-on faire des requetes multi-base ?
Une autre : peut-on comme sur Access mettre le contenu d'une requête dans une table ?
Merci.

n°2094746
rufo
Pas me confondre avec Lycos!
Posté le 11-08-2011 à 17:44:46  profilanswer
 

Oui, on peut faire des requêtes multi-bases, suffit que les bases soient sur le même serveur et faire précéder dans les requêtes les noms des tables du nom de la base.
Ex : SELECT... FROM BD1.table1 t1, BD2.table2 t2 WHERE...
 
Oui, on peut mettre le résultat d'une requête dans une table via INSERT INTO [TEMPORARY] TableName SELECT ..... FROM.... WHERE....
Sans la clause TEMPORARY, le résultat sera accessible à tous les users qui se connectent à la BD. Avec la clause, seul le user qui a créé la table y aura accès. Pour des questions de perfs, tu peux aussi mettre le résultat dans une table (temporaire ou pas) créée avec le moteur MEMORY (ce sont des tables qui ne sont stockées qu'en mémoire, pas sur disque). ;)
 
ps : Access, c'est pas un SGBD et c'est de la daube :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2094750
Profil sup​primé
Posté le 11-08-2011 à 17:53:11  answer
 

[:dpenche], la conclusion !
 
Merci rufo, c'est super sympa, Je reviendrais ! [:dpenche]

n°2094855
rufo
Pas me confondre avec Lycos!
Posté le 12-08-2011 à 09:03:47  profilanswer
 


 
pas de quoi mais ma conclusion est du vécu (mon projet de fin d'études d'école d'ingé en ASP et Access, je te dis pas le nb de fois que la BD plantait et la limitation à 1 ou 2 connexions max en // :/ )


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2096193
Profil sup​primé
Posté le 18-08-2011 à 23:09:05  answer
 

Bonsoir, bonsoir rufo, perso, bonsoir à tous.
 
Sans transition.
 
Mon système se transforme en jeu et si vous avez du temps je suis preneur de conseils.
 
"Je voudrais concevoir un jeu banal a priori, on partage une carte en réseau pour y placer des armes et une unité stratégique et on calcule qui gagne.
La règle exactement est simple a priori ; Tant que l'unité stratégique n'est pas détruite, on peu ajouter des armes et tirer dans la limite d'une charge maximum, si non la partie est perdu simplement. Le point stratégique est un point invisible des joueurs alors que les armes le sont. Le point stratégique est placé au début de parti et on ne peut pas le déplacer, les armes sont déplaçable."
Les armes restantes des unités stratégiques détruites sont ajouter à votre arsenal. On recherche les unités stratégique à la main ou à l'aide d'outils de recherches qu'il faudra gérer.
 
pour réaliser e jeu, je doit au moins faire une BD pour la gestion du jeu.
 
Techniqement ça ressemnble à ça pour le moment :
table user ... -- comme d'hab.avec
                   
table Wopr -- C'est l'unité stratégique.
                 (,
                  x_source : double,
                  y_source : double,
                  Charge : double;
                  -- j'hésite à inclure des information de ciblage X,Y_target qui seront produite lors des recherches de cibles.
                  User_Id int not null
                 
table Missils --  
                   (missil_id int,
                    x_source  double,
                    y_Source double,
                    charge : real,
                    x_target : double,
                    y_target : double,
                    Charged : boolean
                    Woper_Id int)
 
 
un wopr appartient à un utilisateur, et plusieurs missiles appartiennent à un wopr.
 
Vous voyez quelque chose pour m'aider.

n°2097673
Profil sup​primé
Posté le 26-08-2011 à 14:06:13  answer
 

Bonjour, bonjour à tous, directe, je demande pas qu'on face mon boulot, mais ! J'aurais voulu quelque exemple de requête plus ou moins adapté à mes besoins, si vous voulez bien. Pour reprendre, Mais j'ai pas envi, mais faut le faire... C'est pour minuterie.
Comme vous le savez peut-être, j'ai changé d'idée initiale, mais je vais pas refaire un topic pour si peu, bref, je fais un jeu vite fait en attente de reprise du projet initial, bref...
La règles en gros.
  Tant que l'unité stratégique n'est pas détruite, on peu ajouter des armes et tirer dans la limite d'une charge maximum, si non la partie est perdu simplement.  
  Le point stratégique est un point invisible des joueurs alors que les armes le sont.
  Le point stratégique est placé au début de parti et on ne peut pas le déplacer, les armes sont déplaçable.
  Les armes restantes des unités stratégiques détruites sont ajouter à votre arsenal. On recherche les unités stratégique à la main ou à l'aide d'outils de recherches qu'il faudra gérer.
 
Voici mes tables....données par shwo cretae table de Mysql.

Code :
  1. CREATE TABLE `Users` (
  2.  `User_Id` int(11) NOT NULL AUTO_INCREMENT,
  3.  `Username` char(128) DEFAULT NULL,
  4.  `Date` date DEFAULT NULL,
  5.  `Password` char(32) DEFAULT NULL,
  6.  PRIMARY KEY  (`User_Id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


Code :
  1. CREATE TABLE `Missils` (
  2.  `Missil_Id` smallint(6) NOT NULL DEFAULT '0',
  3.  `Wopr_Id` int(11) NOT NULL,
  4.  `Lunched` tinyint(1) DEFAULT NULL,
  5.  `X_Coordonate` double NOT NULL,
  6.  `Y_Coordonate` double NOT NULL,
  7.  `X_Target` double NOT NULL,
  8.  `Y_Target` double NOT NULL,
  9.  `Charge` double DEFAULT NULL,
  10.  PRIMARY KEY  (`Missil_Id`,`Wopr_Id`),
  11.  KEY `Wopr_Id` (`Wopr_Id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


 

Code :
  1. CREATE TABLE `Woprs` (
  2.  `Wopr_Id` int(11) NOT NULL AUTO_INCREMENT,
  3.  `User_Id` int(11) NOT NULL,
  4.  `X_Coordonate` double NOT NULL,
  5.  `Y_Coordonate` double NOT NULL,
  6.  `Total_Charge` double DEFAULT NULL,
  7.  `Charged` tinyint(1) DEFAULT '0',
  8.  PRIMARY KEY  (`Wopr_Id`),
  9.  KEY `User_Id` (`User_Id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


 
Dessus, je dois faire, les requêtes suivantes : (entre parenthèses, les paramètre en entrée et sortie)
Certaine de ces requêtes constitue des ensemble de requête sql, en faite, ce sont les entrées de mon ordonanceur.


      accept Player_Exist(Logname : in String;
                         Exist : out Boolean);
      accept Add_Player(Logname : in String;
                      Success : out boolean);
      accept Wopr_Exist(Logname : in String;
                      Exist : out boolean);
      accept Get_Wopr(Logname : in String;
                      Wopr : out Wopr_Type);
      accept Add_Wopr(Logname : in String;
                      Wopr : in Wopr_Type;
                      Success : out boolean);
      accept Get_Missils(Logname : in String;
                       Missils : out Missils_Vectors.Vector);
      accept Add_Missil(Logname : in String;
                       Missil : in Missil_Type;
                       Success : out Boolean);
      accept Launch_One(Logname : in String;
                       Missil_Id : in Positive;
                       Loosers : out Players_Vectors.Vector;
                       Missils : out Vector);
      accept Launch_All(Logname : in String;
                       Loosers : out Players_Vectors.Vector;
                       Missils : out Missils_Vectors.Vector);


 
Alors, déjà, est-ce que j'ai bon avec mes tables ?
Et vraiement, merci si vous pouvez me donner des exemple pour le test d'existence, un ajout et Launch, je peut compléter les info  si besoin.
Merci.
 
edit : au moins un coup de main sur la conception ...  [:chepakoi]


Message édité par Profil supprimé le 26-08-2011 à 14:16:44
n°2097809
Profil sup​primé
Posté le 26-08-2011 à 19:06:18  answer
 

Pour le Get_Wopr par exemple, je voudrais faire une recherche sur le Username dans la table Users pour récupérer le User_Id et faire une recherche avec le User_Id dans la table Wopr en une seul requête, y a moyen ?

n°2097817
Profil sup​primé
Posté le 26-08-2011 à 20:20:14  answer
 

Bonsoir, alors, a priori j'ai bon mais j'ai pas si bon parce que ma requête plante depuis Ada.
Alors, je sais qu'on est pas dans la cat Ada, mais c'est du SQL... [:menfin]
 

Code :
  1. SELECT * FROM Woprs WHERE User_Id = (SELECT User_Id FROM Users WHERE Username = "Mon nom" );

n°2097850
rufo
Pas me confondre avec Lycos!
Posté le 26-08-2011 à 23:29:54  profilanswer
 

Faudrait apprendre le SQL :/ Ce que tu cherches à faire s'appelle une jointure.
 
SELECT *  FROM Woprs w INNER JOIN Users u ON (w.User_Id = u.User_Id) WHERE u.Username = 'Mon nom';
 
Edit : mettre *, c'est pas bien dans le SELECT :/

Message cité 1 fois
Message édité par rufo le 26-08-2011 à 23:30:19

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2097858
Profil sup​primé
Posté le 26-08-2011 à 23:55:59  answer
 

rufo a écrit :

Faudrait apprendre le SQL


C'est ce que je fait. Merci rufo.
 
J'ai pas compris ce que font w et u...
 
Mais ma requête, elle est pas bonne, c'est pas pareil ?

n°2098020
rufo
Pas me confondre avec Lycos!
Posté le 28-08-2011 à 22:36:43  profilanswer
 

u et w sont des alias pour les tables, ça permet de nommer les champs plus rapidement (moins de lettres à taper ;) ) Ta requête est moins lisible que la mienne et niveaux perfs, pourrait être plus lente car tu passes par une sous-requête. L'optimiseur de mysql pourrait ne pas le voir et laisser exécuter cette sous-requête inutile...
 
Par contre, niveau résultat, elle devrait sortir au moins une ligne...


Message édité par rufo le 28-08-2011 à 22:36:53

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2098022
Profil sup​primé
Posté le 28-08-2011 à 22:45:45  answer
 

Merci rufo pour ça...
 
Finalement je me suis fait un gestionnaire de données maison. Trop compliquer à porter un SGBD, MysSQL encore, mais postgresql, bref, j'ai abandonée ma dépendance à un SGBD, peut-être reviendrais-je sur ma décision...

n°2098081
rufo
Pas me confondre avec Lycos!
Posté le 29-08-2011 à 11:53:55  profilanswer
 

Pas une bonne décision à mon avis :/ Un sgbd est bien plus performant pour gérer des données, surtout que les dévs qui ont codé mysql sont vraiment très bons ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

   ... pour modéliser mon système.

 

Sujets relatifs
Problème mis en place d'un système de paiement CB[PHP] Problème système parrainage
Détecter le système d'exploitation sur lequel tourne le programme.quand faut il ferme une socket systeme
nommer le processus systemeSystème de cache pour script de liens changeant le contenu d'une div.
cherche systeme de forum tres light pour heberg free.fr en phpnombre de cases mémoire dans un système 32 bits
Système open source de gestion de matérielsModéliser un système multithreads
Plus de sujets relatifs à : ... pour modéliser mon système.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR