<?xml version="1.0" encoding="ISO-8859-15"?>

<project name="Atelier">
	<doc>Atelier - base de données pour la gestion d'une association et des données spécifiques à l'Atelier</doc>
	<info
		project		= "Atelier"
		file		= "sql/atelier.xml"
		description	= "description de la base de données pour la génération des scripts SQL et des classes Python"
		author		= "Cédric Pineau (cpineau), Sébastien Régnier (sregnier), Christophe Petit (chips/cpetit), David Courtin (dcourtin)">
		<rcs
			author	= "$Author: chips $"
			date	= "$Date: 2003/07/31 19:28:36 $"
			header	= "$Header: /home/cvs/atelier/sql/atelier.xml,v 1.20 2003/07/31 19:28:36 chips Exp $"
			id	= "$Id: atelier.xml,v 1.20 2003/07/31 19:28:36 chips Exp $"
		/>
	</info>

<!--
	Gestion d'association
	*********************
-->

<object name="Association" tag="association">
	<doc>Association - Loi 1901 de préférence</doc>
	<attribute name="assCode"	type="string"	primarykey="true"	><doc>Code de l'association, par exemple « LN »</doc></attribute>
	<attribute name="assLib"	type="string"				><doc>Nom de l'association, par exemple « Linux-Nantes »</doc></attribute>
	<attribute name="assAdr1"	type="string"				><doc>1ère ligne de l'adresse, par exemple « 17, rue Paul Bellamy »</doc></attribute>
	<attribute name="assAdr2"	type="string"				><doc>2nde ligne de l'adresse, par exemple « c/o l'Atelier »</doc></attribute>
	<attribute name="assAdr3"	type="string"				><doc>3ème ligne de l'adresse</doc></attribute>
	<attribute name="assCp"		type="string"				><doc>Code postal, par exemple « 44000 »</doc></attribute>
	<attribute name="assVille"	type="string"				><doc>Ville, par exemple « Nantes »</doc></attribute>
	<attribute name="assTel"	type="string"				><doc>Numéro de téléphone</doc></attribute>
	<attribute name="assFax"	type="string"				><doc>Numéro de télécopieur</doc></attribute>
	<attribute name="assEmail"	type="string"				><doc>Email de l'association, par exemple « contact@linux-nantes.fr.eu.org »</doc></attribute>
	<attribute name="assWeb"	type="string"				><doc>Web de l'association, par exemple « http://www.linux-nantes.fr.eu.org/ »</doc></attribute>
	<attribute name="assCNIL"	type="string"				><doc>Références de la déclaration CNIL</doc></attribute>
</object>

<object name="Civilite" tag="association">
	<doc>Civilité - chaque membre dispose d'une civilité</doc>
	<attribute name="civCode"	type="string"	primarykey="true"	><doc>Code de la civilité, par exemple « MME »</doc></attribute>
	<attribute name="civLib"	type="string"				><doc>Libellé de la civilité, par exemple « Madame »</doc></attribute>
	<attribute name="civAbr"	type="string"	 			><doc>Abréviation, par exemple « Mme »</doc></attribute>
</object>

<!--
	20020611 CHP & DCO : devient un attribut (une table de moins ;-)
<object name="Profession">
	<doc>Profession - chaque membre a une profession</doc>
	<attribute name="proCode"	type="string"	primarykey="true"	><doc>Code de profession, par exemple « ? »</doc></attribute>
	<attribute name="proLib"	type="string"				><doc>Libellé de la profession, par exemple « ? »</doc></attribute>
</object>
-->

<!--
	20020611 CHP & DCO : devient un attribut (une table de moins ;-)
<object name="Csp">
	<doc>Catégorie socio-professionnelle - chaque membre fait partie d'une CSP</doc>
	<attribute name="cspCode"	type="string"	primarykey="true"	><doc>Code de catégorie socio-professionnelle, par exemple « C »</doc></attribute>
	<attribute name="cspLib"	type="string"				><doc>Libellé de catégorie socio-professionnelle, par exemple « Cadre »</doc></attribute>
</object>
-->

<!--
	20020611 CHP & DCO : devient un attribut (une table de moins ;-)
