Qu'est-ce qu'une base de données relationnelle? [fermé]

9

Je suis principalement un administrateur système et je ne travaille pas directement avec des bases de données autres que leur installation, la configuration de comptes, l'octroi de privilèges, etc. J'ai réalisé que si The Boss s'approchait de moi et me demandait: "Qu'est-ce qu'une base de données relationnelle?" Je ne pourrais probablement pas donner une réponse satisfaisante ... Je marmonnerais peut-être quelque chose sur les données stockées et organisées par catégories que vous pouvez interroger avec un langage de programmation spécial (c'est-à-dire SQL).

Alors, quelqu'un pourrait-il donner une bonne "réponse de patron" pour ce qu'est une base de données relationnelle? Et peut-être en quoi est-ce différent de simplement stocker des données sur un serveur de fichiers? Points bonus pour des analogies intelligentes mais accessibles et expliquant les tableaux, colonnes, enregistrements et champs. Je définirais une «réponse de patron» comme une explication rapide (peut-être deux) de paragraphe pour les gens non techniques ... surtout votre patron, en de rares occasions, ils vous demandent en fait ce que vous faites toute la journée.


la source
2
Je ne suis pas sûr que le défaut de serveur soit le bon endroit pour cette question, bien qu'il soit utile. Peut-être DBA.SE ou Programmers.SE .
Orbling
1
Pourquoi votre patron poserait-il une telle question et, plus important encore, qu'est-ce que cela a à voir avec l'administration du système?
John Gardeniers
1
@John Gardeniers, il peut appartenir ici parce que de nombreux «administrateurs système» portent un chapeau «d'administration de base de données», ce qui signifie qu'ils ont une bonne compréhension du fonctionnement du SGBDR. Quant à savoir pourquoi les patrons posent des questions qu'ils font, qui sait, mais savoir comment communiquer clairement les concepts est une bonne chose à l'OMI.
Zoredache
1
@Zoredache, dans mon travail, je porte de nombreux chapeaux. Cela ne signifie pas qu'ils sont tous au sujet de SF.
John Gardeniers
Les réponses ci-dessous sont très bonnes, mais gardez à l'esprit que vous pouvez avoir des bases de données non relationnelles (telles que btrieve) et maintenir des relations entre les données normalisées via une logique d'application appropriée.
Mark Henderson

Réponses:

16

Une base de données relationnelle ne se contente pas de stocker des données : elle stocke les relations entre les données et facilite (enfin, plus facilement) l'utilisation de ces relations. Dans les premiers jours de la terminologie de la base de données relationnelle, les tables étaient appelées "relations" car elles stockaient des bits de données associés (champs, maintenant colonnes), ainsi que les relations entre cette relation et d'autres relations.

La normalisation est l'acte de relations sans complication: "Rendez tout aussi simple que possible, mais pas plus simple." (Alan Perlis) Parfois "... mais pas plus simple" signifie que nous ne stockons pas les choses complètement normalisées, parce que "plus simple" finit par être plus complexe. (Vous pouvez dériver l'état du code postal, mais pourquoi s'embêter?)

geekosaure
la source
10

Une base de données relationnelle est une méthode de structuration des données afin qu'un seul fait soit stocké en un seul endroit. Donc, si John et Jane Doe travaillent tous les deux pour la même entreprise, vous ne stockerez que les détails propres à l'entreprise en un seul endroit (tableau). Vous stockeriez des données propres à John et Jane dans un autre endroit, et vous stockeriez les relations de John et Jane avec l'entreprise dans un troisième endroit. Dans le monde idéal, cela devrait signifier que je ne dois modifier qu'un seul champ / ligne si le numéro de fax de l'entreprise a changé.

Veuillez comprendre que toutes les bases de données hébergées dans un SGBDR ne sont pas correctement normalisées. Les compromis sont faits pour des raisons de performances et autres.

Voir l'article sur la normalisation de la base de données. http://en.wikipedia.org/wiki/Database_normalization

Zoredache
la source
4

Il existe deux concepts principaux pour distinguer les systèmes de bases de données de relations. Le premier est que les relations entre les éléments sont stockées. C'est le modèle de tableau des données, expliqué via l'analogie du tableur. Les SGBDR deviennent plus complexes que les feuilles de calcul, car il est plus facile et courant d'avoir de nombreuses références entre les tables ou les feuilles de calcul (selon le côté de l'analogie que vous utilisez).

La seconde est que les SGBDR mettent en œuvre l’idée d’une transaction, les propriétés ACID de

  • atomicité,
  • cohérence,
  • l'isolement, et
  • durabilité

Le modèle relationnel permet d'inclure, de rechercher, de trier, de regrouper, etc., de nombreuses relations complexes. Le modèle transactionnel s'assure que les transactions se produisent complètement ou pas du tout, en maintenant le modèle de relation cohérent et précis. Eh bien, au moins, il est possible pour une programmation correcte de le garder.

mpez0
la source
3

