Essence et structure des bases de données. Bases de données relationnelles

Le modèle de données est un ensemble de structures de données et d'opérations de traitement. En utilisant le modèle de données, vous pouvez clairement présenter la structure des objets et la connexion entre elles. Pour la terminologie des modèles de données, les concepts "élément de données" et "règles de liaison" sont caractéristiques. L'élément de données décrit tout ensemble de données et les règles de liaison définissent les algorithmes d'interconnexion des éléments de données. À ce jour, une variété de différents modèles données, mais en pratique, trois ordinateurs sont utilisés. Allouer des modèles de données hiérarchiques, de réseau et relationnel. En conséquence, ils parlent de SGBD hiérarchique, de réseau et relationnel.

Oh modèle de données hiérarchique. Les données hiérarchiquement organisées se trouvent très souvent dans la vie quotidienne. Par exemple, la structure de l'institution éducative la plus élevée est une structure hiérarchique à plusieurs niveaux. La base de données hiérarchique (arborescence) est composée d'un ensemble commandé d'éléments. Dans ce modèle, les éléments initiaux génèrent d'autres éléments et ces éléments génèrent à son tour les éléments suivants. Chaque élément généré n'a qu'un seul élément de génération.

Structures organisationnelles, listes de matériaux, table des matières dans des livres, plans de projet et de nombreux autres ensembles de données peuvent être présentés sous forme hiérarchique. Maintient automatiquement l'intégrité des références entre les ancêtres et les descendants. La règle principale: aucun descendant ne peut exister sans votre parent.

Le principal inconvénient de ce modèle est la nécessité d'utiliser la hiérarchie basée sur la base de données lors de la conception. La nécessité d'une réorganisation constante des données (et souvent de l'impossibilité de cette réorganisation) a conduit à la création d'un modèle plus général - réseau.

Sur le modèle de données de réseau. L'approche réseau de l'organisation des données est une expansion d'une approche hiérarchique. Ce modèle diffère du hierahyx que chaque élément généré peut avoir plus d'un élément de génération. ■.

Étant donné que la base de données réseau peut être directement représentée par tous les types de connexions inhérentes à cette information, selon ces données, il est possible de déplacer, d'explorer et de les demander toutes sortes de façons, c'est-à-dire que le modèle de réseau n'est pas connecté à seulement une hiérarchie. Toutefois, afin de faire une demande de base de données réseau, il est nécessaire de convenir de manière approfondie dans sa structure (disposez d'un schéma de cette base de données) et de développer un mécanisme de navigation de base de données, ce qui constitue un inconvénient important de ce modèle de DB.

O Modèle de données relationnelle. L'idée principale du modèle de données relationnelle consiste à soumettre tout ensemble de données sous la forme d'une table en deux dimensions. Dans le cas le plus simple, le modèle relationnel décrit la seule table à deux dimensions, mais le plus souvent, ce modèle décrit la structure et la relation entre plusieurs tables différentes.

Modèle de données relationnelle

Ainsi, l'objectif du système d'information est le traitement donnéesà propos de objetsmonde réel, en tenant compte cravatesentre les objets. Dans la théorie des données de base de données est souvent appelée attributs, A.objets - entités.Objet, attributs et communication - concepts fondamentaux I.S.

Un objet(ou essence) est quelque chose existant et distinctc'est-à-dire que l'objet peut être appelé "quelque chose" pour lequel il existe un nom et un moyen de distinguer un objet similaire d'un autre. Par exemple, chaque école est un objet. Les objets sont également une personne, une classe à l'école, une alliage, un composé chimique, etc. Les objets peuvent non seulement être des objets matériels, mais également plus de concepts abstraits reflétant le monde réel. Par exemple, des événements, des régions, des œuvres d'art; livres (pas comme produits d'impression, mais comme fonctionne), des productions théâtrales, des films; Normes juridiques, théories philosophiques, etc.

Attribut(ou alors cette)- Ceci est un indicateur qui caractérise un certain objet et accepte une certaine valeur numérique, texte ou différente pour une instance particulière d'un objet. Système d'Information fonctionne avec des ensembles d'objets conçus par rapport à ce domaine en utilisant spécifique valeurs d'attribut(données) de certains objets. Par exemple, nous prenons comme un ensemble de cours à l'école. Le nombre d'élèves de la classe est une valeur donnée qui prend une valeur numérique (dans une classe 28, de l'autre - 32). Le nom de la classe est un acceptation donnée valeur de texte (en un - 10a, dans l'autre - 9b, etc.).

Le développement de bases de données relationnelles a commencé à la fin des années 60, lorsque le premier travail est apparu, dans lequel ont été discutés; Options d'utilisation des bases de données de façons familières et naturelles de représenter des données - les modèles dites de référence de table.

