[Base] table imbriquée

Discussions et questions sur tout ce qui concerne la programmation sous StarOffice NeoOffice ou OpenOffice.org tous langages et tous modules confondus.

Modérateur: Vilains modOOos

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Base] table imbriquée

Messagepar jeum » 03 Nov 2009 23:28

Bonjour à tous
J'ai un projet de système de gestion de suivi (dans le domaine du batiment) que je voudrais faire sous Base (que je connais un peu), il serait destiné à remplacer un système de tableaux devenu ingérable à cause de leur taille et aussi du fait que plusieurs personnes bossent dessus.
Pour le moment je me pose juste des questions générales, c'est pour m'orienter...

La différence avec une bdd ou tableau simple, c'est que l'une des "cases" contient des données en nombre variable qui ont chacune des attributs, c'est à dire que l'une des colonnes du tableau est une série de sous-tableaux (de même nb de colonnes mais pas de ligne).
> J'imagine que c'est courant mais je ne sais pas comment faire ça.. Faut il forcément passer par de la prog (Basic? autre?)

Edit 5/11 : j'ajoute une image, qui serait un schéma de formulaire en tableau..
table_imbriquée.jpg
. les Items sont uniques
. les contenus des Données (A0..) sont uniques
. le nombre de Données par Item est variable mais d'au moins 1

Pour fabriquer ça je ferais 2 tables : la table principale (en blanc) et la table imbriquée (jaune).
J'ajoute une nouvelle colonne de données dans la jaune (non-représentée, après l'attribut) qui enregistrent l'ID de l'item auquel la donnée est affectée (pointeur).

Mais la gestion de tout ça n'est pas si simple. Dans les formulaires il faut lire/écrire les informations de la sous-table avec du code, en utilisant le pointeur. Pour l'écriture il faut gérer le nombre de champs d'enregistrements pas Item...
Est ce que c'est la bonne solution ?

(questions suivantes supprimées)


Merci pour vos réponses même partielles
Dernière édition par jeum le 06 Nov 2009 20:56, édité 3 fois au total.
OpenOffice 3.11 sous Vista (helas)
jeum
Fraîchement OOothentifié
 
Messages: 3
Inscrit le: 03 Nov 2009 22:21

Re: [Base] questions très générales

Messagepar Oukcha » 03 Nov 2009 23:41

Bonjour et bienvenue,

D'abord un peu de lecture :
ftopic1369.html

Vous pouvez commencer par lire ce post-it ftopic820.html où vous trouverez des informations de base pour bien débuter. Vous avez également des tutoriels disponibles sur ces sites :
http://fr.openoffice.org/Documentation/ ... ation.html
http://wiki.services.openoffice.org/wik ... ASIC_Guide
http://www.formation-openoffice.fr

Vous avez enfin à votre disposition la fonction de recherche du forum qui vous permet de trouver de nombreux exemples parmi plus de 10.000 questions réponses dans les sections "Macro et API" et "Suprême de code" : forum24.html

N'hésitez pas à revenir pour des questions plus précises.

Bon développement
Seule la version officielle d'OpenOffice.org a suivie une procédure d'assurance qualité ;
Cette version, libre et gratuite, est disponible ici : http://fr.openoffice.org/about-downloads.html
Avatar de l’utilisateur
Oukcha
MOOodérateur
MOOodérateur
 
Messages: 566
Inscrit le: 06 Oct 2008 10:03

Re: [Base] questions très générales

Messagepar jeum » 04 Nov 2009 20:59

Bonjour et merci

Précision : j'ai déjà fait des macros en Basic et abondamment consulté la section documentation (y compris le Andrew).

A l'époque je n'avais pas vraiment résolu mon problème n°1 (tableaux imbriqués), à part en faisant plusieurs bases avec des macros compliquées dans les formulaires..
C'était une question assez précise en fait, sur l'architecture du système et pour savoir si c'est la bonne route !
OpenOffice 3.11 sous Vista (helas)
jeum
Fraîchement OOothentifié
 
Messages: 3
Inscrit le: 03 Nov 2009 22:21

Re: [Base] questions très générales

Messagepar Bidouille » 05 Nov 2009 10:38

Bonjour,

jeum a écrit:C'était une question assez précise en fait, sur l'architecture du système et pour savoir si c'est la bonne route !

Dans ce cas, modifier votre titre en ce sens car ce dernier n'est pour le moment aucunement explicite.

Un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement.

Nous vous rappelons que la règle n° 7 stipule qu'il ne faut mettre qu'une question par fil.
ftopic1.html

Poser plusieurs questions complique la compréhension et n'encourage pas les réponses : il vaut donc mieux découper votre problème.

Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fil que de questions.

Merci de votre collaboration.
Avatar de l’utilisateur
Bidouille
RespOOonsable forum
RespOOonsable forum
 
Messages: 4259
Inscrit le: 08 Nov 2005 18:23
Localisation: Saumur, France

Re: [Base] questions très générales

Messagepar El_Manu » 05 Nov 2009 14:31

Bonjour,

Je ne sais pas si je vais bien répondre aux questions mais de manière générale la meilleur façon d'aborder la constitution d'une base de donnée est de normaliser la structure ... Et de "dénormaliser" après coup si le besoin s'en fait sentir. Pour cela, je me reporte aux travaux de Boyce Codd qui utilise la théorie de la normalisation en se basant sur le concept des formes normalisées (FN.)

Les FN sont basées sur les relations, des types particuliers de tables, possédant certains attributs.
- Elles doivent décrire une entité.
- Elles n'ont pas de doublons (clé primaire "obligatoire".)
- Pas d'ordonnancement des colonnes.
- Pas d'ordonnancement des enregistrement.

