2010-07-12 8 views
0

J'ai une question générale de conception de base de données: Quand est-il préférable de créer une nouvelle base de données au lieu d'ajouter de nouvelles tables à un existant? La question est liée à la conception/maintenabilité et aussi aux problèmes de performance. Contexte: nous reflétons les tables principales de nos clients en important les données chaque nuit dans notre DB appelé RM2. Certains nouveaux projets (ASP.Net-) ont aussi besoin d'accéder à ces données, maintenant je me demande si je devrais créer de nouvelles bases de données pour chaque projet ou fusionner leurs tables avec le RM2 (taille actuelle: 37991.94 Mo).Lorsque créer une nouvelle base de données

Répondre

3

Je ne vais pas nécessairement répondre à votre question, mais je vais vous donner un tas d'autres questions à considérer ainsi:

  1. Quand dois-je ajouter des fichiers à un groupe de fichiers dans ma base de données? - Lorsque les fichiers deviennent trop volumineux, les «trop gros» peuvent être une question d'opinion.
  2. Quand devrais-je ajouter un nouveau groupe de fichiers à ma base de données? - Lorsque vous souhaitez optimiser l'utilisation du disque pour différentes opérations de base de données.
  3. Quand devrais-je ajouter un nouveau schéma à ma base de données? - Lorsque vous avez un ensemble d'objets qui sont logiquement liés et qui peuvent nécessiter des autorisations par défaut différentes pour les utilisateurs.
  4. Quand devrais-je ajouter une nouvelle base de données à mon application? - Lorsque vous n'avez besoin d'aucune intégrité référentielle entre les tables des deux bases de données. Lorsque vous ne souhaitez pas autoriser les autorisations chaînées entre deux jeux d'objets. Lorsque vous voulez sauvegarder et restaurer indépendamment. Lorsque vous souhaitez différents modèles de récupération SQL Server pour deux ensembles de données.

Je suppose que cela a répondu à votre question. ;-)

+0

Jusqu'à présent, j'étais "seulement" un développeur dans mes emplois précédents. Nous avons donc créé une base de données pour chaque projet et ils n'ont jamais été liés les uns aux autres. Mais maintenant je dois maintenir une énorme base de données existante. Parce que chaque nouveau projet est en quelque sorte lié à notre RM2-Data, j'ai déjà ajouté de nouvelles tables, mais je me demandais si c'était la bonne façon (logiquement/maintenabilité/performace). Je dois envisager de créer les points 1, 2 et 3. Je n'étais pas conscient du fait que l'intégrité référentielle db-croisée n'est pas supportée. Merci d'avoir ajouté ces questions. –

0

Vous pouvez obtenir une autre base de données pour les projets si un projet ne souhaite utiliser qu'une base de données autonome. Mais si vous voulez obtenir le centre de données de cela, vous devez créer une autre base de données partagée + auto base de données pour chaque projet.

1

Ce n'est pas une question de conception de base de données. C'est une question d'organisation. Les aspects organisationnels de cette question sont beaucoup plus importants que les questions techniques.

La réponse est: tout ce qui rend la vie plus facile pour vous en tant que développeurs

Par exemple, vous dites:

Quelques nouvelles (ASP.Net-) Les projets doivent avoir accès à ces données aussi.

À quel point ces projets sont-ils intégrés à votre projet? Partagez-vous réellement des données (ou écrivez-vous aux mêmes tables)? Par exemple, si vous faites une rupture de l'une de vos tables, avez-vous besoin d'apporter des modifications au code dans les autres projets en même temps? (Parfois très difficile à synchroniser entre deux projets).

Si vous ne partagez pas réellement de données (à l'exception des données client, que je suppose être effectivement en lecture seule), utilisez des bases de données distinctes (schémas OR). Cela rend les changements beaucoup plus faciles à gérer.

Une autre astuce consiste à avoir dans chaque base de données un ensemble de vues sur les données client, qui se trouve ailleurs, dans un autre schéma.Donc, ayez une base de données par projet, avec des vues dans chaque base de données sur les données du client, qui vit dans une seule base de données séparée.

Les performances ne devraient pas vraiment être un problème, sauf si les bases de données vivent sur des machines séparées.

Questions connexes