Le fondateur de la théorie des bases de données relationnelles est un employé IBM Dr. E. Codd, qui a publié 6 (juin 1970. Article Un modèle relationnel de données pour les banques de données partagées(Modèle de données relationnel pour les grandes banques de données collectives). Dans cet article, le terme "modèle de données relationnelle a été utilisé pour la première fois. La théorie des bases de données relationnelles, développées dans les années 70 aux États-Unis, le Dr E. Codd, dispose d'un cadre mathématique puissant décrivant les règles d'une organisation de données efficace. Développé par E. Codd La base théorique est devenue une base pour développer la théorie de la conception de la base de données.

E. DOCD, étant un mathématicien pour l'éducation, proposé d'utiliser l'appareil de la théorie des ensembles de traitement de données sur le dispositif (association, intersection, différence, travail décartitien). Il a prouvé que tout ensemble de données peut être représenté comme des tables bidimensionnelles d'une espèce spéciale connue en mathématiques comme une "relation".

Relationnelcette base de données est considérée, dans laquelle toutes les données sont présentées à l'utilisateur sous la forme de tables rectangulaires de valeurs de données et toutes les opérations via la base de données sont réduites à des manipulations avec des tables.

La table se compose de colonnes (champs)et lignes (entrées);il a un nom unique dans la base de données. Tableauréfléchir type d'objetvrai mira (Essence),et tout le monde objet spécifique à la chaîne.Chaque colonne Table est un ensemble de valeurs d'un attribut d'objet spécifique. Les valeurs sont sélectionnées dans l'ensemble de toutes les valeurs possibles de l'attribut d'objet, appelée domaine (domaine).

Dans la forme la plus générale, le domaine est déterminé par la tâche d'un certain type de données de base auxquels les éléments de domaine et une expression logique arbitraire appliquée aux éléments de données. Si, lors du calcul d'une condition logique concernant l'élément de données, la valeur de "vérité" est obtenue, alors cet élément appartient au domaine. Dans le cas le plus simple, le domaine est défini comme un ensemble potentiel admissible d'un type de valeurs. Par exemple, la totalité de la date de la naissance de tous les employés est un "domaine de la date de la date" et les noms de tous les employés constituent les "noms de domaine des employés". Le domaine des dates de naissance a un type de données qui vous permet de stocker des informations sur l'heure du temps et que les noms de domaine des employés doivent avoir un type de caractères de données.

Si deux valeurs sont extraites dans le même domaine, vous pouvez comparer ces deux valeurs. Par exemple, si deux valeurs sont extraites du domaine de la base de données, vous pouvez les comparer et déterminer qui des employés plus âgés. Si les valeurs sont extraites de différents domaines, leur comparaison n'est pas autorisée, car, dans toutes les chances, cela n'a pas de sens. Par exemple, à partir de la comparaison du nom et de la date de la naissance d'un employé, rien de définitif ne sera libéré.

Chaque colonne (champ) a un nom qui est généralement écrit en haut de la table. Lors de la conception de tables dans un SGBM spécifique, il est possible de choisir pour chaque champ un type,c'est-à-dire pour déterminer l'ensemble de règles pour son affichage et identifier ces opérations pouvant être effectuées sur les données stockées dans ce champ. Les ensembles de type peuvent varier de différents SGBD.

Le nom de champ doit être unique dans la table, mais des tables différentes peuvent avoir des champs avec le même nom. Toute table doit avoir au moins un champ; Les champs sont situés dans le tableau conformément à la procédure de suivi de leurs noms lors de sa création. Contrairement aux champs, les chaînes ne sont pas des noms; L'ordre de leur suit dans le tableau n'est pas défini et le nombre est logiquement illimité.

Étant donné que les rangées de la table ne sont pas commandées, il est impossible de choisir une chaîne dans sa position - parmi elles, il n'y a pas de "premier", "Deuxième", "Dernier". Toute table a une ou plusieurs colonnes, les valeurs dans lesquelles sont identifiés de manière unique chaque ligne. Une telle colonne (ou une combinaison de colonnes) est appelée touche principale (clé primaire). Un champ artificiel est souvent introduit, destiné aux enregistrements de numérotation dans la table. Un tel domaine, par exemple, peut être son ordinal, qui sera en mesure d'assurer le caractère unique de chaque entrée du tableau. La clé doit avoir les propriétés suivantes.

Unique.À tout moment du temps, aucune autre relation différente n'a la même valeur pour combiner les attributs inclus dans la clé. C'est-à-dire que la table ne peut pas être deux lignes ayant le même numéro d'identification ou le même numéro de passeport.

Minimalité.Aucun des attributs entrants ne peut être exclu de la clé sans perturber l'unicité. Cela signifie que vous ne devez pas créer une clé qui inclut le numéro de passeport et le numéro d'identification. Il suffit d'utiliser l'un de ces attributs pour identifier de manière unique l'intendant. Il n'est pas nécessaire d'inclure un attribut non public à la clé, c'est-à-dire qu'il est interdit d'utiliser comme une combinaison clé du numéro d'identification et du nom de l'employé. Avec l'exclusion du nom de l'employé de la clé, vous pouvez toujours être identifié de manière unique chaque chaîne.

Chaque attitude a au moins une clé possible, car la totalité de tous ses attributs satisfait à la condition de l'unicité - cela découle de la détermination même de la relation.

Une des clés possibles est arbitrairement sélectionnée dans qualité clé primaire. Le reste des clés possibles, s'il y a, sont acceptés pour touches alternatives.Par exemple, si vous sélectionnez un numéro d'identification comme clé principale, le numéro de passeport sera une clé alternative.

La relation des tables est un élément essentiel du modèle de données relationnelle. Il est soutenu clés externes (clé étrangère).

Lorsque vous décrivez le modèle de la base de données relationnelle pour le même concept, divers termes sont souvent utilisés, ce qui dépend du niveau de la description (théorie ou pratique) et au système (accès, serveur SQL, dbase). Dans l'onglet. 2.3 Résumé des termes utilisés.

Tableau 2.3.Bases de données Terminology

Théorie de la base de données ____________ Base de données relationnelle _________ SQL Server __________

Tableau de la relation (tableau) (tableau)

Enregistrement de tuple (rangée) (rangée)

Champ d'attribut (champ) _______________ colonne ou colonne (colonne)

Bases de données relationnelles

Base de données relationnelle- Il s'agit d'un ensemble de relations contenant toutes les informations qui doivent être stockées dans la base de données. C'est-à-dire que la base de données est un ensemble de tables requises pour stocker toutes les données. Les tables de base de données relatives sont logiquement liées à l'autre. Les exigences de la conception de la base de données relationnelle sous une forme générale peuvent être réduites à plusieurs règles.

À propos de chaque table a un nom unique dans la base de données et consiste en un même type de lignes.

À propos de chaque table consiste en un nombre fixe de colonnes et de valeurs. Dans une colonne d'une rangée, plus d'une valeur ne peut pas être enregistrée. Par exemple, s'il existe une table avec des informations sur l'auteur, la date de publication, un régime, etc., puis dans la colonne avec le nom de l'auteur ne peut pas être conservé plus d'un nom. Si le livre est écrit en deux auteurs et plus, vous devrez utiliser des tables supplémentaires.

Plus de temps dans la table ne dispose pas de deux lignes en doublant mutuellement. Les rangées doivent différer au moins une valeur pour pouvoir identifier sans ambiguïté n'importe quelle ligne de la table.

À propos de chaque colonne est attribué un nom unique dans la table; Un type de données spécifique est installé pour celui-ci de sorte que dans cette colonne, il existe des valeurs homogènes (dates, noms de famille, téléphones, sommets, etc.).

À propos du contenu complet des informations de la base de données est présenté sous la forme de valeurs explicites des données elles-mêmes, et cette méthode de présentation est la seule. Par exemple, la connexion entre les tableaux est effectuée sur la base de colonnes de données stockées, et non sur la base de tout pointeurs, déterminant artificiellement la communication.

O Lors du traitement des données, vous pouvez accéder librement de n'importe quelle ligne ou toute colonne de table. Les valeurs stockées dans la table n'imposent aucune restriction sur demande de données. Description de la colonne,

Base de données relationnelle et ses caractéristiques. Types de cravates entre les tables relationnelles

Base de données relationnelle - Il s'agit d'un ensemble de tables interdépendantes, chacune contenant des informations sur les objets d'un certain type. La ligne de table contient des données sur un objet (par exemple, le produit, le client) et les colonnes de table décrivent. diverses caractéristiques Ces objets sont des attributs (par exemple, nom, code de produit, informations sur le client). Les enregistrements, c'est-à-dire les lignes de table, ont la même structure - elles consistent en des champs qui stockent les attributs de l'objet. Chaque champ, c'est-à-dire une colonne, décrit une seule caractéristique de l'objet et possède un type de données strictement défini. Tous les enregistrements ont les mêmes champs, uniquement dans ceux-ci affichent diverses propriétés d'information de l'objet.

Dans la base de données relationnelle, chaque table doit avoir une clé primaire - un champ ou une combinaison de champs identifiant chaque ligne de la table. Si la clé est composée de plusieurs champs, elle s'appelle composite. La clé doit être unique et déterminer sans ambiguïté l'enregistrement. Par valeur clé, vous pouvez trouver une seule entrée. Les clés servent également à rationaliser les informations dans la base de données.

Le tableau des bases de données relationnelles doit répondre aux exigences de la normalisation des relations. La normalisation des relations est un dispositif formel de restrictions sur la formation de tables qui vous permet d'éliminer la duplication, garantit la cohérence des stockées dans la base de données, réduit les coûts de main-d'œuvre pour maintenir une base de données.

Laissez la table d'un étudiant, contenant des champs de piste-Racing: numéro de groupe, nom complet, n ° néerlandais, date de naissance, numéro de spécialité, nom de la faculté. Une telle organisation de stockage aura un certain nombre de lacunes:

  • La duplication des informations (le nom de la spécialité et de la faculté est répétée pour chaque élève), par conséquent, le volume de la base de données augmentera;
  • La procédure de mise à jour des informations dans le tableau est difficile en raison de la nécessité de modifier chacunentrée de table.

La normalisation des tables est conçue pour éliminer ces lacunes. Disponible trois formes normales de relations.

La première forme normale. La table relationnelle est montrée à la première forme normale si et uniquement si aucune de ses lignes ne contient plus d'une valeur dans n'importe quel champ et aucun de ses champs clés n'est vide. Donc, si un étudiant doit recevoir des informations sur le nom de l'étudiant, le champ FIO doit être divisé en une partie du nom, du nom, du patronymique.

Deuxième forme normale. La table relationnelle est définie sur la deuxième forme normale si elle répond aux exigences de la première forme normale et de tous ses champs non inclus dans la clé primaire sont associés à une dépendance fonctionnelle complète avec la clé primaire. Pour amener la table à la deuxième forme normale, il est nécessaire de déterminer la dépendance fonctionnelle des champs. La dépendance fonctionnelle des champs est la dépendance, avec un rideau dans l'analyse d'un objet d'information, une seule valeur des accessoires descriptifs correspond à une certaine valeur des accessoires de clé.

Troisième forme normale. La table est sous la troisième forme normale si elle répond aux exigences de la deuxième forme normale, aucun de ses champs non clés ne dépend de la fonctionnalité de tout autre champ de non-séquence. Par exemple, dans le tableau, l'étudiant (numéro du groupe, nom complet, numéro du cahier de test, date de naissance, plus ancien) trois champs - le numéro du répertoire de test, le nombre du groupe, l'aîné sont en dépendance transitive. Le nombre du groupe dépend du nombre du carnet d'essai et de l'aîné dépend du nombre de groupe. Pour éliminer la dépendance transitive, une partie des champs de la table étudiante sont nécessaires pour transférer un groupe à une autre table. Les tables vont prendre suivant apparence: Étudiant (numéro de groupe, nom complet, numéro de livre de test, date de naissance), groupe (numéro de groupe, aîné).

Les opérations suivantes sont possibles sur des tables relationnelles:

  • Combinant des tables avec la même structure. Résultat- table totale: Premièrement, le premier, puis la seconde (concaténation).
  • Tables de passage avec la même structure. Résultat - Ces enregistrements qui sont dans les deux tables sont sélectionnés.
  • Soustraire des tables avec la même structure. Résultat - Ces enregistrements qui ne sont pas sous tractibles sont sélectionnés.
  • Échantillonnage (sous-ensemble horizontal). Le résultat est sélectionné des entrées qui répondent à certaines conditions.
  • Projection (sous-ensemble vertical). Le résultat est un rapport contenant certains des champs des tables source.
  • Cartesovo Le produit des deux tables d'enregistrement de la table résultante est obtenu en combinant chacun des premiers enregistrements de table à chaque entrée d'une autre table.

Les tables relationnelles peuvent être associées les unes aux autres. Par conséquent, les données peuvent être supprimées simultanément de plusieurs tables. Les tables sont associées les unes aux autres afin de réduire en définitive le volume de la base de données. La connexion de chaque paire de tables est assurée s'il existe des colonnes identiques.

Les types de liens d'information suivants existent:

  • Un par un;
  • un à plusieurs;
  • Beaucoup de copeaux.

Communication un à un Il suppose qu'un seul attribut de la deuxième table correspond à un attribut de la première table et inversement.

Communication un à plusieursil suppose qu'un attribut de la première table correspond à plusieurs attributs de la deuxième table.

Communication Beaucoup de co-beaucoup Il suppose qu'un attribut de la première table correspond à plusieurs attributs de la deuxième table et inversement.

  • Transfert
Note du traducteur: bien que l'article soit assez ancien (publié il y a 2 ans) et porte un nom fort, il donne toujours une bonne idée des différences de bases de données relationnelles et de la base de données NOSQL, de leurs avantages et de leurs inconvénients, et donne également bref examen Stockage non réglementé.

DANS dernièrement Il existe de nombreuses bases de données non relationnelles. Cela suggère que si vous avez besoin d'une évolutivité pratiquement illimitée à la demande, vous avez besoin d'une base de données non relationnelle.

Si cela est vrai, cela signifie-t-il que des bases de données relationnelles puissantes deviennent vulnérables? Cela signifie-t-il que les jours des bases de données relationnelles passent et seront bientôt entièrement détenus? Dans cet article, nous examinerons le cours populaire de bases de données irréel en relation avec différentes situations et voir si cela affectera l'avenir des bases de données relationnelles.

Les bases de données relationnelles sont existantes depuis environ 30 ans. Pendant ce temps, plusieurs révolutions ont éclaté, qui auraient dû se terminer par des installations de stockage relationnelles. Bien sûr, aucune de ces révolutions n'a eu lieu et l'une d'entre elles n'a pas entré la position des bases de données relationnelles sur l'IOTA.

Commençons par les bases

La base de données relationnelle est un ensemble de tables (entités). Les tables sont constituées de haut-parleurs et de cordes (tuples). Les tables intérieures peuvent définir des restrictions, il y a des relations entre les tables. En utilisant SQL, vous pouvez créer des requêtes qui renvoient les ensembles de données obtenus à partir d'une ou de plusieurs tables. Dans une demande, les données sont obtenues à partir de plusieurs tables en les connectant (jointure), le plus souvent pour la connexion sont les mêmes colonnes qui déterminent les relations entre les tables. La normalisation est le processus de structuration du modèle de données, de fournir une connectivité et une absence de redondance dans les données.


L'accès à des bases de données relationnelles est effectué via des systèmes de gestion de la base de données relationnels (RSUBD). Presque tous les systèmes de base de données que nous utilisons sont relationnels, tels que Oracle, SQL Server, MySQL, Sybase, DB2, Teradata, etc.

Les raisons d'une telle domination ne sont pas évidentes. Tout au long de l'existence de bases de données relationnelles, ils ont constamment offert le meilleur mélange de simplicité, de stabilité, de flexibilité, de performance, d'évolutivité et de compatibilité dans le domaine de la gestion des données.

Cependant, pour assurer toutes ces caractéristiques, les stockages relationnels sont incroyablement complexes à l'intérieur. Par exemple, une simple demande de sélection peut avoir des centaines de chemins d'exécution potentiels que l'optimiseur sera classé directement lors de l'exécution de la requête. Tout cela est masqué à partir des utilisateurs, toutefois, à l'intérieur de la RDBD crée un plan d'accomplissement, basé sur des éléments tels que des algorithmes pour la valorisation de la valeur et la meilleure façon Une demande de réponse.

Problèmes relationnels

Bien que les installations de stockage relationnelles fournissent le meilleur mélange de simplicité, de stabilité, de flexibilité, de performance, d'évolutivité et de compatibilité, leurs indicateurs de chacun de ces éléments ne sont pas nécessairement plus élevés que ceux de systèmes similaires orientés sur une autre caractéristique. Ce n'était pas gros problèmePuisque la domination universelle de la SGBD relationnelle l'emporte sur toutes les lacunes. Néanmoins, si les RBD ordinaires ne répondaient pas aux besoins, il y avait toujours des alternatives.

Aujourd'hui, la situation est un peu différente. La diversité des applications augmente et l'importance des caractéristiques énumérées augmente avec elle. Et avec une augmentation du nombre de bases de données, une caractéristique commence à éclipser toutes les autres. C'est une évolutivité. Depuis tout le monde plus d'applications Travailler dans des conditions de charge élevées, par exemple, tels que les services Web, leurs exigences d'évolutivité peuvent changer très rapidement et se développer fortement. Le premier problème peut être très difficile à résoudre si vous avez une base de données relationnelle située sur serveur propre. Supposons que la charge sur le serveur pendant la nuit a augmenté trois fois. À quelle vitesse pouvez-vous profession le fer? La solution du deuxième problème provoque également des difficultés dans le cas de l'utilisation de bases de données relationnelles.

Les bases de données relationnelles ne permettent que si elles sont situées sur un seul serveur. Lorsque les ressources de ce serveur sont terminées, vous devez ajouter plus de machines et distribuer la charge entre elles. Et ici la complexité de la base de données relationnelle commence à jouer contre l'évolutivité. Si vous essayez d'augmenter le nombre de serveurs à la hauteur de plusieurs morceaux, et jusqu'à des centaines ou des milliers, la difficulté augmentera par une commande et des caractéristiques qui rendent des bases de données relationnelles aussi attrayantes, ce qui réduisait rapidement les chances de les utiliser comme une plate-forme de grande taille. systèmes distribués.

Rester compétitif, les fournisseurs de services cloud doivent faire face à cette restriction, car c'est quoi plate-forme de nuage Sans entrepôt de données évolutif. Par conséquent, les fournisseurs ne restent qu'une seule option s'ils souhaitent fournir aux utilisateurs un emplacement évolutif pour le stockage de données. D'autres types de types de base de données doivent être appliqués, qui ont une capacité d'échelle plus élevée, même si le prix des autres fonctionnalités disponibles dans des bases de données relationnelles.

Ces avantages, ainsi que la demande existante pour eux, ont conduit à une vague de nouveaux systèmes de gestion de base de données.

Nouvelle vague

Ce type de bases de données est habituel appelé Store Key-Value Store (Store Key-Value). En fait, aucun nom officiel n'existe, vous pouvez donc la satisfaire dans le contexte des bases de données axées sur les documents, axées sur les attributs et axées sur les attributs (bien qu'ils puissent également être relationnels), des tableaux commandés par Sharded (tableaux triés), des tables de hachage et des stockages distribués Tapez la valeur de la clé. Et bien que chacun de ces noms indique les caractéristiques spécifiques du système, toutes sont des variations de la rubrique que nous appellerons le stockage de la valeur de clé.

