Bonsoir à tous,
Les problèmes que vous évoquez, et les questions d'historisation en particulier, relèvent tous de la modélisation conceptuelle de votre système d'information.
Si vous arrivez à traduire vos exigences sous forme de modèle conceptuel de données (MCD), le schéma relationnel de la BD se déduira automatiquement.
Par exemple pour le prix, vous pourrez décider qu'il doit être présent dans le classe d'entités (future table de la BD) PRODUIT, mais aussi dans l'association entre PRODUIT et FACTURE pour en conserver l'historique : vous aurez alors deux rubriques différentes : "Prix courant" et "Prix facturé".
Voici un petit exemple de MCD avec le MLD et le code SQL correspondants :
Pièce jointe 588797
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 CREATE TABLE Client( Id_Client COUNTER, Nom VARCHAR(50), Adresse VARCHAR(80), CP CHAR(5), Ville VARCHAR(50), PRIMARY KEY(Id_Client) ); CREATE TABLE Facture( NumFac CHAR(8), DateF DATE, Id_Client INT NOT NULL, PRIMARY KEY(NumFac), FOREIGN KEY(Id_Client) REFERENCES Client(Id_Client) ); CREATE TABLE Produit( Réf CHAR(5), Libellé VARCHAR(50), Prix_courant CURRENCY, PRIMARY KEY(Réf) ); CREATE TABLE Contenir( NumFac CHAR(8), Réf CHAR(5), Qté SMALLINT, Prix_facturé CURRENCY, PRIMARY KEY(NumFac, Réf), FOREIGN KEY(NumFac) REFERENCES Facture(NumFac), FOREIGN KEY(Réf) REFERENCES Produit(Réf) );
Bonne continuation !