Boyce Codd a décris cinq FN.
- 1ère FN
La première forme normale dit que toutes les valeurs des colonnes doivent être indivisibles. Cette règle nous permettra de pouvoir faire des tris ou des recherches sur l'intégralité des champs constituant les enregistrements.
1FN interdit aussi de répéter des groupes d'informations même si ceux-ci sont situés dans des colonnes différentes. Ceci évitera le gaspillage de place et bannira les tables contenant une colonne par item à rattacher à un enregistrement. (Comme je ne suis pas certain d'être très clair je vais donner un exemple de ce qu'il ne faut pas faire. Une table "Caisse à outils" contenant les champs "Outils1", "Outils2", "Outils3", ... Tant que le nombre d'outils reste en dessous du nombre de colonnes prévues, pas de souci (hormis les places laissées libres et chargeant donc la mémoire inutilement) mais quid du jour où on aura un outil de trop à renseigner ? Il faudra donc créer une table "Outils" les listant et une table "Caisse à outils" avec le numéro de la caisse et les numéros des outils à y joindre enregistrement par enregistrement. (Hum... je ne suis pas sûr d'avoir fait plus limpide :D.))

- 2ème FN
Une table est dite conforme à 2FN si elle respecte la première FN et si toutes les colonnes qui ne sont pas des clés dépendent entièrement de la ou des clé(s) primaire(s). Si nous voulions adjoindre un descriptif des outils précédemment cités, nous devrions les intégrer à la table Outils et non à la table principale. Dans ce cas, ça semble logique mais parfois il faudra créer une nouvelle table pour répondre à cette forme normale.

- 3ème FN
Une table est dite conforme à 3FN si elle respecte la seconde FN et si toutes les colonnes hormis les clés sont mutuellement indépendantes. Autrement dit, si nous voulions calculer le prix des outils en fonction de la valeur de l'un d'entre-eux et de sa quantité il ne faudrait pas créer une colonne de calcul car cette dernière serait dépendante des deux autres colonnes. L'objectif de cette FN est d'éviter de gérer la mise à jour de plusieurs champs lorsque l'on a besoin de n'en changer qu'un seul.

Les formes normales plus évoluées viennent ensuite pour palier aux manques de la 3ème FN. Elles interviennent dans des cas plus spécifiques qu'il n'est pas réellement utile de commenter. En respectant 3FN, on a pratiquement atteint le niveau de la FN de Boyce Codd et il s'avère improbable de devoir revenir sur la structure à postériori.

Ces règles ne sont que des règles de bon sens et une fois intégrées, nous pouvons nous permettre de dénormaliser certaines tables dans certains cas précis.

Pour la question 2, oui et oui. Basic sera suffisant pour mettre en forme les données en fonction des attributs ou autres.

Pour la 3, je ne connais pas encore assez Base pour me prononcer mais je pense qu'il est possible d'utiliser une BDD (de données pures) grâce à une ou plusieurs autre bases dites moteurs et sans données. Comme il sera également possible de créer un base SQL indépendante.

J'espère ne pas être trop parti hors sujet et avoir été assez clair.
Dernière édition par El_Manu le 13 Nov 2009 19:47, édité 1 fois au total.
OpenOffice 3.1.1 sous Ubuntu Karmic
OpenOffice 3.1.0 sous Windows XP
El_Manu
NOOouvel adepte
NOOouvel adepte
 
Messages: 13
Inscrit le: 08 Oct 2009 14:51

Re: [Base] table imbriquée

Messagepar jeum » 05 Nov 2009 23:16


@Bidouille : c'est vrai, je normalise...
@El_Manu : c'est vrai, je dois faire des efforts de normalisation, mais là c'est tout de même un peu violent... Je normalise en image (post de base), n'hésitez pas à faire le parallèle avec cette théorie, merci pour votre réponse.
OpenOffice 3.11 sous Vista (helas)
jeum
Fraîchement OOothentifié
 
Messages: 3
Inscrit le: 03 Nov 2009 22:21

Re: [Base] table imbriquée

Messagepar El_Manu » 06 Nov 2009 00:57

Si toutes les données de la partie jaune sont différentes, personnellement c'est la blanche que j'imbriquerais dans la jaune. La colonne que tu rajoutes pour stocker l'ID de l'item devient la relation de tables (un contenu appartenant à tel item.)

Ce n'est pas si difficile que ça de renseigner un enregistrement sur plusieurs tables imbriquées. Un outil permet de créer les relations des tables entre-elles et les assistants permettent de gérer efficacement les imbrications. Pour ce qui est du code, seules les parties SQL se compliquent un peu mais c'est gérable.

Pour ta dernière question, oui c'est la bonne méthode. Pour un petit projet ça ne changera pas grand chose mais si tu fais un truc un peu évolué, tu vas vite te rendre compte qu'autrement c'est catastrophique à mettre en place (en tout cas à faire évoluer.) Comme je le disais plus haut, les formes normales sont sensées. Elles ne sont pas faites pour compliquées la tâche du développeur bien au contraire, elles sont les bases d'un montage qui se veut lisible et évolutif pour peu qu'on adhère à sa logique.
OpenOffice 3.1.1 sous Ubuntu Karmic
OpenOffice 3.1.0 sous Windows XP
El_Manu
NOOouvel adepte
NOOouvel adepte
 
Messages: 13
Inscrit le: 08 Oct 2009 14:51


Retour vers Macros et API

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 3 invités