<object name="Fonction">
	<doc>Fonction - chaque membre peut disposer d'une fonction au sein de l'association</doc>
	<attribute name="fonCode"	type="string"	primarykey="true"	><doc>Code de la fonction, par exemple « PDT »</doc></attribute>
	<attribute name="fonLib"	type="string"				><doc>Libellé de la fonction au sein de l'association, par exemple « Président(e) »</doc></attribute>
</object>
-->

<object name="MoyenContact" tag="association">
	<doc>Moyen de contact - liste des moyens de contact (téléphone maison, téléphone travail, e-mail, ...)
	(utile pour une gestion générique si on imagine une association qui aurait besoin de numéros ICQ, par exemple)</doc>
	<attribute name="moyConCode"	type="string"	primarykey="true"	><doc>Code du moyen de contact, par exemple « TLM »</doc></attribute>
	<attribute name="moyConLib"	type="string"				><doc>Libellé du moyen de contact, par exemple « Tél. maison »</doc></attribute>
</object>

<object name="Attribut" tag="association">
	<doc>Attribut - définit un attribut possible pour un membre
	(meme si la gestion est un peu plus difficile, ça permet de s'adapter à n'importe quel fonctionnement)</doc>
	<attribute name="attCode"	type="string" primarykey="true"		><doc>Code de l'attribut, par exemple « DISTRO »</doc></attribute>
	<attribute name="attLib"	type="string"				><doc>Libellé de l'attribut, par exemple « Distribution préférée »</doc></attribute>
	<attribute name="attReq"	type="boolean"				><doc>Indique si l'attribut doit obligatoirement être renseigné</doc></attribute>
</object>

<object name="AttributValeur" tag="association">
	<doc>Valeur d'attribut - liste des valeurs possibles pour un attribut</doc>
	<attribute name="attValCode"	type="string" primarykey="true"		><doc>Code de valeur d'attribut, par exemple « DISTRO-DEBIAN »</doc></attribute>
	<attribute name="attribut" 	type="Attribut"	card="1"		/>
	<attribute name="attValLib"	type="string"				><doc>Libellé de la valeur, par exemple « Debian ;-) »</doc></attribute>
</object>

<object name="Membre" tag="association">
	<doc>Membre - liste des membres (actifs ou non) d'une association</doc>
	<attribute name="memNum"	type="autoinc" primarykey="true"	><doc>Numéro de membre</doc></attribute>
<!--
	<attribute name="association"	type="Association" 	card="1"	/>
-->
	<attribute name="civilite"	type="Civilite" 	card="1"	/>
<!--
	<attribute name="profession" type="Profession" 	card="1"/>
	<attribute name="csp" type="Csp" 		card="1"/>
	<attribute name="fonction" type="Fonction" 	card="1"/>
-->
	<attribute name="memNom"	type="string"	find="true"		><doc>Nom du membre, par exemple « PETIT »</doc></attribute>
	<attribute name="memPrenom"	type="string"				><doc>Prénom du membre, par exemple « Christophe »</doc></attribute>
	<attribute name="memSurnom"	type="string"				><doc>Surnom du membre, par exemple « CHiPs »</doc></attribute>
	<attribute name="memAdr1"	type="string"				><doc>1ère partie de l'adresse, par exemple « 44 rue Emile Zola »</doc></attribute>
	<attribute name="memAdr2"	type="string"				><doc>2nde partie de l'adresse, par exemple « »</doc></attribute>
	<attribute name="memCP"		type="string"				><doc>Code postal, par exemple « 44400 »</doc></attribute>
	<attribute name="memVille"	type="string"				><doc>Ville, par exemple « Rezé »</doc></attribute>
	<attribute name="memDatNai"	type="date"				><doc>Date de naissance, par exemple « 13/12/67 »</doc></attribute>
	<attribute name="memSexe"	type="string"				><doc>Sexe (M ou F)</doc></attribute>
	<attribute name="memDatAdh1"	type="date"				><doc>Date de 1ère adhésion, par exemple « 1999-12-04 »</doc></attribute>
	<attribute name="memDatMaj"	type="date"				><doc>Date dernière MAJ</doc></attribute>
	<attribute name="memObs"	type="text"				><doc>Observations</doc></attribute>
	<attribute name="memSug"	type="text"				><doc>Suggestions</doc></attribute>
	<index name="memNomPrenom" unique="false">
		<attribute name="memNom"/>
		<attribute name="memPrenom"/>
	</index>
</object>

<object name="Contact" tag="association">
	<doc>Contact - chaque membre dispose de plusieurs contacts (téléphone, e-mail, ...)</doc>
	<attribute name="membre"	type="Membre" card="1" primarykey="true" />
	<attribute name="moyenContact"	type="MoyenContact" card="1" primarykey="true" />
	<attribute name="conVal"	type="string"				><doc>Valeur</doc></attribute>
</object>

<object name="AttributMembre" tag="association">
	<doc>Attribut d'un membre - associe une valeur d'attribut à un membre</doc>
	<attribute name="membre" type="Membre" card="1" primarykey="true"	/>
	<attribute name="attribut" type="Attribut" card="1" primarykey="true"	/>
	<attribute name="AttributValeur" type="AttributValeur" card="1"		/>
</object>

<!--
	Gestion des adhésions
	*********************
-->

<object name="Exercice" tag="adhesion">
	<doc>Exercice - année/saison</doc>
	<attribute name="exeCode"	type="string" primarykey="true"		><doc>Code de l'exercice</doc></attribute>
	<attribute name="exeLib"	type="string"				><doc>Libellé de l'exercice</doc></attribute>
	<attribute name="exeCalcul"	type="string"				><doc>Mode de calcul des cotisations</doc></attribute>
</object>

<object name="TypeAdhesion" tag="adhesion">
	<doc>Type d'adhésion - chaque adhésion a un type et est rattachée à un exercice.</doc>
	<attribute name="exercice"	type="Exercice"	primarykey="true"	></attribute>
	<attribute name="typAdhCode"	type="string"	primarykey="true"	><doc>Code du type d'adhésion, par exemple « A »</doc></attribute>
	<attribute name="typAdhLib"	type="string"				><doc>Libellé du type d'adhésion, par exemple « Actif »</doc></attribute>
</object>

<object name="ModePaiement" tag="adhesion">
	<doc>Mode de paiement - chaque règlement est effectué selon un mode de paiement</doc>
	<attribute name="modPaiCode"	type="string"	primarykey="true"	><doc>Code du mode de paiement, par exemple « CHQ »</doc></attribute>
	<attribute name="modPaiLib"	type="string"				><doc>Libellé du mode de paiement, par exemple « Chèque »</doc></attribute>
</object>

<object name="Tranche" tag="adhesion">
	<doc>Tranche - chaque tarif est découpé en une ou plusieurs tranche et correspond à un exercice</doc>
	<attribute name="exercice"	type="Exercice"	primarykey="true"	></attribute>
	<attribute name="traCode"	type="string"	primarykey="true"	><doc>Code de tranche</doc></attribute>
	<attribute name="traMntMax"	type="float"				><doc>Montant maximum de cette tranche</doc></attribute>
</object>

<object name="Tarif" tag="adhesion">
	<doc>Tarif - chaque type d'adhésion est associé à une tranche</doc>
	<attribute name="typeAdhesion"	type="TypeAdhesion" 	card="1" primarykey="true" />
	<attribute name="tranche"	type="Tranche" 		card="1" primarykey="true" />
	<attribute name="tarMontant"	type="float"				><doc>Montant de l'adhésion pour ce type et cette tranche</doc></attribute>
</object>

<object name="Adhesion" tag="adhesion">
	<doc>Adhésion - liste des adhésions d'un membre</doc>
	<attribute name="adhNum"	type="autoinc"	primarykey="true"	><doc>Numéro d'adhésion</doc></attribute>
	<attribute name="membre"	type="Membre"		card="1"	/>
	<attribute name="tarif"		type="Tarif"		card="1"	/>
	<attribute name="adhDat"	type="date"				><doc>Date d'adhésion</doc></attribute>
	<attribute name="adhDatCre"	type="date"				><doc>Date de création de l'adhésion (pour sortie de comptabilité)</doc></attribute>
	<attribute name="adhNbPart"	type="float"				><doc>Nombre de parts</doc></attribute>
	<attribute name="adhNbPers"	type="float"				><doc>Nombre de personnes à charge</doc></attribute>
	<attribute name="adhRevenu"	type="float"				><doc>Revenu annuel (au moment de l'adhésion)</doc></attribute>
	<attribute name="adhMontant"	type="float"				><doc>Montant de la cotisation</doc></attribute>
	<attribute name="adhNbVers"	type="integer"				><doc>Nombre de versements</doc></attribute>
	<attribute name="adhTitulaire"	type="string"				><doc>RIB - titulaire du compte</doc></attribute>
	<attribute name="adhDomiciliat"	type="string"				><doc>RIB - domiciliation du compte</doc></attribute>
	<attribute name="adhBanque"	type="string"				><doc>RIB - banque du compte</doc></attribute>
	<attribute name="adhGuichet"	type="string"				><doc>RIB - guichet du compte</doc></attribute>
	<attribute name="adhCompte"	type="string"				><doc>RIB - numéro du compte</doc></attribute>
	<attribute name="adhCle"	type="string"				><doc>RIB - clé du compte</doc></attribute>
</object>

<object name="Reglement" tag="adhesion">
	<doc>Règlement - chaque adhésion donne lieu à un ou plusieurs règlements</doc>
	<attribute name="regNum"	type="autoinc"	primarykey="true"	><doc>Numéro du règlement</doc></attribute>
	<attribute name="adhesion"	type="Adhesion"		card="1"	/>
	<attribute name="modePaiement"	type="ModePaiement"	card="1"	/>
	<attribute name="regDatEch"	type="date"				><doc>Date d'échéance</doc></attribute>
	<attribute name="regMont"	type="float"				><doc>Montant du règlement</doc></attribute>
	<attribute name="regRef"	type="string"				><doc>Référence du règlement</doc></attribute>
	<attribute name="regValid"	type="boolean"				><doc>Validation du règlement</doc></attribute>
	<attribute name="regPoint"	type="boolean"				><doc>Pointage du règlement</doc></attribute>
	<attribute name="regDomDpt"	type="boolean"				><doc>Chèque en département ou hors-département</doc></attribute>
</object>

<!--
	Gestion de l'Atelier
	********************
-->

<object name="Energie" tag="atelier">
	<doc>Energie - chaque véhicule est mû par une énergie</doc>
	<attribute name="eneCode"	type="string"	primarykey="true"	><doc>Code de l'énergie, par exemple « E »</doc></attribute>
	<attribute name="eneLib"	type="string"				><doc>Libellé de l'énergie, par exemple « Essence »</doc></attribute>
</object>

<object name="Marque" tag="atelier">
	<doc>Marque - chaque véhicule est d'une marque donnée</doc>
	<attribute name="marCode"	type="string"	primarykey="true"	><doc>Code de marque de véhicule, par exemple « REN »</doc></attribute>
	<attribute name="marLib"	type="string"				><doc>Libellé de la marque, par exemple « Renault »</doc></attribute>
</object>

<object name="Vehicule" tag="atelier">
	<doc>Véhicule - un adhérent possède un ou plusieurs véhicules</doc>
	<attribute name="vehPlaque"	type="string"	primarykey="true"	><doc>Plaque d'immatriculation, par exemple « 123ABQ44 », cf. carte grise</doc></attribute>
<!--
	<attribute name="vehNum"	type="autoinc"	primarykey="true"	><doc>Numéro du véhicule</doc></attribute>
-->
	<attribute name="membre"	type="Membre" card="1" primarykey="true"><doc>Propriétaire</doc></attribute>
	<attribute name="marque"	type="Marque"	card="1"		/>
	<attribute name="energie"	type="Energie"	card="1"		/>
	<attribute name="vehModele"	type="string"				><doc>Appelation du véhicule, par exemple « R25 TX »</doc></attribute>
<!--
	<attribute name="vehPlaque"	type="string"	find="true"			><doc>Plaque d'immatriculation, par exemple « 123 ABQ 44 », cf. carte grise</doc></attribute>
-->
	<attribute name="vehDatMEC"	type="date"				><doc>Date 1ère mise en circulation, par exemple « 25/03/1990 », cf. carte grise</doc></attribute>
	<attribute name="vehGenre"	type="string"	find="true"			><doc>Genre du véhicule, par exemple « Berline », cf. carte grise</doc></attribute>
	<attribute name="vehType"	type="string"				><doc>Type du véhicule, par exemple « R1123 », cf. carte grise</doc></attribute>
	<attribute name="vehPuissance"	type="integer"				><doc>Puissance du véhicule, par exemple « 9 », cf. carte grise</doc></attribute>
	<attribute name="vehActuel"	type="boolean"				><doc>Indique si le véhicule est toujours entretenu à l'Atelier</doc></attribute>
</object>

<object name="Organe" tag="atelier">
	<doc>Organe - chaque activité concerne un organe</doc>
	<attribute name="orgCode"	type="string"	primarykey="true"	><doc>Code de l'organe, par exemple « BOU »</doc></attribute>
	<attribute name="orgLib"	type="string"				><doc>Libellé de l'organe, par exemple « Bougie »</doc></attribute>
	<attribute name="orgOrd"	type="integer"				><doc>Numérotation dans une nomenclature, par exemple « 1 »</doc></attribute>
</object>

<object name="FamilleActivite" tag="atelier">
	<doc>Famille d'activité - chaque famille regroupe des types d'activité</doc>
	<attribute name="famActCode"	type="string"	primarykey="true"	><doc>Code de la famille d'activité, par exemple « ENT »</doc></attribute>
	<attribute name="famActLib"	type="string"				><doc>Libellé de la famille d'activité, par exemple « entretien »</doc></attribute>
</object>

<object name="TypeActivite" tag="atelier">
	<doc>Type d'activité - chaque type regroupe des activités</doc>
	<attribute name="typActCode"	type="string"	primarykey="true"	><doc>Code du type d'activité, par exemple « ALL »</doc></attribute>
	<attribute name="familleActivite" type="FamilleActivite"  card="1"	/>
	<attribute name="typActLib"	type="string"				><doc>Libellé du type d'activité, par exemple « Allumage »</doc></attribute>
</object>

<object name="Activite" tag="atelier">
	<doc>Activité - chaque activité fait partie d'un type et concerne un organe</doc>
	<attribute name="actCode"	type="string"	primarykey="true"	><doc>Code d'activité, par exemple « ECB »</doc></attribute>
	<attribute name="typeActivite"	type="TypeActivite" card="1"		/>
	<attribute name="organe" 	type="Organe"       card="1" 		/>
	<attribute name="actLib"	type="string"				><doc>Libellé d'activité, par exemple « Échange des bougies »</doc></attribute>
</object>

<object name="FicheFormation" tag="atelier">
	<doc>Fiche-formation - saisie pour un véhicule, regroupe un ensemble de lignes</doc>
	<attribute name="ficForCode"	type="autoinc"	primarykey="true"	><doc>Code de la fiche de formation</doc></attribute>
	<attribute name="vehicule" 	type="Vehicule"		card="1" 	/>
	<attribute name="ficForDate"	type="date"				><doc>date de création de la fiche</doc></attribute>
	<attribute name="ficForKm"	type="integer"				><doc>Kilométrage du véhicule à cette date, null autorisé</doc></attribute>
	<attribute name="ficForObs"	type="string"				><doc>Observations</doc></attribute>
</object>

<object name="LigneFormation" tag="atelier">
	<doc>Ligne de fiche-formation - ensemble des opérations effectuées lors d'une formation</doc>
	<attribute name="ligForCode"	type="autoinc"	primarykey="true"	><doc>N° de la ligne de formation, sert pour la chronologie</doc></attribute>
	<attribute name="ficheFormation" type="FicheFormation"	card="1"	/>
	<attribute name="activite" 	type="Activite"		card="1"	/>
	<attribute name="ligFicLib"	type="string"				><doc>Libellé</doc></attribute>
	<attribute name="ligFicNbH"	type="float"				><doc>Nombre d'heures passées</doc></attribute>
</object>

</project>

<!-- EOF -->

