Conception De Base De Données Des Meilleures Pratiques
Je suis assez bien familiarisés avec SQL Server, MySQL, Oracle, etc, mais de mettre ces produits de Base de données à part, est-il une ressource qui va m'aider à la conception de bases de données relationnelles bien? S'il existe quelque chose comme des modèles ou des meilleures pratiques pour la conception de base de données?
J'ai vu à quelques reprises que la base de données n'est pas souvent évolutive; les gens ont des préférences personnelles, avec le maintien de colonnes, comme isChecked colonne qui est un booléen dans la nature, mais stockés en tant que Char(1) avec des valeurs comme " Y " et " N " au lieu de 0 et de 1 qui pour moi sonne mieux. Les moyens à ne pas commettre les erreurs les plus courantes tout en faisant de conception de base de données?
Des liens vers des livres ou des articles sera très appréciée.
Merci d'avance.
- C'est ridicule que cela a été fermé comme pas constructif. Parfois je ne comprends pas pourquoi je continue à venir sur ce site.
- Chers question de la fermeture des utilisateurs: s'il vous Plaît dites-nous, où l'on doit se poser des questions comme cela.
- voici quelque chose que je trouve utile codeproject.com/Articles/359654/...
Vous devez vous connecter pour publier un commentaire.
Quelques points:
Il y a de nombreuses base de données de modèles de conception. Ils ne sont pas souvent bien formalisé, de sorte que vous peut-être simplement regarder grand nombre de conception de base de données.
Voir, par exemple, Fowler livres sur les modèles de conception. Aussi Encoche du Livre.
Il y a des blogs, comme programmeur de base de données.
Il y a un IEEE livre, Sur le Modèle de Base de données pour la Conception et la mise en Œuvre.
La Recherche Google (lien) s'est jusqu'à 24M hits.
Mon point de vue sur ce qui est quelque peu contradictoire.
Je vous conseille, de ne pas le stress de la conception de la base de données trop.
Parfois, cela peut être difficile. Avec interne d'applications MÉTIER, le point de vue dominant de l'entreprise est souvent une fois que les DONNÉES sont le principal actif, où le logiciel est un peu insignifiant.
Mon conseil serait: ne l'achetez pas.
En réalité, l'actif est la capacité de la société à INTERAGIR avec les données. Pour l'afficher, de le manipuler, et à prendre des décisions fondées sur elle.
Cela signifie que, même s'ils accordent une grande valeur sur les données, ce qu'ils sont réellement valoriser est le logiciel que vous avez écrit.
Cela me permettrait de concentrer la plupart de vos efforts sur la construction d'une expérience de l'utilisateur, plutôt que sur la "conception de la base de données idéale". La base de données est vraiment un outil qui vous permet d'offrir à l'utilisateur une expérience.
La caractéristique clé de données relationnelles, modèles de données et le chemin d'accès de l'indépendance. Vous pouvez ajouter des colonnes, changement de clés, d'introduire ou de supprimer des index, etc, tout en ayant un impact nul (ou proche de zéro) sur les applications qui l'utilisent.
Ce qui rend la structure de base de données extrêmement souple.
En essayant de concevoir la base de données "d'être flexible pour l'avenir", ou à "optimiser la performance" est essentiellement un gaspillage d'efforts.
L'évolution de la structure de la base de données ont un impact relativement faible sur votre système.
Aussi, vous avez vraiment ne pouvez pas prédire comment la base de données à l'échelle jusqu'à ce que vous exécutez dans les scénarios où vous en avez besoin à l'échelle. Votre meilleur pari est d'attendre jusqu'à ce que vous frappez les problèmes de performances. et puis les traiter spécifiquement.
Apporter des modifications à l'expérience de l'utilisateur de votre application, cependant, est généralement plus cher.
UI travail exige beaucoup de temps, et prend généralement un certain temps pour obtenir le droit.
Donc, je vous recommande:
Pour contrer Dillie-O conseils. Je suggère que vous ne pas mettre toutes vos recherches dans un tableau. En général, c'est une tentative pour forcer OO design dans une Base de données Relationnelle. Il peut être fait et qu'il correspond à la vision du monde d'un OO développeur, mais elle conduit à paralyser dessins de base de données.
Rebondir sur Google et la recherche pour "MUCK Tables", qui vous conduisent à des discussions de Massivement Code Unifié-les Tables de Clés. Alternativement, vous pouvez rechercher "une vraie table de recherche" pour les discussions. Ou même de lire Joe Celko de l'article Une Vraie Table De Recherche .
Je n'ai pas trouvé ce que je cherchais dans cette question, mais cette une a un tas de recommandations pour la conception des modèles en DB design
Ne pas stocker des valeurs calculées
Exemple, Vous avez le tableau "Carrés" à la colonne "largeur". Pas besoin de faire une colonne "zone", parce que cela peut être calculée à l'aide de largeur ^ 2
Comme avec n'importe quoi, ici, la réponse est "Ça Dépend".
Les bases de données peuvent être utilisés pour faire des choses différentes, et certaines de ces choses vont exiger des directions opposées dans la conception et le développement.
Une base de données OLTP système sera conçu de manière complètement différente de celle utilisée comme une déclaration ou une solution d'entreposage. La première est souvent normalisée, et un entrepôt est souvent dé-normalisé. Cela permet au système d'obtenir les performances souhaitées pour son comportement.
Même à l'intérieur d'un segment de cela, en fonction de si l'utilisation sera à lecture intensive, ou écrivez-lourds, les différentes décisions de conception qui pourraient être appropriées.
Le meilleur pari est d'étudier les meilleures pratiques pour un beaucoup plus petit segment de développement de base de données qui correspond au type d'application que vous êtes en train de construire.
Le meilleur livre que j'ai lu en ce qui concerne la conception de base de données est "Conception de Base de données pour le commun des Mortels" de Michael J Hernandez. Le nom sonne comme un débutant livre, mais les gens à n'importe quel niveau pourrait acquérir des connaissances à partir d'elle. Il est également indépendant de la plateforme où il traite de regarder les données lui-même et la façon de bien l'organiser - pas la technologie utilisée.
Il a également écrit un livre sur l'écriture de requêtes nommé "les Requêtes SQL Simples Mortels" que j'ai entendu n'ai pas lu moi-même encore) est assez bonne.
Conception de base de données pour le commun des Mortels
La base de données relationnelle est un outil extrêmement puissant d'abstraction; c'est un recueil de faits et d'un prédicat de calcul. Non seulement cela, SQL applique une requête de commande de séparation par avoir une clause pour l'examen des lignes et un autre pour changer les lignes.
Quand vous pensez à une base de données comme une vérité raisonnement moteur, il est logique d'avoir un set-up qui ne permettent pas de contradictions de flux de données que vous êtes à la modélisation. Par conséquent, pour utiliser une base de données relationnelle de manière efficace, vous devez obtenir votre conception de la base de droit. Contrairement à la conception orientée objet des programmes, il y a un consensus sur la manière d'une base de données relationnelle devrait être conçu. La bonne approche de conception de base de données est normaliser aussi loin qu'il est sensible. La plupart des gens normaliser à la troisième forme normale, mais vous pouvez en fait aller jusqu'à la cinquième forme normale.
Si possible, vous voulez effacer les valeurs de colonne null à partir de votre base de données. Si vous êtes d'accord avec mon point de vue de la base de données comme une vérité raisonnement moteur, puis les valeurs null sont un réel problème. Lorsque vous avez des valeurs null dans une base de données de la loi du tiers exclu ne pas maintenez-la enfoncée. Ce qui fait de "la preuve par contradiction" de toute propriété de la base de données de plus difficile qu'il serait sans les valeurs null. Les valeurs null compliquer inutilement la sémantique de la base de données.
Parfois, il sera nécessaire de briser les règles de normalisation pour des raisons de performances. Cependant, ne le faites pas avant d'avoir données sur ce qui est des requêtes, en particulier, sont lents. Souvent, vous pouvez simplement accélérer la requête avec soin en modifiant les indices plutôt que denormalising.
Enfin, un mot sur les procédures stockées plutôt que de diriger les requêtes. Dans des conditions décentes de base de données, vous pouvez définir les autorisations de sécurité sur des procédures stockées indépendamment des tables sous-jacentes. Cela, en soi, est une raison suffisante pour envisager d'utiliser des procédures stockées de manière intensive. Avec des procédures stockées, vous construire un resserrement des mesures de sécurité modèle que ce qui est possible avec direct accès SQL.
Peut-être le plus célèbre de la meilleure pratique est la base de données de la normalisation. Cet ensemble de techniques permet la conception de votre base de données de façon redondante éléments sont supprimés, et les champs sont regroupés de façon logique.
si vous n'avez pas de document énumérations dans la colonne description du schéma pour que je puisse comprendre ce que le " 5 " est dans ce:
ensuite ce faire
Utiliser un tableau pour recenser un champ. par exemple:
Le livre de Michael J. Hernandez Conception de Base de données pour le commun des Mortels est bien écrit et facile à lire. Il devrait répondre à toutes vos questions.
Hernandez est aussi co-auteur des Requêtes SQL Simples Mortels avec John L. Viescas.
Les livres sont environ 60 $un morceau. Je vais essayer de trouver le CD pour les Requêtes Simples Mortels parce que j'ai perdu la mienne. Si quelqu'un a une copie, faites le moi savoir.
je dirais que tant que la base de données est normalisé et si vous faites une VLDB alors la partition correctement, alors vous devriez être bien. les autres meilleures pratiques comprennent l'utilisation de CRUD pour les procédures stockées et de s'assurer que toutes les tables en cascade correctement. plus tout le reste est subjectif. À l'aide de "A/N" est de la vieille école programmation de base de données à partir de quand les bits n'a pas encore été mise en place. Il peut également être utilisé à des fins d'évolutivité comme "Y/N/Peut-être" mais si c'était le cas bast pratiques dirais à normaliser et apporter une table de recherche.
Un concept que nous utilisons ici et qui s'est avéré assez agréable est la "Recherche de Code" de la table. Si vous avez une base de données qui a beaucoup de références à des éléments de manière efficace des codes ou des types, ou les aimez, gardez-les tous dans un seul LookupCode table que les bases des choses hors de CodeGroup et le Code lui-même.
Nous gardons un indicateur supplémentaire pour l'état actif du code, ainsi que quelques facultatif colonnes numériques qui peuvent être utilisés si compte tenu de recherche de code qui doit être triée ou calculées dans n'importe quel genre de la mode.
En faisant cela, vous éliminez avoir des tonnes de minuscules petites tables dispersées autour de votre schéma. Aujourd'hui l'un des inconvénients est que la clé primaire de la table est le groupe de code et le code lui-même, donc il n'y a pas de clé étrangère attaché à la "maîtrise" de la table qui fait référence à un code donné, mais un peu d'application dans l'application est facilement afin de s'adapter à cette.