Je travaille actuellement sur la reconstruction d'un site web existant qui est utilisé en interne dans ma société pour la gestion de projet, c'est un utilitaire de suivi de bogues qui intègre des opérations de comptabilité et de support client. Actuellement, le modèle de base de données est très répétitif. Un UserId est actuellement lié à un enregistrement (relation FK dans une table utilisateur contenant toutes les informations sur l'utilisateur), puis toutes les informations sur le l'utilisateur existe également dans la table.Base de données Modification ou recommencer?
J'ai été chargé d'améliorer le site Web et la fonctionnalité du modèle; cependant, je veux réduire la répétition des données dans le site Web (est-ce la normalisation ou est-ce la séparation des éléments non reliés dans des tables séparées?). Je ne suis pas sûr de la meilleure façon de procéder. Je pense à générer les scripts de création pour la base de données et à créer un nouveau projet de base de données dans VS pour ensuite modifier la base de données, puis générer des scripts pour remplir le nouveau modèle de base de données à partir de l'ancienne base de données.
Je prévois d'utiliser Entity Framework et ASP. NET MVC 2 pour construire le site Web car je pense qu'il fournit le modèle le plus flexible aller de l'avant pour la modification et la maintenance du site. La raison pour laquelle je pose cette question est parce que je suis très familier avec l'utilisation des bases de données et la modification des bases de données existantes pour les applications et les sites Web, mais j'essaie de trouver la meilleure façon d'en créer une.
Je suis curieux de savoir s'il y a du matériel sur la meilleure façon de le faire ou si je devrais utiliser un outil différent pour le faire?
Edit: Fournir plus d'informations sur le modèle
Il y a 4 grands domaines que nous avons qui sont utilisés:
- Cases (bogues, dispositifs, tâches de travail, etc.) 2. Tickets (Tech Support Events)
- Erreurs (Erreurs générées à partir de notre bibliothèque de journalisation, Fondamentalement une trace de pile avec des informations client)
- Licence (Conserve une trace de chaque coutume ers Licence permet de modifier ces licences)
Ce sont les objets qui sont mélangés et utilisés dans les 4 domaines principaux ci-dessus.
- Utilisateurs (Les personnes qui utilisent le système)
- clients (personnes qui utilisent notre logiciel)
- Stores (endroits où nos clients utilisent nos logiciels)
- Produits (Notre logiciel)
Relations
Cas: Un cas doit avoir un utilisateur, peut avoir un client, magasin, erreur, Billets et/ou produit
Billets Un billet doit avoir un utilisateur et un client, peut avoir un magasin, erreur et/ou Produit
Erreurs: Une erreur doit avoir un produit, peut-il avoir un cas, billets, magasin et/ou produit
licences: a licences doit avoir un produit et le client, peut avoir un magasin
Comme je l'ai dit site très basique, avec une base de données pas super complexe, si fait correctement.
Actuellement, la base de données n'a pas de contraintes FK, la réplication de beaucoup d'informations dans chaque table et beaucoup de tables supplémentaires qui sont dupliquées avec des noms différents.
E.g.
Chaque type de cas possède une table distincte, de sorte qu'il existe une table FeatureRequest, Bug, Tasks, Completed, etc. qui contiennent toutes les mêmes informations.
@OMG Ponies juste assez d'édition. – msarchet