Une base de données relationnelle est comme un classeur Excel avec de nombreuses feuilles de calcul et un environnement logiciel environnant pour effectuer des optimisations de performances telles que l'indexation et la mise en cache, imposer un accès sécurisé par de nombreux utilisateurs en même temps et vous permettre d'afficher efficacement les données qui peuvent être réparties sur de nombreuses feuilles de calcul différentes.

Joel Coel
la source
1

Une base de données relationnelle est un outil de stockage et de récupération de données stockées dans un modèle relationnel.

Un modèle relationnel de données est construit selon un petit nombre (selon le livre que vous lisez, 4 ou 5 règles) qui garantissent que les données sont accessibles de manière cohérente, ce qui permet de prouver l'exactitude de la conception et qui permet le système de gestion de base de données (SGBD) pour effectuer la plupart du travail de récupération rapide des données. Il fournit également des outils pour documenter formellement la structure des données - la mise en œuvre d'une base de données implémente intrinsèquement la plupart de la documentation.

La plupart des gens ne comprennent pas pourquoi l'exactitude est importante - cela signifie que les bogues sont moins susceptibles d'être introduits dans le développement d'une solution - et que (par exemple) 2 programmeurs différents travaillant dans des domaines similaires sont moins susceptibles de dupliquer l'effort.

En tant qu'entité distincte du front-end de l'application et avec une vue cohérente de la structure des données, l'utilisation d'un système de gestion de base de données permet d'utiliser différents outils au front-end à des fins différentes - vous pouvez donc en faire beaucoup plus d'utilisation de composants standard lors de la création d'une solution.

Il existe d'autres modèles que le relationnel pour le stockage des données - mais aucun (selon mon expérience) ne se rapproche à la fois par sa simplicité, sa flexibilité et sa disponibilité d'outils pour développer et gérer vos données.

symcbean
la source
1

Une réponse 100% non technique:

Une base de données relationnelle est un endroit pour stocker des données de manière à minimiser la redondance et à vous permettre de la rechercher facilement.

Supposons une base de données pour une animalerie. Le magasin a des articles, des clients et des ventes. Si nous devions mettre cela dans Excel, vous pourriez avoir ceci pour les colonnes:

Nom du client | Numéro de téléphone du client | Adresse client | Article acheté | Prix ​​| Date

La première cliente, Mme Smith, achète de la nourriture pour chats:

Nom du client | Numéro de téléphone du client | Adresse client | Article acheté | Prix ​​| Date
Mme Smith | 123-555-1234 | 10 rue Main | Nourriture pour chat | 15 $ | 2011-03-11

Et puis Mme Smith voudrait aussi un jouet pour chat:

Nom du client | Numéro de téléphone du client | Adresse client | Article acheté | Prix ​​| Date
Mme Smith | 123-555-1234 | 10 rue Main | Nourriture pour chat | 15 $ | 2011-03-11
Mme Smith | 123-555-1234 | 10 rue Main | Jouet pour chat | 1 $ | 2011-03-11

Et elle revient essentiellement toutes les 2 semaines environ et achète les mêmes choses. Avec cette méthode, vous dupliquez beaucoup d'informations, ce qui peut entraîner des erreurs. Vous ne pouvez pas non plus y stocker un inventaire, il doit s'agir d'une autre feuille Excel et celle-ci devra être mise à jour à chaque vente.

Avec une base de données, nous pourrions avoir trois entités distinctes: les clients (avec leurs informations), les articles (avec une description et un prix) et la vente (un lien entre les clients et les articles, avec une date et une quantité).

MPelletier
la source
Aussi, il est très important de mentionner: pinaldave.com/blogfolder/dilbert5.jpg
MPelletier
1

Quelques bonnes réponses techniques ici. Mais mon patron ne comprendrait aucun d'eux!

Je commencerais par une explication extrêmement simple: «Si vous enregistrez vos données dans un fichier, elles apparaissent comme une longue liste. Une base de données relationnelle enregistre les données plus comme une carte ou un graphique, donc différentes parties de la carte se lient les unes aux autres ...

Et un exemple - '.... par exemple, votre nom est lié à votre adresse, qui à son tour pourrait être liée à votre ville.'

Suivi par les avantages commerciaux dont il se soucie - «L'avantage de cela est qu'il est beaucoup moins cher d'écrire du code pour extraire des données compliquées, par exemple« Trouvez-moi toutes les personnes qui vivent à Seattle dont le nom de famille est Smith ». Les bases de données relationnelles sont également très fiables et rapides. »

Et terminer avec une déclaration de crédibilité - «Les bases de données relationnelles existent depuis de nombreuses années, sont des technologies très matures. Notre produit particulier est [nom du produit ici] ».

Jon White
la source
0

Mon patron est le DBA, mais en termes simples:

Pensez à deux tableaux dans Excel et à la fonction LOOKUP pour référencer des éléments d'un tableau à un autre. Maintenant, augmentez cela d'au moins un facteur 10.

Cela concerne le niveau informatique de certaines personnes et du travail.

thing2k
la source