Cependant, peu importe la manière dont vous l'appelez, ce type de base de données "nouveau" n'est pas aussi nouveau et a toujours été utilisé principalement pour les applications pour lesquelles l'utilisation de bases de données relationnelles serait inappropriée. Toutefois, sans avoir besoin de web et de «nuages» dans l'évolutivité, ces systèmes ne sont restés pas fortement demandés. Maintenant, la tâche consiste à déterminer quel type de stockage convient davantage à un système spécifique.
La base de données relationnelle et le stockage de la valeur clé sont différents et conçus pour résoudre différentes tâches. La comparaison des caractéristiques permettra uniquement de comprendre la différence entre eux, mais nous allons commencer:

Caractéristiques de l'entrepôt

Base de données relationnelle Stockage de la valeur clé
La base de données consiste en des tables, les tables contiennent des colonnes et des chaînes, et les chaînes sont constituées de valeurs de haut-parleurs. Toutes les lignes d'une table ont une seule structure.
Pour les domaines, vous pouvez faire une analogie avec des tables, cependant, contrairement aux tableaux des domaines, la structure de données n'est pas définie. Le domaine est une telle boîte dans laquelle vous pouvez ajouter n'importe quoi. Les entrées à l'intérieur d'un domaine peuvent avoir une structure différente.
Le modèle de données 1 est défini à l'avance. Il est strictement tapé, contient des restrictions et des relations pour assurer l'intégrité des données.
Les enregistrements sont identifiés par la clé et chaque entrée a un ensemble dynamique d'attributs associé à celui-ci.
Le modèle de données est basé sur la présentation naturelle des données contenues et non sur la fonctionnalité de l'application.
Dans certaines implémentations, les attributs ne peuvent être que des chaînes. Dans d'autres implémentations, les attributs ont des types de données simples qui reflètent les types utilisés dans la programmation: entiers, rangées de rangées et listes.
Le modèle de données est soumis à la normalisation pour éviter la duplication des données. La normalisation génère des relations entre les tables. Les relations associent des données de différentes tables.
Entre les domaines, ainsi que dans un domaine, la relation n'est clairement pas définie.

Pas de joindoov

