Bonjour,
Je cherche actuellement à réaliser une base de données dans le domaine du batiment sur des engins de levage. Je découvre Open Office Base et, confronté à plein de problèmes, je me pose des tas de questions quant à la justesse de mes choix de structuration, de programmation (en particulier les clé primaire)...
J'ai choisi de décrire mon problème de la manière suivante :
TABLE contructeur : CHAMPS id_constructeur / nom_constructeur / localisation_constructeur
Clé primaire sur "nom_constructeur "
TABLE deplacement : CHAMPS id_deplacement / nom_deplacement / type_materiel_deplacement
Clé primaire sur "type_materiel_deplacement"
TABLE materiel : CHAMPS id_materiel / constructeur_materiel / type_materiel / reference_materiel / capacite_materiel / date_materiel
Clé primaire sur "reference_materiel"
TABLE loueur : CHAMPS id_loueur / nom_loueur / materiel_loueur
Clé primaire sur "nom_loueur"
TABLE localisation : CHAMPS id_localisation / nom_localisation / loueur_localisation
Clé primaire sur " id_localisation "
Rq : Tous mes id-"..." sont de type INTEGER en autovalue ("oui") et tout mes champs sont en "Saisie Requise : NON"
1ère question : Est-ce que mes id-"..." sont bien utiles ??
2ème question : Pourquoi lorsque je crée ma TABLE (quelqu'elle soit) faut-il que je commence par déclarer ma clé primaire sur le champs id-"...", que j'enregistre et ensuite que je change ma clé primaire pour la fixé définitivement ??
Les relations entre mes TABLES sont structurées comme suit :
constructeur --> materiel (CHAMPS en commun : nom_constructeur / constructeur_materiel
deplacement --> materiel (CHAMPS en commun : type_materiel_deplacement / type_materiel
materiel --> loueur (CHAMPS en commun : reference_materiel / materiel_loueur
loueur --> localisation (CHAMPS en commun : nom_loueur / loueur_localisation
Idealement, l'objectif de cette base de données est de créer 3 modes d'entrée des données :
- TABLE materiel & deplacement
- TABLE constructeur (pour leur localisation et logo (ultérieurement))
- TABLE levageur & localisation
3ème question : Ai-je eu la bonne vision de ma base de données pour ce que je souhaite en faire ? Pourrait-on l'optimiser par la création ou suppression d'une TABLE ?
Lorsque je souhaite entrer un matériel en ne remplissant que les champs qui sont propres à sa TABLE, un message d'erreur m'est retourné :
"Integrity constraint violation - no parent SYS_FK_116 table: constructeur in statement [INSERT INTO "materiel" ("capacite_materiel","constructeur_materiel","reference_materiel","type_materiel") VALUES (?,?,?,?)]"
4ème question : ????????????? - Je crois que je n'ai rien compris à la programmation d'une base de données !!!!
5ème question : Même si je n'ai pas encore pu essayer, comment éviter la chose suivante : Je veux absolument créer un lien entre les TABLES materiel et constructeur pour pouvoir rechercher ultérieurement les "localisation" où je peux trouver un "matériel" chez un "constructeur". Si je complète ma TABLE matériel, celle-ci étant lié à la TABLE constructeur par le champ constructeur_materiel, une ligne incommplète va être créée dans la TABLE constructeur (donc création de ligne qui ne servent à rien) ? Autrement dit peut-on créer un lien à sens unique de recherche seule mais pas d'entrée des données (relations en cascade ??) ??
Merci d'avance énormément... beaucoup !
Configuration: Windows XP
Internet Explorer 6.0