Quels sont les principes et les bienfaits de la partie “modèle”?
La partie "modèle" est un "modèle" pour la conception de base de données relationnelle. Au moins une partie de cela exige de trouver des points communs entre de nombreuses entités, telles que des Clients, des Employés, des Partenaires, etc., et en tenant compte que dans certains plus "abstraite" tables de base de données.
J'aimerais savoir vos pensées sur les points suivants:
- Quels sont les principes de base et de motiver les forces derrière la partie modèle?
- Que faut-il prescrire vous faire pour votre modèle de données? (Mon peu au-dessus est assez haut niveau et peut-être incorrecte dans certains égards. J'ai été sur un projet qui l'a utilisé, mais je travaillais avec une autre équipe s'est concentrée sur d'autres questions).
- Quelle a été votre expérience vous a amené à se sentir à ce sujet? Avez-vous l'utiliser, et si oui, souhaitez-vous le faire de nouveau? Quels ont été les avantages et les inconvénients?
- Le parti du modèle de limiter votre choix de l'Orm? Par exemple, avez-vous d'éliminer certaines Orm parce qu'ils ne permettaient pas assez d'une "couche d'abstraction" entre vos objets de domaine et de votre modèle de données physique?
Je suis sûr que chaque réponse ne sera pas aborder chacune de ces questions ... mais rien toucher sur l'un ou plusieurs d'entre eux va m'aider à prendre certaines décisions que je suis confronté à.
Grâce.
Vous devez vous connecter pour publier un commentaire.
Dans la mesure où je l'ai utilisé, c'est surtout sur la réutilisation du code et de la flexibilité. Nous avons utilisé dans le client /utilisateur /admin modèle, et il a certainement prouve sa valeur lorsque vous avez besoin de déplacer un utilisateur d'un groupe à l'autre. L'étendre à avoir des organisations et des entreprises représentées avec les utilisateurs, sous eux, et c'est vraiment de fournir une forme d'abstraction qui n'est pas particulièrement inhérents à SQL.
Que vous êtes assez correct dans votre bits ci-dessus, si elle a besoin de plus de détails. Vous pouvez vous imaginer une situation où une entité dans la base de données (que l'on appellera une Partie) confie à une autre Partie, qui peut à son tour sous-traiter le travail out. Une partie pourrait être un Employé, un Entrepreneur ou d'une Entreprise, toutes les sous-classes de la Partie. De ma compréhension, vous avez une Partie de la table et puis de plus en plus des tables spécifiques pour chaque sous-classe, qui pourrait ensuite être sous-classé (Partie -> Personne -> Entrepreneur).
Il a ses avantages si vous avez besoin de souplesse pour ajouter de nouveaux types de votre système et de créer des relations entre les types que vous ne vous attendiez pas au début et architecte dans la (les utilisateurs de passer à un nouveau niveau, les entreprises de location d'autres sociétés, etc). Il vous donne également le bénéfice de l'exécution d'une requête unique et de récupération des données pour plusieurs types de parties (Entreprises,Salariés,sous-Traitants). Sur le côté, vous êtes en train d'ajouter des couches supplémentaires de l'abstraction pour obtenir les données dont vous avez réellement besoin et à la hausse de la charge (ou au moins le nombre de jointures) sur la base de données lorsque vous êtes à l'interrogation d'un type spécifique. Si votre abstraction va trop loin, vous aurez probablement besoin d'exécuter plusieurs requêtes pour récupérer les données de la complexité commencerait à devenir préjudiciable à la lisibilité et de la charge de base de données.
C'est un domaine que je suis certes un peu faible, mais j'ai trouvé que l'utilisation de points de vue et les miroirs de l'abstraction dans l'application de la couche de n'avoir pas fait ce trop un problème. Le vrai problème pour moi a toujours été un "où est le morceau de données X de vie" lorsque je veux lire directement la source de données (il n'est pas toujours intuitif pour les nouveaux développeurs sur le système).
L'idée derrière le parti modèles (aka entité schéma est de définir une base de données qui met à profit certains de l'évolutivité des avantages du schéma des bases de données libres. La partie modèle ne tient que par la définition des entités en tant que partie du type de dossiers, par opposition à un tableau pour chaque entité. Le résultat est un très de base de données normalisée, avec très peu de tables et de très peu de connaissances au sujet de la signification sémantique des données qu'il stocke. Tout ce que la connaissance est poussé à l'accès aux données dans le code. Base de données des mises à niveau à l'aide de la partie du modèle sont minime, voire nul, puisque le schéma ne change jamais. Il s'agit essentiellement d'une simple paire clé-valeur du modèle de données de la structure avec un peu de fantaisie noms et quelques attributs supplémentaires.
Pour:
Contre:
Si vous envisagez une partie ou de l'entité de schéma dans une base de données relationnelle, vous devriez probablement prendre un coup d'oeil à d'autres solutions comme une banque de données NoSql, BigTable ou KV Magasins. Il ya quelques grands produits là-bas avec des déploiements massifs et de traction comme MongoDB, DynamoDB, et Cassandra à l'origine de ce mouvement.
Lorsque je faisais partie d'une équipe de mise en œuvre de ces idées dans le début des années 1980, il n'a pas de limite à notre choix de l'ORM est parce que ceux qui n'avaient pas encore été inventés.
Je serais tomber en arrière sur ces idées tout le temps, que ce projet a été l'un des la plupart des preuves de concept que j'ai jamais vu de "révolutionnaire" idée (que c'était certainement le cas à l'époque).
Il vous oblige à rien. Et il ne vous empêche pas de quoi que ce soit (de toute erreur, je veux dire). L'une de définir votre propre modèle d'information est vous.
Toutes les parties ont beaucoup de propriétés en commun. Le fait qu'ils ont un nom et un tel (nous avons appelé ces "signaletics"). Le fait qu'ils ont principal des emplacements appelés les "adresses". Le fait qu'ils sont tous impliqués, dans un certain sens, dans l'entreprise, les contrats.
Je ne suis pas sûr, mais la partie modèle de sons comme un cas particulier de la généralisation-spécialisation modèle. Une recherche sur "la généralisation spécialisation modélisation relationnelle" trouve quelques articles intéressants.
C'est un vaste sujet, je vous recommande de lire Le Modèle de Données de Ressources tome 3 - des Modèles Universels pour la Modélisation des Données par Len Silverston et Paul Agnew.
Je viens de recevoir mon exemplaire et il est assez bon, vous offre une halte pour admirer de nombreuses approches pour la modélisation de données, y compris les hybrides contextuelle modèles de rôle et ainsi de suite. Il a détaillé les avantages et les Inconvénients de chaque approche.
Il y a un pletheora de moyens pour modéliser les relations avec les tiers et les rôles de tous avec leurs avantages et leurs inconvénients. La question qui a été accepté comme une réponse couvre une seule instance d'un parti "modèle".
Par exemple, dans de nombreuses approches, des notions comme "Employé", "chef de Projet", etc. sont rôles qu'un parti peut jouer dans un certain contexte. Je vais essayer de vous donner une meilleure ventilation une fois que je rentre à la maison.
comme un simple parler de ma compréhension: Partie de la modélisation donne la flexibilité et besoin de plus d'efforts (comme le T-sql rejoindre et ...) à mettre en œuvre.
J'ai aussi veux point que, "à l'aide de Partie modélisation (sérialisation/généralisation) vous donne la possibilité d'avoir FK-Rapport à d'autres tables". par exemple: penser à différents types d'utilisateurs (administrateur, utilisateur, ...) qui généralisée dans
User
table, et vous pouvez avoirUserID
dans votreAuthorization
table.