Type d'entrepôt de valeur de valeur orienté pour travailler avec des enregistrements. Cela signifie que toutes les informations relatives à cette entrée sont stockées avec elle. Domaine (vous pouvez penser comme une table) peut contenir le nombre impressionnant de disques différents. Par exemple, un domaine peut contenir des informations et des commandes du client. Cela signifie que les données sont généralement dupliquées entre différents domaines. C'est une approche acceptable, puisque espace disque peu coûteux. L'essentiel est qu'il permet à toutes les données associées à stocker au même endroit, ce qui améliore l'évolutivité, car elle disparaît la nécessité de connecter des données de différentes tables. Lors de l'utilisation de la base de données relationnelle, il serait nécessaire d'utiliser des connexions pour regrouper les informations nécessaires au même endroit.


Bien que de stocker une clé plus étroite, la nécessité de la relation diminue fortement, la relation est toujours nécessaire. Ces relations existent généralement parmi les entités principales. Par exemple, le système de commande aurait des enregistrements contenant des données sur les acheteurs, les produits et les commandes. Peu importe que ces données soient dans un domaine ou dans plusieurs. L'essentiel est que lorsque l'acheteur place une commande, vous ne voudrez probablement pas stocker des informations sur l'acheteur et sur la commande dans une entrée.
Au lieu de cela, l'enregistrement de commande doit contenir les clés indiquant les enregistrements appropriés sur l'acheteur et le produit. Étant donné que les enregistrements peuvent être stockés toutes les informations et que la relation n'est pas définie dans le modèle de données lui-même, le système de gestion de la base de données ne sera pas en mesure de contrôler l'intégrité de la relation. Cela signifie que vous pouvez supprimer les acheteurs et les biens qu'ils ont commandés. S'assurer que l'intégrité des données relève entièrement de l'application.

Accès aux données

Base de données relationnelle Stockage de la valeur clé
Les données sont créées, mises à jour, supprimées et demandées à l'aide de la langue des requêtes structurées (SQL).
Les données sont créées, mises à jour, supprimées et demandées à l'aide des méthodes des méthodes de l'API.
Les requêtes SQL peuvent récupérer des données d'une seule table et de plusieurs tables à l'aide de connexions (jointures).
Certaines implémentations fournissent une syntaxe de type SQL pour spécifier les conditions de filtrage.
Les requêtes SQL peuvent inclure des agrégations et des filtres complexes.
Souvent, seuls les opérateurs de comparaison de base peuvent être utilisés (\u003d,! \u003d,<, >, <= и =>).
La base de données relationnelle contient généralement une logique intégrée, telles que des déclencheurs, des procédures stockées et des fonctions.
Toutes les entreprises et la logique pour prendre en charge l'intégrité des données sont contenues dans le code de l'application.

Interaction avec des applications

Type d'entrepôt Valeur clé: Avantages

Il existe deux avantages évidents de tels systèmes avant les installations de stockage relationnelles.
Convient aux services cloud
Le premier avantage des installations de stockage de la valeur clé est qu'ils sont plus faciles et ont donc une plus grande évolutivité que les bases de données relationnelles. Si vous placez votre propre système ensemble, et prévoyez de placer une douzaine de serveurs ou cent serveurs qui doivent faire face à la charge croissante, pour votre stockage de données, votre choix est un stockage de la valeur de clé.

En raison du fait que ces installations de stockage sont étendues facilement et dynamiquement, elles utiliseront également des fournisseurs qui fournissent une plate-forme de stockage Web multijoueur. Une telle base est un outil relativement bon marché pour stocker un grand potentiel d'évolutivité. Les utilisateurs ne paient généralement généralement que pour être utilisés, mais leurs besoins peuvent augmenter. Le fournisseur peut être dynamiquement et pratiquement sans restrictions pour augmenter la taille de la plate-forme sur la base de la charge.

Intégration plus naturelle avec code
Le modèle de données relationnel et le modèle d'objet du code sont généralement construits de différentes manières, ce qui entraîne une incompatibilité. Les développeurs résolvent ce problème avec le code d'écriture qui affiche un modèle relationnel dans modèle d'objet. Ce processus n'a pas de valeur réalisable claire et rapide et peut prendre un temps assez considérable qui pourrait être dépensé pour le développement de la demande elle-même. Entre-temps, de nombreuses installations de stockage de la valeur de clés stockent des données dans une telle structure affichée dans des objets plus naturellement. Il peut réduire considérablement le temps de développement.

