créer une base de données pour visual basic 6.0

warren

New Member
Bonjour,

Je commence vb et pour mon projet j'ai besoin d'une base de données, est-ce que quelqu'un peut me dire comment faire ?

Merci.
 

warren

New Member
Access.

Quelqu'un sait comment on créé les relations entre les tables ? >_<

Merci
 

Mykle

New Member
Oui, pour cela, déjà, il te faut déclarer des clés etrangères dans les tables que tu veux lier. En fait, si tu veux que la table A qui a une clé primaire appelée "Toto", soit en relation avec la table B (possédant aussi une clé primaire), il te faut créer dans B ce que l'on appelle une clé étrangère (généralement notée sous Access avec un #). En gros, dans ta table B, tu vas rajouter un champ qui se nommera "Toto#", sachant que la clé primaire et la clé étrangère doivent avoir les mêmes caractéristiques (par exemple tous deux doivent être de type entier long sans doublon).

Ensuite, tu enregistres, tu fermes ta table, puis tu te places sur la liste des tables/requetes/formulaires/..., et tu regardes en haut, sur la droite, tu as une icone de 3 tables liées, tu cliques dessus, tu vas tomber sur le gestionnaire de relations de tables. Tu choisis les tables que tu veux mettre en relation, puis une fois les tables choisies, tu maintiens ton clic sur la clé étrangère de la table B, puis tu l'amenes à la clé primaire de ta table A, ce qui devrait t'afficher une fenetre te proposant de mettre en relation ces tables. Tu coches "appliquer l'intégrité référencielle" et tu cliques sur "Créer".

Voilà, j'espère n'avoir rien oublié, au pire tu nous le fera savoir :happy: Tiens-nous au courant !
 

warren

New Member
Merci beaucoup pour ta réponse :)

Alors, une question : pour la clée étrangère dans la table B, j'écris "Toto#" avec le # ? ou je peux juste mettre le même nom que la clée primaire de la table A ?

Et quand je veux faire la relation, je maintiens et fait glisser la clée étrangère de la table B vers la clée primaire de la table A ou vers la clée étrangère ? (les 2 clées étrangères dans la table A et B sont les mêmes)

Et quand la relation s'affiche, j'ai parfois un 1 pour la table B et un 1 pour la table A sinon j'ai un signe infini (8 sur le coté)

Est-ce que c'est important ? La base de données je vais la connecter à une application sous vb

Merci pour tes réponses.
 

Mykle

New Member
warren link=topic=48962.msg508030#msg508030 date=1172235495 a dit:
Alors, une question : pour la clée étrangère dans la table B, j'écris "Toto#" avec le # ? ou je peux juste mettre le même nom que la clée primaire de la table A ?

Tu peux mettre le même nom, mais je ne suis pas sûr que cela fonctionne correctement... Faut pas oublier que c'est Access :laugh:, personnellement, dans la mesure où ce sont des tables "locales", je préconiserai le suffixe "#" devant les clés étrangères.

warren link=topic=48962.msg508030#msg508030 date=1172235495 a dit:
Et quand je veux faire la relation, je maintiens et fait glisser la clée étrangère de la table B vers la clée primaire de la table A ou vers la clée étrangère ? (les 2 clées étrangères dans la table A et B sont les mêmes)

Je réexplique: tu as deux tables, A et B. Tu veux qu'elles soient en relation, et pour cela, il te faut une clé primaire, et une clé étrangère. Donc tu dois faire un lien de la clé étrangère B vers la clé primaire A. La table A, elle, n'a pas de clé étrangère allant vers B, en fait, tout dépend de ton modèle relationnel (est-ce que tu as fait un MCD - Modèle Conceptuel de Données - sur papier pour déterminer les relations entre les tables et leurs interdépendances ?). Si ca se trouve, vu que je ne connais pas tes tables ni ton projet, c'est A qui doit aller vers B ! Cela dépend de ta base de données, de tes tables, et de la manière dont elles interagissent.

warren link=topic=48962.msg508030#msg508030 date=1172235495 a dit:
Et quand la relation s'affiche, j'ai parfois un 1 pour la table B et un 1 pour la table A sinon j'ai un signe infini (8 sur le coté)

Est-ce que c'est important ? La base de données je vais la connecter à une application sous vb

J'en reviens à ce que je t'ai dit/demandé plus haut: tout cela ne dépend que de la façon dont tu as concçu ta base de données, et des relations qui vont avec.

**Petit cours rapide de Modélisation - base de données **

Exemple: dans une école primaire, j'ai une table Eleves, et une table Professeurs. Tu sais qu'il y a un lien entre professeurs et eleves. Dans ta table Eleves, tu as un identifiant qui évite les confusions entre les noms et donc rendant unique chaque élève; tu as aussi un nom, un prénom, et autres. De même pour les professeurs, tu as un identifiant unique, et à côté un prénom, un nom, etc. La règle de gestion veut qu'un prof peut avoir plusieurs élèves, mais qu'un élève ne peut avoir qu'un prof. C'est en quelque sorte de là que viennent les "1" et "infini". On appelle cela des cardinalités. Elles permettent de faire comprendre les relations entre les différentes tables. Donc en fait, lorsque tu as un professeur qui peut avoir plusieurs elèves, tu as une clé étrangère "IdProfesseur#", qui va aller dans la table Elève. Si un élève pouvait avoir plusieurs professeurs, tu aurais aussi dans la table professeurs une clé étrangère "IdEleve#", et donc dans les deux tables, des clés étrangères (en plus des clés primaires).

En résumé:
-Si tu as une relation A et B, et qu'un B peut avoir plusieurs A, alors clé étrangère B vers table A, donc symbole "infini" du coté de B;
-Si tu as une relation A et B, et qu'un B ne peut avoir qu'un seul A, alors pas de clé étrangère, donc "1" du coté de B.

Franchement, c'est pas facile d'expliquer alors qu'à première vue tu n'as pas de bases solides :/, donc je ne sais pas si tu comprendras... Redemande s'il le faut, je répondrai dès que possible, ou bien d'autres s'en chargeront. On est pas beaucoup en Dev', donc tu n'auras sans doute pas de réponse tout de suite. Mais on fera ce que l'on pourra :wink2:
 

warren

New Member
D'accord, j'ai mis les # devant chaque clée étrangère.


Oui, j'ai fait un MCD.
J'ai une table Animal (clée primaire = NumA) et une table Race (clée primaire = NumR).
Un animal est 1 race ET une race est pour 0,n animal

Sous Access, j'ai :
Table Animal = NumA, NomA, #NumR
Table Race = NumR, NomR

Maintenant pour les relations sous access, je glisse NumR (de la table Race) vers #NumR (de la table Animal) ? mais les cardinalités sont inversées, c'est normal ?

Excuse-moi d'être aussi nul.

En tout cas merci de répondre à mes questions :)
 

Mykle

New Member
Il arrive oui, que des cardinalités soient inversées, mais personnellement cela ne m'est jamais arrivé :mellow:
D'un autre côté cela ne m'avait pas géné pour la suite...

En gros, je ne sais pas, peut-être un problème dans la procédure de mise en relations, peut-être faut-il faire l'inverse: glisser l'étrangère vers la primaire...

Je ne pense pas que cela te génera, mais c'est toujours bon de savoir pourquoi !
 

warren

New Member
D'accord, si ça ne me gêne pas pour la suite c'est bon.

Une autre question, pour remplir la base de données, je passe par le formulaire d'Access ? Ou si je le fais sous vb c'est bon ?
 

warren

New Member
En fait, avec vb y'aurait une interface par laquelle on peut enregistrer (dans la base) des animaux pour une consultation chez le vétérinaire.
C'est faisable ?
 

Mykle

New Member
Je pense, oui. Après je ne sais pas, je travaille sur Access mais avec du VBA, donc si avec du VBA/Access je peux enregistrer par le biais d'un formulaire, des informations dans une table, pourquoi pas en VB !