====== Installer la base de données ====== --- //[[f.raynaud@arles-linux.org|François Raynaud]] 2020/06/08 16:29// [[https://openmairie.readthedocs.io/projects/omframework/fr/4.9/installation/index.html#creer-la-base-de-donnees|source]] ===== installation des tables du framework ===== Il faut modifier le nom du schéma dans data/psql/install.sql et nous allons appeler notre schéma f1 dans la variable schema /var/www/html/formation/f1/data/pgsql# nano install.sql -- Nom du shéma \set schema 'f1' Nous allons créer la base formation /var/www/html/formation/f1/data/pgsql# createdb formation -U postgres Nous allons installer les tables du framework dans la base formation en utilisant install /var/www/html/formation/f1/data/pgsql# psql -U postgres formation < install.sql Les tables du schéma f1 sont les suivantes : Liste des relations Schéma | Nom | Type | Propriétaire --------+-----------------+-------+-------------- f1 | om_collectivite | table | postgres f1 | om_dashboard | table | postgres f1 | om_droit | table | postgres f1 | om_etat | table | postgres f1 | om_lettretype | table | postgres f1 | om_logo | table | postgres f1 | om_parametre | table | postgres f1 | om_permission | table | postgres f1 | om_profil | table | postgres f1 | om_requete | table | postgres f1 | om_sig_extent | table | postgres f1 | om_sig_flux | table | postgres f1 | om_sig_map | table | postgres f1 | om_sig_map_comp | table | postgres f1 | om_sig_map_flux | table | postgres f1 | om_sousetat | table | postgres f1 | om_utilisateur | table | postgres f1 | om_widget | table | postgres 18 tables ===== Installation du lien entre l'application et la base de données ===== Nous allons créer le répertoire "dyn" et le lien entre l'application et la base de données Le nom du fichier doit être : **database.inc.php** // gestion association $conn[1] = array( "Gestion association", // Titre "pgsql", // Type de base "pgsql", // Type de base "postgres", // Login "postgres", // Mot de passe "tcp", // Protocole de connexion "localhost", // Nom d'hote.sql "5432", // Port du serveur "", // Socket "formation", // Nom de la base "AAAA-MM-JJ", // Format de la date "f1", // Nom du schéma "", // Préfixe null, // Paramétrage pour l'annuaire LDAP null, // Paramétrage pour le serveur de mail null, // Paramétrage pour le stockage des fichiers ); Donner les droits de lecture à www-data (utilisateur apache) chown -R www-data:www-data /var/www/html/formation/f1 ===== Connexion du framework ===== {{ ::connexion_framework.png?400|}} {{ :connexion_framework2.png?400|}} Il est possible de se connecter en tapant dans l'url du navigateur http://localhost/formation/f1 ===== Créer les tables de l'application ===== {{ ::f1_classe.png?400|}} Dans notre cas nous souhaitons gérer pour les adhérents de notre association les inscriptions et les présences aux conférences par la création dans le fichier init_metier.sql (ou directement dans la base) : * des tables de l'application : adherent, conference, adherent_conference * des séquences de ces tables * des contraintes des clés primaires de ces tables * des contraintes de clés secondaires de la table adhérent_conférences * des droits dans om_droit pour donner l'accès à l'administrateur /var/www/html/formation/f1/data/pgsql# nano init_metier.sql SET search_path = f1, pg_catalog; CREATE TABLE adherent( adherent integer NOT NULL, nom varchar(60) NOT NULL, prenom varchar(60), adresse varchar(60), cp varchar(5), niveau integer ); CREATE TABLE conference ( conference integer NOT NULL, libelle varchar(60) NOT NULL, date date not null ); CREATE TABLE adherent_conference( adherent_conference integer NOT NULL, adherent integer not null, conference integer not null, absent boolean ); CREATE SEQUENCE adherent_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; CREATE SEQUENCE conference_adherent_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; CREATE SEQUENCE conference_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- pk ALTER TABLE ONLY adherent ADD CONSTRAINT adherent_pkey PRIMARY KEY (adherent); ALTER TABLE ONLY conference ADD CONSTRAINT conference_pkey PRIMARY KEY (conference); ALTER TABLE ONLY adherent_conference ADD CONSTRAINT adherent_conference_pkey PRIMARY KEY (adherent_conference); -- fk ALTER TABLE ONLY adherent_conference ADD CONSTRAINT adherent_conference_conference_fkey FOREIGN KEY (conference) REFERENCES conference(conference); ALTER TABLE ONLY adherent_conference ADD CONSTRAINT adherent_conference_adherent_fkey FOREIGN KEY (adherent) REFERENCES adherent(adherent); -- om_droit INSERT INTO om_droit (om_droit, libelle, om_profil) VALUES (nextval('om_droit_seq'), 'adherent', 1); INSERT INTO om_droit (om_droit, libelle, om_profil) VALUES (nextval('om_droit_seq'), 'conference', 1); INSERT INTO om_droit (om_droit, libelle, om_profil) VALUES (nextval('om_droit_seq'), 'adherent_conference', 1); Si vous avez créer un fichier init_metier.sql et que vous n'avez pas exécuté ces requêtes dans postgres, nous allons exécuter init_metier.sql dans la base formation : /var/www/html/formation/f1/data/pgsql# psql -U postgres formation < init_metier.sql Vous pouvez insérer init_metier.sql dans install.sql pour avoir une installation globale \i init_metier.sql