D'autres arguments en faveur de l'utilisation des installations de stockage de la valeur clé, comme "les bases relationnelles peuvent devenir maladroites" (au fait, je n'ai aucune idée de ce que cela signifie) sont moins convaincants. Mais avant de devenir partisan de ces installations de stockage, lisez la section suivante.

Valeur clé de type entrepôt: inconvénients

Les relations dans des bases de données relationnelles garantissent l'intégrité des données au niveau le plus bas. Les données qui ne répondent pas aux restrictions ne peuvent pas entrer physiquement dans la base de données. Il n'y a pas de telles restrictions dans les entrepôts de type clé. Par conséquent, le contrôle de l'intégrité des données est complètement sur les applications. Cependant, dans n'importe quel code, il y a des erreurs. Si des erreurs dans une base de données relationnelle correctement conçue ne conduisent généralement pas à des problèmes d'intégrité des données, les erreurs des entrepôts de la valeur clé donnent généralement des problèmes.

Un autre avantage de la base de données relationnelle est qu'ils vous ont forcé à suivre le processus de développement d'un modèle de données. Si vous avez conçu un puits de modèle, la base de données contiendra une structure logique qui reflète complètement la structure des données stockées, mais la structure de l'application est dispersée. Ainsi, les données deviennent indépendantes de l'application. Cela signifie qu'une autre application sera en mesure d'utiliser les mêmes données et la même logique d'application peut être modifiée sans modification du modèle de base. Pour faire de même avec le type de stockage de la valeur clé, essayez de remplacer le processus de conception du modèle de conception de modèle relationnel dans lequel des classes générales sont créées en fonction de la structure naturelle des données.

Et n'oubliez pas de compatibilité. Contrairement à la base de données relationnelle, aux installations de stockage, axées sur le "nuage", ont beaucoup moins normes générales. Bien qu'ils ne diffèrent pas conceptuellement, ils ont tous différentes API, interfaces de requête et leurs spécificités. Par conséquent, vous feriez mieux de faire confiance à votre fournisseur, car si quelque chose, vous ne pouvez pas facilement passer à un autre fournisseur de services. Et étant donné que presque toutes les installations de stockage de la valeur de clé moderne sont dans les versions bêta 2, la confiance devient encore plus risquée que dans le cas de bases de données relationnelles.

Analyse de données limitée
Généralement tout stockage en ligne Le type de bail multiple est construit, ce qui signifie que le même système utilise un grand nombre d'utilisateurs et d'applications. Empêcher "Capture" système commun, Les vendeurs limitent généralement l'exécution de la requête. Par exemple, dans SimpleDB, la requête ne peut pas être effectuée plus de 5 secondes. Dans Google Appengine DataStore, vous ne pouvez pas obtenir plus de 1000 entrées 3.

Ces restrictions ne sont pas effrayantes pour une logique simple (création, mise à jour, suppression et extraction d'un petit nombre d'enregistrements). Mais que si votre demande devient populaire? Vous avez reçu beaucoup de nouveaux utilisateurs et de nombreuses nouvelles données, et vous souhaitez désormais effectuer de nouvelles fonctionnalités pour les utilisateurs ou la récupération d'une manière ou d'une autre des données. Ici, vous pouvez difficilement vous casser avec même demandes simples Pour l'analyse des données. Le fichier comme suivi de l'utilisation d'une application ou d'un système de recommandations basé sur l'historique des utilisateurs, au mieux, peut être complexe dans des implémentations. Et au pire - juste impossible.

Dans ce cas, pour Analytics, il est préférable de faire une base de données distincte qui sera remplie de données de votre stockage de la valeur de clé. Pensez à avance comment cela peut être fait. Voulez-vous poster un serveur dans le nuage ou à la maison? Y aura-t-il des problèmes dus aux retards de signal entre vous et votre fournisseur? Votre référentiel prend-il en charge ce transfert de données? Si vous avez 100 millions d'enregistrements, et à la fois, vous pouvez prendre 1000 entrées, combien vous aurez-vous besoin de transférer toutes les données?

Cependant, ne mettez pas l'évolutivité avant tout. Il sera inutile si vos utilisateurs résoudront les services d'un autre service, car il fournit plus de fonctionnalités et de plusieurs paramètres.

Stockage en ligne

De nombreux fournisseurs de services Web offrent un stockage multijoueur de la valeur de clé multijoueur. La plupart d'entre eux satisfont les critères énumérés ci-dessus, mais chacun a ses propres caractéristiques distinctives et diffère des normes décrites ci-dessus. Jetons un coup d'oeil à l'exemple spécifique des installations de stockage, tels que SimpleDB, Google Appengine DataSore et SQL Data Services.
Amazon: Simplesdb.
SimpleDB est un stockage de la valeur de clé orientée attribuée qui fait partie de Amazon Webservices. SimpleDB est dans la phase bêta; Les utilisateurs peuvent l'utiliser gratuitement - tant que leurs besoins ne dépassent pas une certaine limite.

SimpleDB a plusieurs restrictions. Le premier - le temps d'exécution de la requête est limité à 5 secondes. Deuxièmement - il n'y a pas de types de données sauf les chaînes. Tout est stocké, extrait et comparé comme une chaîne, afin de comparer les dates, vous devrez les convertir au format ISO8601. La troisième - taille maximum Toute chaîne est de 1024 octets, ce qui limite la taille du texte (par exemple, une description du produit), que vous pouvez stocker en tant qu'attribut. Cependant, étant donné que la structure de données est flexible, vous pouvez contourner ces restrictions en ajoutant les attributs "Descriptions1", "Description du produit2", etc. Mais le nombre d'attributs est également limité à un maximum de 256 attributs. Bien que SimpleDB soit dans la phase bêta, la taille du domaine est limitée à 10 gigaoctets, et la base entière ne peut pas occuper plus que le 1er téraoctet.

Un des principales caractéristiques SimpleDB est l'utilisation du modèle (modèle de consistance éventuel). Ce modèle convient au travail multi-threadé, cependant, il convient de garder à l'esprit que, après avoir modifié la valeur de l'attribut en une sorte d'enregistrement, ces modifications peuvent ne pas être visibles lors des opérations de lecture ultérieures. La probabilité d'un tel développement d'événements est toutefois faible, cependant, vous devez vous en souvenir. Vous ne voulez pas vendre le dernier ticket cinq acheteurs simplement parce que vos données étaient décisantes au moment de la vente.

Google appengine Data Store
L'appengine Datastore de Google est basé sur une bigtable, un système de stockage interne de données structurées de Google. Appengine DataStore ne fournit pas un accès direct à la bigtable, mais peut être perçu comme une interface d'interaction simplifiée avec la bigtable.

Appengine DataStore prend en charge un plus grand nombre de types de données à l'intérieur d'un enregistrement que SimpleDB. Par exemple, des listes pouvant contenir des collections à l'intérieur de l'enregistrement.

Très probablement, vous utiliserez cet entrepôt de données particulier lorsque vous développez avec utilisez Google Appengine. Cependant, contrairement à SimpleDB, vous ne pourrez pas utiliser Appengine DataStore (ou Bigtable) en dehors de Google Web Services.

Microsoft: Services de données SQL

SQL Data Services fait partie intégrante plateformes Microsoft Bleu azur. SQL Data Services est gratuit, est dans la version bêta et présente des limitations de la taille de la base. SQL Data Services est une application distincte - ensemble add-on Serveurs SQLquelles données stockées. Ces installations de stockage peuvent être relationnelles, mais pour vous SDS est un stockage de la valeur clé, ainsi que des produits décrits ci-dessus.

Stockage inutile

Il existe également un certain nombre de référentiels que vous pouvez utiliser en dehors des nuages \u200b\u200ben les installant. Presque tous ces projets sont jeunes, sont dans la phase alpha ou bêta et ont un code ouvert. Avec open source, vous pouvez être plus conscient de problèmes possibles et des restrictions plutôt que dans le cas de l'utilisation de produits fermés.
Couchdb.
CouchDB est une base de données librement axée sur les documents avec ouvert code source. JSON est utilisé comme format de stockage de données. CouchDB est conçu pour combler l'écart entre les bases de données relationnelles et orientées sur les documents à l'aide de "représentations". Ces soumissions contiennent des données provenant de documents sous la forme, similaire à une table, et vous permettent de créer des index et d'effectuer des demandes.

Actuellement, CouchDB n'est pas une base de données véritablement distribuée. Il possède des fonctions de réplication qui vous permettent de synchroniser des données entre serveurs, mais ce n'est pas la même distribution nécessaire pour créer un environnement très évolutif. Cependant, les développeurs CouchDB travaillent dessus.
Projet Voldemort.
Le projet Voldemort est base distribuée Type de données Valeur de données destinée à la mise à l'échelle horizontale sur un grand nombre de serveurs. Il est né dans le processus de développement LinkedIn et a été utilisé pour plusieurs systèmes ayant des exigences d'évolutivité élevées. Le projet Voldemort utilise également un modèle de cohérence fini.
Mongo.

Mongo est une base de données développée dans 10gen Geir Magnusson et Duight Merrimen (que vous pouvez connaître par DoubleClick). Comme Couchdb, Mongo est une base de données orientée de documents qui stocke des données dans le format JSON. Cependant, Mongo est plutôt une base d'objet qu'un stockage de la valeur de clé nette.
Bruine.

La bruine présente une approche complètement différente de la résolution des problèmes que l'installation de stockage de la valeur clé est conçue. La bruine a commencé comme l'une des branches MySQL 6.0. Plus tard, les développeurs ont retiré un certain nombre de fonctions (y compris des vues, des déclencheurs, des expressions compilées, des procédures stockées, du cache de requête, de la CAF et une partie des types de données), afin de créer un SGBD plus simple et rapide. Cependant, la bruine peut toujours être utilisée pour stocker des données relationnelles. L'objectif des développeurs est de créer une plate-forme demi-résolution conçue pour les applications Web et les applications cloud exécutées sur des systèmes avec 16 noyaux ou plus.

Décision

En fin de compte, il y a quatre raisons pour lesquelles vous pouvez choisir un stockage de valeur de clé non réglementé pour votre demande:
  1. Vos données sont fortement orientées et plus appropriées pour le modèle de données de la valeur clé que pour le modèle relationnel.
  2. Votre modèle de domaine est fortement orienté objet. L'utilisation du stockage de la valeur de clé réduira la taille du code supplémentaire pour convertir les données.
  3. L'entrepôt de données est bon marché et facile à intégrer à vos services Web fournisseur.
  4. Votre problème principal est une évolutivité élevée sur demande.
Cependant, prendre une décision, rappelez-vous les restrictions de bases de données spécifiques et les risques que vous rencontrez, suivez la voie de la base de données non relationnelle.

Pour toutes les autres exigences, il est préférable de choisir l'ancien SGBD de bon rapport relationnel. Sont-ils condamnés alors? Bien sûr que non. Au moins pour l'instant.

1 - À mon avis, le terme "structure de données" est plus approprié ici, mais a laissé le modèle de données d'origine.
2 - Très probablement, l'auteur signifiait que dans ses capacités, la base de données non réglementée est inférieure à la relation relationnelle.
3 - Peut-être que les données sont déjà obsolètes, l'article date de février 2009.

  • voldemort.
  • bruine.
  • Ajouter des balises

    Et également examiné avec commandes définies. Noms et fichiers de configuration my.ini. Aujourd'hui sera bref et si vous pouvez dire l'article théorique sur la question - quelles sont les bases de données et quelles bases de données sont.

    Dans cet article, je vais essayer d'énoncer brièvement quels types et quels types de bases de données sont Et je vais m'arrêter sur certains d'entre eux plus en détail. Nous allons parler de la structure des bases de données hiérarchiques, Je vais faire attention structure de la base de données réseauet arrêtons plus en détail sur la structure des bases de données relationnelles, Considérer caractéristiques des bases de données relationnelles. Et à la fin de l'article, un peu touché sur le sujet conception de la base de donnéesNaturellement relationnel, le serveur MySQL est donc essentiellement un modèle mathématique de bases de données relationnelles. Concevoir des bases de données et des types de données avec lesquels MySQL Server peut travailler sont des thèmes pour les publications ultérieures.

    Base de données. Modèles mathématiques, structure, définition.

    Je ne vais pas dire à mon blog en détail sur les lois mathématiques et les théories décrivant des bases de données relationnelles, mais le principe de la manière dont ils sont arrangés. Je dois dire si vous êtes intéressé par ce sujetVous pouvez toujours visiter une ressource mathématique spécialisée ou lire la littérature appropriée et vous pouvez toujours poser une question dans les commentaires à cette publication et je vais essayer de vous répondre autant que possible. Comme je l'ai dit, le sujet de cet article est bases de données relationnelles. Je vais essayer de répondre à la question, h ensuite, de telles bases de données relationnelles Simple et compréhensible. Pris les concepts principaux liés aux bases de données relationnelles, à la terminologie, à l'historique des bases de données en général et en particulier.

    Types et types de base de données

    Comme je l'ai déjà dit, les espèces et les types de bases de données sont très et beaucoup et je ne peux tout simplement pas les décrire dans cette publication, mais le plus commun types de stockage d'informations Ou des types de base de données, je vais essayer de décrire. Il est clair que la base de données conserve des informations sur certains objets, tels que des informations sur les produits dans la boutique en ligne. Tout produit de la base de données est un objet avec des paramètres et des propriétés spécifiques. Passons à des exemples spécifiques.

    Base de données hiérarchique, la structure des bases de données hiérarchiques

    Base de données hiérarchique - Chaque objet avec un tel stockage d'informations est présenté sous la forme d'une entité donnée, c'est-à-dire que cette entité peut avoir des filiales, des éléments parents et ces filiales peuvent avoir plus d'éléments enfants, mais il y a un objet à partir de laquelle tout commence. Il s'avère une sorte d'arbre. Un exemple de base de données hiérarchique peut être un système de fichiers informatiques, un exemple avec système de fichiers J'ai apporté l'ordinateur quand il considérait structure XML Document dans les notes de rubrique sur XML.

    Il faut dire que les bases de données de ce type sont optimisées pour la lecture d'informations.C'est-à-dire que les bases de données ayant une structure hiérarchique peuvent très rapidement choisir les informations demandées et la donner aux utilisateurs. Mais une telle structure n'autorise pas rapidement de passer des informations, vous pouvez ici donner un exemple de la vie, un ordinateur peut facilement fonctionner avec n'importe quel fichier spécifique ou dossier (qui sont essentiellement des objets structure hiérarchique) Mais le test de l'ordinateur par antivirus est effectué pendant très longtemps. Le deuxième exemple est le registre Windows.

    Dans la photo, vous pouvez voir la structure de la base de données hiérarchique, au sommet est parent ou élément racinaire, ci-dessous sont Éléments de fille, les éléments qui sont au même niveau sont appelés frèresBien, ou des éléments adjacents. En conséquence, le niveau inférieur de l'élément, la nidification de cet élément est plus grande.

    Base de données réseau, structure de la base de données réseau

    Bases de données réseau, sont une sorte de modification de bases de données hiérarchiques. Si vous regardez attentivement sur le dessin ci-dessus, vous avez probablement remarqué qu'une seule flèche de l'élément supérieur passe à chaque élément inférieur. Autrement dit, les bases de données hiérarchiques n'ont qu'un seul descendant dans chaque élément enfant. Les bases de données réseau diffèrent de la hiérarchie en ce que l'élément enfant peut avoir plusieurs ancêtres, c'est-à-dire les éléments de ce qui précède. Pour une plus grande visibilité et une plus grande compréhension structures de base de données réseau Faites attention au dessin:

    Il est à noter que base de réseau Les données possèdent les mêmes caractéristiques que les bases de données hiérarchiques. Mais dans cette catégorie, nous ne sommes pas très intéressés par les bases de données hiérarchiques et les bases de données, ce sujet se rapporte davantage à format XML et éventuellement dans la catégorie dédiée à la langue du balisage extensible, je vais essayer de considérer ce sujet plus en détail. Et dans la catégorie dédiée mysql nous sommes intéressés bases de données relationnellessur lequel nous nous concentrerons plus en détail.

    Bases de données relationnelles, structure de base de données relationnelle

    Bases de données relationnelles Ils ont reçu très répandu et beaucoup tentent d'écrire d'énormes articles sur la question - pourquoi les bases de données relationnelles ont-elles été généralisées, faire des conclusions et des commentaires profonds. Mais en fait, tout est très simple - les bases de données relationnelles sont très facilement décrites en mathématiquesC'est, c'est-à-dire que les mathématiques sont très bien écrites sous eux.

    Était une fois un tel mathématicien - Edgar Frank Coddqui est mort en 2003, qui, dans les années quatre-vingt, décrit très détaillé la structure des bases de données relationnelles Langue mathématique. Et s'il existe une mathématique bien écrite, il existe une mise en œuvre logicielle en conséquence. Restez sur les biographies E.F. Coddo je ne le ferai pas, car il y a diverses encyclopédies. C'est grâce au code que les bases de données relationnelles ont commencé à se développer activement. Donc quand on dise des bases de données, le plus souvent, nous entendons par bases de données relationnelles.

    Caractéristiques des bases de données relationnelles

    La chose principale caractéristiques de données relationnelles Est-ce que les objets à l'intérieur de ces bases de données sont stockés comme ensemble de tables bidimensionnelles. C'est-à-dire que la table consiste en un ensemble de colonnes dans lesquelles il peut être indiqué: le nom, le type de données (date, numéro, ligne, texte, etc.). Un autre important caractéristique de la base de données relationnelle est-ce que le nombre de colonnes est corrigé, c'est-à-dire la structure de la base de données est connue à l'avance., mais le nombre de lignes ou de lignes dans des bases de données relationnelles n'est pas limité, si nous parlons une ligne, puis rangées dans des bases de données relationnelles et il y a des objetsqui sont stockés dans la base de données.

    En fait, base de données - Ceci est un concept abstrait, la table est simplement un moyen de stocker des informations, ensemble de tables Il peut être connecté logiquement et cet ensemble appelez une base de données. Par conséquent, il est faux de dire que MySQL est une base de données, la base de données est stockée des informations. Mais une telle chose que DBMS - Système de gestion de la base de donnéesC'est ce que c'est ce qu'il est MySQL Server.C'est à l'aide de celui-ci que nous gérons les données stockées. Ou des idées autres mathématiques.

    La tâche la plus difficile quand travailler avec des bases de données relationnelles, est un conception de la structure de la base de données. La conception de la structure de la base de données est non seulement de créer une table et de spécifier le type de données et le nom des colonnes. Réellement conception est la scène la plus difficile lorsque vous travaillez avec des bases de données. Parce que la puissance de vos ordinateurs est limitée. Bien que les données soient peu nombreuses, peu de tables et de lignes dans ces tables, la machine les traitera très très rapidement. Mais au fil du temps, le nombre d'informations augmentera et nous aurons un ralentissement, ce qui augmentera, car la machine est nécessaire au traitement de certaines demandes (traitement de l'information). Dans le dernier article, j'ai déjà écrit que les bases de données relationnelles sont principalement orientées vers la modification (OLTP), c'est-à-dire ajouter nouvel enregistrement La table est une opération très simple pour sGBD relationnelMais effectuez un échantillon de données, il s'agit d'une opération de consommation de temps. Il y a aussi un changement de données, c'est comme un lien intermédiaire entre la lecture et l'ajout. Même si .

    Base de données de conception

    Eh bien, nous avons parlé un peu sur avantages et inconvénients des bases de données relationnelles. Et maintenant, brièvement, je vais toucher la question conception de la base de données. Sous la conception, je comprends ce qui suit: un homme s'assoit à la table, prend le papier et gère et basé sur la tâche, ainsi que sur la base des avantages et des inconvénients d'un système ou d'un autre, dans notre cas DBMS mysql. Commence à établir la structure de la future base de données. L'exigence de la base de données de conception est généralement évaluée comme suit:

    1. La base de données doit être aussi compacte que possible, c'est-à-dire qu'il est immobilisé.
    2. La base de données devrait être simple en termes de traitement.

    Et comme vous avez probablement compris, ces exigences se contredisent mutuellement. La conception est l'aspect le plus important lorsque vous travaillez avec des bases de données. Habituellement, le concepteur est un administrateur de serveur de base de données expérimenté ou un architecte de base de données, avec une vaste expérience. Dans des projets sérieux, il peut y avoir plusieurs douzaines et même des centaines de tables interconnectées par les modes de communication les plus complètes. Bien sûr, je ne vais pas approfondir dans conception de la base de donnéesoui et je ne peux pas le faire, mais quoi principes de base de la conception de la base de données Je vais essayer d'illuminer sur les pages de votre blog. Avant de procéder à la conception de la base de données, vous devez comprendre et ce que nous allons concevoir du tout. C'est-à-dire qu'il faut comprendre que nous devrions obtenir à la sortie.

    Et à la sortie, nous devons obtenir le soi-disant diagramme ou comment cela est-il appelé schème. Le diagramme est une définition: les informations seront stockées dans lesquelles il sera stocké dans lequel il sera stocké, dans lequel la colonne que le type de données est appelé la table, le nombre de colonnes de la table et de leur type, comme indiqué aux tables. Oui, les types de données dans les colonnes peuvent être différents, par exemple, un numéro de téléphone ou un index peuvent être écrits, à la fois en utilisant des caractères et à l'aide d'un type numérique de données. Mais la question apparaît: quel type de données est préférable pour stocker le numéro de téléphone ou l'index postal? Purement intuitivement sur cette question est le plus souvent répondu correctement - le numéro de téléphone de la base de données doit avoir un type de caractère, mais expliquer pourquoi le type de caractères peut être quelques-uns. L'explication est très simple, par exemple, nous avons besoin de tous les indices de courrier commençant par 637 ou numéros de téléphone à partir de 952, afin de rendre un tel échantillon à partir des données avec une tâche de type numérique est assez problématique et rend le même échantillon de Le type symbolique de données est assez facile.

    Base de données relationnelle - Concepts de base

    Souvent, parlant de la base de données, nous avons simplement un entrepôt automatisé de données. Une telle représentation n'est pas tout à fait correcte. Pourquoi cela sera présenté ci-dessous.

    En effet, dans le sens étroit du mot, la base de données est un ensemble de données requises pour l'opération (données actuelles). Cependant, les données sont une abstraction; Personne n'a jamais vu "juste des données"; Ils ne surviennent pas et n'existent pas par eux-mêmes. Le point est le reflet des objets du monde réel. Soit, par exemple, vous devez stocker des informations sur les articles reçus à l'entrepôt. Comment est l'objet du monde réel - l'élément - sera affiché dans la base de données? Afin de répondre à cette question, vous devez savoir quelles caractéristiques ou les détails des parties seront pertinents, nécessaires au travail. Parmi eux peut être le nom de la pièce, son poids, sa taille, sa couleur, la date de fabrication, le matériau à partir duquel il est fait, etc. Dans la terminologie traditionnelle, les objets du monde réel, les informations sur lesquelles sont stockées dans la base de données, sont appelées entités - entités (laissez ce mot ne fait pas peur au lecteur - il s'agit d'un terme généralement accepté) et de leurs fonctions d'attribut actuelles (attributs).

    Chaque caractéristique d'un objet particulier est la valeur de l'attribut. Ainsi, la partie "moteur" est la valeur de l'attribut "poids", égale à "50", reflétant le fait que ce moteur pèse 50 kilogrammes.

    Ce serait une erreur de supposer que seuls les objets physiques sont reflétés dans la base de données. Il est capable de faire des informations sur les abstractions, les processus, les phénomènes - c'est-à-dire que tout est confronté à une personne dans ses activités. Par exemple, dans la base de données, vous pouvez stocker des informations sur les commandes de la fourniture de pièces à l'entrepôt (bien que ce ne soit pas un objet physique, mais le processus). Attributs de l'entité "ordre" sera le nom de la partie fournie, le nombre de pièces, le nom du fournisseur, le délai de livraison, etc.

    Les objets du monde réel sont associés les uns aux autres dans de nombreuses dépendances complexes qui doivent être prises en compte dans des activités d'information. Par exemple, les pièces de l'entrepôt sont fournies par leurs fabricants. Par conséquent, les attributs de détails doivent inclure le «nom de l'attribut du fabricant». Cependant, cela ne suffit pas, car il peut être nécessaire de plus d'informations sur le fabricant d'une partie spécifique - son adresse, son numéro de téléphone, etc. La base de données devrait donc contenir non seulement des informations sur les détails et les commandes d'achat, mais également des informations sur leurs fabricants. De plus, la base de données doit refléter le lien entre les détails et les fabricants (chaque partie est produite par un fabricant particulier) et entre les commandes et les détails (chaque commande est effectuée sur une partie spécifique). Notez que dans la base de données, vous devez stocker uniquement des liens actuels et significatifs.

    Ainsi, au sens large du mot, la base de données est un ensemble de descriptions d'objets du monde réel et de liens entre eux, pertinents pour un domaine d'application particulier. À l'avenir, nous allons procéder à cette définition, en précisant au cours de la présentation.

    Modèle de données relationnelle

    Nous avons donc reçu une idée de ce qui est stocké dans la base de données. Il est maintenant nécessaire de comprendre comment les entités, les attributs et la communication sont affichés sur les structures de données. Ceci est déterminé par le modèle de données.

    Traditionnellement, tous les SGDM sont classés en fonction du modèle de données, qui y réside avec eux. Il est de coutume d'allouer des modèles de données hiérarchiques, de réseau et relationnel. Parfois, ils ajoutent un modèle de données basé sur des listes inversées. En conséquence, ils parlent de DBMS hiérarchiques, de réseau, de DBMS ou de SGBD sur la base des listes inversées.

    Selon la prévalence et la popularité de la SGBD relationnelle aujourd'hui - en dehors de la concurrence. Ils sont devenus une norme industrielle réelle, et donc l'utilisateur domestique devra faire face à sa pratique avec précision avec un SGBD relationnel. Examinez brièvement le modèle de données relationnels, non attaqué dans ses détails.

    Il a été élaboré par le code de 1969-1970 sur la base de la théorie mathématique des relations et s'appuie sur le système de concepts, dont le plus important est la table, l'attitude, la chaîne, la colonne, la clé primaire, la clé externe.

    Le rapport est considéré comme une telle base de données dans laquelle toutes les données sont présentées à l'utilisateur sous forme de valeurs de données rectangulaires et toutes les opérations de la base de données sont réduites à des manipulations avec des tables. La table est constituée de lignes et de colonnes et a un nom unique dans la base de données. La table reflète le type d'objet du monde réel (essence) et chacune de ses chaînes est un objet spécifique. Donc, la table de détail contient des informations sur toutes les pièces stockées en stock et ses lignes sont des ensembles de valeurs d'attribut de pièces spécifiques. Chaque colonne Table est un ensemble de valeurs d'un attribut d'objet spécifique. Ainsi, le matériau de colonne représente beaucoup de valeurs "en acier", "étain", "zinc", "nickel", etc. Dans la colonne, le montant contient autant de nombres non négatifs. Valeurs dans la colonne de poids - Numéros réels égaux aux pièces de poids en kilogrammes.

    Ces valeurs n'apparaissent pas de l'air. Ils sont sélectionnés dans l'ensemble de toutes les valeurs d'attribut possibles de l'objet appelé le domaine (domaine). Ainsi, les valeurs du matériau de colonne sont sélectionnées dans l'ensemble de noms de tous les matériaux possibles - plastiques, bois, métaux, etc. Par conséquent, le matériau de la colonne est fondamentalement impossible d'apparaître la valeur qui ne figure pas dans le domaine correspondant, par exemple, «eau» ou «sable».

    Chaque colonne a un nom qui est généralement écrit en haut de la table ( Figure. une). Il devrait être unique dans la table, mais divers tables peuvent avoir des colonnes avec les mêmes noms. Toute table doit avoir au moins une colonne; Les colonnes sont situées dans le tableau conformément à la procédure de suivi de leurs noms lors de sa création. Contrairement aux colonnes, les lignes ne sont pas des noms; L'ordre de leur suit dans le tableau n'est pas défini et le nombre est logiquement illimité.

    Figure 1. Concepts de base de données de base.

    Étant donné que les lignes de la table ne sont pas commandées, il est impossible de choisir une chaîne dans sa position - parmi elles, il n'y a pas de "premier", "Deuxième", "Dernier". Toute table a une ou plusieurs colonnes, les valeurs dans lesquelles sont identifiés de manière unique chaque ligne. Une telle colonne (ou combinaison de colonnes) est appelée clé primaire (clé primaire). Dans le tableau de la table, la clé principale est une partie de numéro de colonne. Dans notre exemple, chaque détail en stock comporte un numéro unique pour lequel les informations nécessaires sont extraites du tableau. Par conséquent, dans ce tableau, la clé principale est la partie numéro de colonne. Dans cette colonne, les valeurs ne peuvent pas être dupliquées - la table de pièces ne doit pas être des lignes qui ont la même valeur dans la colonne Numéro de pièce. Si la table satisfait à cette exigence, elle s'appelle la relation (relation).

    La relation des tables est un élément essentiel du modèle de données relationnelle. Il est pris en charge par des clés externes (clé étrangère). Considérez un exemple dans lequel la base de données stocke des informations sur les employés ordinaires (employé de la table) et les gestionnaires (gestionnaire de table) dans certaines organisations ( Figure. 2.). Primary Key Key Manager - Numéro de colonne (par exemple, numéro Tabel). La colonne Nom de famille ne peut pas effectuer le rôle de la clé primaire, car deux dirigeants peuvent travailler dans une organisation avec les mêmes noms. Tout employé est subordonné au seul chef, qui devrait être reflété dans la base de données. Le service de la table contient le numéro de colonne de la tête et les valeurs de cette colonne sont sélectionnées dans la colonne du gestionnaire de numéro de table (voir Figure. 2.). La colonne Numéro de tête est une clé externe de l'employé de la table.

    Figure 2. Interconnexion des tables de base de données.

    Les tables ne peuvent pas être stockées et traitement s'il n'y a pas de "données sur les données", par exemple des descripteurs de table, des colonnes, etc. dans la base de données. Ils s'appellent généralement des métadonnées. Les métadonnées sont également présentées sous forme tabulaire et stockée dans le dictionnaire de données (Dictionnaire de données).

    Outre les tables, d'autres objets, tels que des formulaires d'écran, des rapports, des rapports et même des programmes d'application qui fonctionnent avec une base de données peuvent être stockés dans la base de données.

    Pour les utilisateurs du système d'information, il ne suffit pas que la base de données ne reflète simplement les objets du monde réel. Il est important qu'une telle réflexion soit sans ambiguïté et cohérente. Dans ce cas, il est dit que la base de données satisfait à la condition d'intégrité (intégrité).

    Afin de garantir l'exactitude et la cohérence mutuelle des données, certaines restrictions sont superposées à la base de données, appelées restrictions d'intégrité (contraintes d'intégrité des données).

    Il existe plusieurs types de restrictions d'intégrité. Il est nécessaire, par exemple, que les valeurs de la colonne Table sont sélectionnées uniquement dans le domaine correspondant. En pratique, des restrictions d'intégrité plus complexes sont prises en compte, par exemple, le contrôle de référence (intégrité référentielle). Son essence est que la clé externe ne peut pas être un pointeur sur une chaîne inexistante de la table. Les limitations d'intégrité sont mises en œuvre à l'aide de fonds spéciaux qui seront discutés dans Section.Serveur de base de données .

    Langue SQL

    Par eux-mêmes, les données sous forme informatique ne représentent pas intérêt à l'utilisateur s'il n'y a pas d'accès à eux. L'accès aux données est effectué sous la forme de demandes de base de données formulées dans la langue de requête standard. Aujourd'hui, le SQL est SQL pour la plupart des SGBD.

    L'émergence et le développement de cette langue comme moyen de décrire l'accès à la base de données associé à la création de la théorie des bases de données relationnelles. Le prototype de langue SQL est apparu en 1970 dans le cadre du projet de recherche System / R, le travail sur lequel a été effectué dans le laboratoire IBM Santa Teresa. Maintenant, SQL est la norme d'interface avec le SGBD relationnel. Sa popularité est si grande que les développeurs de SGBD non relationnels (par exemple, Adabas) fournissent leurs systèmes Internet SQL.

    La langue SQL a la norme officielle - ANSI / ISO. La plupart des développeurs DBMS adhèrent à cette norme, mais développent souvent la mise en œuvre de nouvelles capacités de traitement de données. Nouveaux mécanismes de gestion de données qui seront décrits dans Section.Serveur de base de données ne peut être utilisé que par spécial opérateurs SQLEn général, non inclus dans la langue standard.

    SQL n'est pas un langage de programmation dans la représentation traditionnelle. Il n'est pas écrit dessus, mais demande à la base de données. Par conséquent, SQL est une langue déclarative. Cela signifie que, avec vous, vous pouvez formuler que vous devez obtenir, mais vous ne pouvez pas préciser comment faire cela. En particulier, contrairement aux langages de programmation procédurale (SI, Pascal, ADA), il n'y a pas de opérateurs tels que si, alors, d'autre, pendant, pendant la langue SQL.

    Nous ne considérerons pas la syntaxe de la langue en détail. Il ne le touchera que dans la mesure nécessaire à la compréhension exemples simples. Avec leur aide, les mécanismes de traitement de données les plus intéressants seront illustrés.

    La demande de requête SQL comprend un ou plusieurs opérateurs suivant un par un et séparés d'un point-virgule. Ci-dessous dans le tableau 1 sont les opérateurs les plus importants inclus dans la norme ANSI / ISO SQL.

    Tableau 1. Opérateurs de langue SQL de base.

    Dans les requêtes SQL, les noms qui identifient définitivement des objets de base de données sont utilisés. En particulier, il s'agit du nom de la table (partie), du nom de la colonne (nom), ainsi que des noms d'autres objets de la base de données, qui concernent des types supplémentaires (par exemple, des noms de procédures et des règles), qui sera discuté dans Section.Serveur de base de données . En plus des noms simples, les noms complexes sont également utilisés - par exemple, le nom de colonne qualifié (nom de colonne qualifié) définit le nom de la colonne et le nom de la table, qu'il appartient (détail. Même). Pour la simplicité dans les exemples, les noms seront enregistrés en russe, bien que dans la pratique, il n'est pas recommandé.

    Chaque colonne de n'importe quelle table stocke ces types de données. Il existe des types de données de base - des chaînes de symboles de longueur fixe, des nombres entiers et des nombres réels, ainsi que des types de données supplémentaires - des chaînes de caractères de longueur variable, des unités de trésorerie, des données de date et de l'heure, des données logiques (deux valeurs - "Vérité" et "LIENT" ). Dans le langage SQL, vous pouvez utiliser des constantes numériques, une chaîne, des constantes symboliques et des constructions de «date» et de «heure».

    Considérons plusieurs exemples.

    Demande "Déterminer le nombre de pièces en stock pour tous les types de pièces" est mise en œuvre comme suit:

    Sélectionnez Nom Quantité

    De l'article;

    Le résultat de la requête sera une table avec deux colonnes - le nom et la quantité extraites du détail de la table source. En fait, cette demande vous permet d'obtenir une projection verticale de la table source (plus strictement, un sous-ensemble vertical d'un ensemble de rangées de table). Parmi toutes les lignes de la table, la pièce est formée de lignes qui incluent des valeurs extraites de deux colonnes - nom et quantité.

    Demande "Quelles parties en acier sont stockées en stock?", Formulé dans SQL, ressemble à ceci:

    Des détails

    Où matériel \u003d "acier";

    Le résultat de cette demande sera également un tableau contenant uniquement les pluies de la table source contenant le matériau dans la colonne de matériau. Cette requête vous permet d'obtenir une projection horizontale du détail de la table (astérisque dans l'instruction SELECT désigne la sélection de toutes les colonnes de la table).

    Demande "Déterminez le nom et le nombre de pièces en stock composés de plastiques et pèsent moins de cinq kilogrammes" seront enregistrés comme suit:

    Sélectionnez Nom Quantité

    Des détails

    Où matériau \u003d "plastique"

    Et poids< 5;

    Résultat de la demande - Tableau de deux colonnes - Le nom, montant contenant le nom et le nombre de pièces en plastique et pesant moins de 5 kg. En fait, l'opération d'échantillonnage est une opération de formation de la formation de formation de la formation (recherche toutes les lignes du détail de la table, quel matériau \u003d "plastique" et poids< 5), а затем вертикальной проекции (извлечь Название и Количество из выбранных ранее строк).

    L'un des moyens fournissant accès rapide Les tables sont des index. L'index est une structure de base de données, qui est un pointeur à une ligne de table spécifique. L'index de la base de données est utilisé de la même manière que le pointeur d'index dans le livre. Il contient des valeurs extraites d'une ou plusieurs colonnes d'une ligne de table spécifique et d'un lien vers cette chaîne. Les valeurs de l'indice sont commandées, ce qui permet à la SGBM d'effectuer recherche rapide Dans la table.

    Supposons que la demande à l'entrepôt de base de données soit formulée:

    Sélectionnez Nom Quantité, Matériel

    Des détails

    Où numéro \u003d "T145-A8";

    Si les index n'existent pas pour ce tableau, vous devez afficher la totalité de la table à la demande SDMM, en choisissant séquentiellement une chaîne de celle-ci et en vérifiant chacune d'elles la condition de sélection. Pour de grandes tables, une telle demande sera effectuée depuis très longtemps.

    Si l'indice du numéro de table est pré-créé le numéro de détail, le temps de recherche dans la table sera réduit au minimum. L'index contiendra des valeurs de la colonne NUMBER et un lien vers la chaîne avec cette valeur dans la table de la table. Lors de l'exécution de la requête DBMS, il trouvera d'abord dans la valeur d'index "T145-A8" (et le rendra rapidement, car l'index est commandé et que ses lignes sont petites), puis par référence dans l'index déterminera la physique Emplacement de la ligne souhaitée.

    L'index est créé par l'opérateur d'index SQL Créer. Dans cet exemple, l'opérateur

    Créer des détails d'index index uniques

    Sur les détails (numéro);

    vous permet de créer un index avec le nom "Détails Index" sur le détail du numéro de la table de colonne.

    Pour l'utilisateur de la SGBD, les opérateurs SQL non séparés sont d'intérêt, mais une partie de leur séquence décorée comme un seul tout et a du sens de son point de vue. Chaque séquence de ces opérateurs SQL implémente une action spécifique sur la base de données. Il est effectué en quelques étapes, sur chacune desquelles certaines opérations sont effectuées sur les tables de base de données. Donc, dans le système bancaire, la traduction d'un certain montant d'un compte à court terme à long terme est effectuée dans plusieurs opérations. Parmi eux, la suppression du montant d'un compte à court terme est l'inscription à un compte à long terme.

    Si une défaillance survient dans le processus d'exécution de cette action, par exemple, lorsque la première opération est terminée, et le second - non, l'argent sera perdu. Par conséquent, toute action sur la base de données doit être entièrement remplie ou ne pas être effectuée du tout. Cette action a reçu un nom de transaction.

    Le traitement des transactions est basé sur un journal utilisé pour faire rouler la transaction et restaurer l'état de la base de données. De plus en détail sur la transaction sera dit dans Section.Transaction en cours .

    Complétez la discussion sur la langue SQL, nous soulignons une fois de plus que c'est la langue de la requête. Il ne peut être écrit sur un programme difficile qui fonctionne avec une base de données. À cette fin, la langue de la quatrième génération est utilisée dans la SGBD moderne (langue de génération - 4GL), qui a à la fois les principales possibilités de langues procédurales de troisième génération (3GL), telles que SI, Pascal, ADA et la capacité Pour intégrer des instructions SQL dans le texte du programme, ainsi que des outils de gestion d'interface utilisateur (menu, formulaires, entrée utilisateur, etc.). Aujourd'hui, la langue de 4gl est l'une des normes réelles pour développer des applications qui fonctionnent avec des bases de données.

    Avez-vous aimé l'article? Partager avec des amis: