Bonjour à tous,

Après avoir parcouru quelques posts sur le sujet, il semblerait que le débat fait rage entre le choix de stocker ou non des fichiers (données binaires) au sein même de la base de données.

Pour ma part, il s'agit d'une application Web de facturation, développée en C# .NET 2.0 qui communique avec une base de données SQL Server 2000 SP4. Et il est désormais nécessaire de réaliser une nouvelle fonctionnalité permettant d'associer des pièces jointes aux factures saisies (images, PDF, DOC, XLS, etc...)

J'avais donc pensé à créer une table avec 4 colonnes :
- Identifiant unique de la facture (VARCHAR(35))
- Nom du fichier (VARCHAR(50))
- Date de mise à disposition (DATETIME)
- Données du fichier (IMAGE)
La clé primaire serait composée des 2 premières colonnes.
Petite question annexe : Dans ce cas, est-il préférable de créer un nouveau groupe de fichiers et/ou un nouveau fichier MDF ?
J'ai lu qu'il était conseillé de ne pas utiliser le type de données IMAGE qui est amené à disparaître mais, sauf erreur, je n'ai pas d'autre choix car le type de données VARBINARY(MAX) n'a été introduit qu'à partir de SQL SERVER 2005...

Voici pour moi les avantages du stockage des fichiers dans la base de données :
- Uniformité de la solution (relation forte entre une facture et ses pièces jointes : impossible de supprimer une facture et pas le fichier associé)
- La sauvegarde de la base contient également les fichiers
- Maintenance meilleure et moins compliquée (pas d'espace disque dédié à gérer)
Et les inconvénients :
- Taille de la base
- Performances ?

Qu'en pensez-vous ? Quelle feriez vous à ma place ?