Que signifie « relationnel » dans « base de données relationnelle » signifie pour nous?

StackOverflow https://stackoverflow.com/questions/1689867

  •  18-09-2019
  •  | 
  •  

Question

Je sais, base de données relationnelle est une base de données où les champs d'une table sont des liens vers des lignes dans les autres, quelque chose comme ça.

Mais je ne comprends pas ce que cela signifie pour moi en tant que développeur web!

Comme je sais, une requête avec des jointures et imbriquées select peut réduire perfomance (en particulier les requêtes de style avec drupal des dizaines de jointures). Plus encore, toutes les requêtes de base de données sont les goulots d'étranglement, et vous avez beaucoup d'utilisateurs que vous devez mettre en cache toutes les requêtes de sélection.

Si vous mettez en cache toutes les requêtes de sélection, il est préférable de mettre en cache les requêtes simples plutôt que compliquée. Vous pouvez cache "select * from tbl1 où id = 123" et "select * from tbl2 où id = 456" ou "select * from tbl1, tbl2 où ...", mais si vous choisissez la deuxième façon, vous besoin de mettre en cache toutes les combinaisons d'objets -. il est pas cool

Ok, maintenant, nous utilisons seulement très simples requêtes comme "select * from tbl1 où id = 123" de "select id de l'ordre TBL1 par limite id 0, 30" et les mettre en cache (ou nous pouvons mettre en cache que le premier type de requêtes, peu importe). Il requêtes et non moins INSERT simples, DELETE et UPDATE sont tout ce dont nous avons besoin et tout ce que nous utilisons!

Comme on peut le voir, toute la logique relationnelle sont dans la langue principale de l'application, pas dans SQL. Alors, pourquoi avons-nous besoin de toutes ces choses relationnelles? Que signifient-ils? Qu'est-ce que le type « relationnel » a ce que l'autre type n'a pas, mais il est nécessaire? Si nous n'utilisons des fonctionnalités relationnelles, pourquoi tout le monde utilisent encore MySQL ou quelles que soient bases de données relationnelles, même s'il se soucient de la perfomance?

Ce type de bases de données est devenue une norme. Pourquoi? Je n'ai aucune idée. Je l'ai presque jamais entendu parler de quelqu'un en utilisant la base de données non relationnelle, sauf dans le GAE.

Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Si vous voulez en savoir plus sur ce que signifie relationnel, je recommande le livre « SQL et La théorie relationnelle » par date CJ.

Relational dans ce contexte ne pas se rapportent aux relations. Il fait référence à relations qui sont essentiellement ce que les tables sont appelées dans les théories mathématiques qui ont conduit à la modèle relationnel .

La raison pour laquelle les bases de données relationnelles sont devenues omniprésentes est qu'ils sont la solution la plus fins générales pour l'organisation des données avec un minimum de redondance.

Il y a des raisons valables d'utiliser des solutions non relationnelles. Ils résolvent souvent très bien des tâches spécifiques de gestion des données, mais sont faibles dans d'autres domaines. Alors que les bases de données relationnelles et SQL trouver un compromis, la résolution d'un ensemble de problèmes plus adéquatement, avec moins de zones de faiblesse.

D'autres technologies actuellement disponibles qui ne sont pas basés sur le modèle relationnel sont répertoriés dans « La Next-Gen bases de données ».

Autres conseils

Je suis confus par votre question. Sinon, comment vous vous propose de garder une trace de la façon dont différents tableaux se rapportent les uns aux autres?

par exemple, j'ai une liste des voitures, et une liste de personnes, et je dois vous connecter quelle personne possède chaque voiture, donc j'ai une colonne car_id dans la base de données de personnes. Comment proposerait le suivi de ces relations

En outre, vous dites que vous voulez mettre en cache « toutes les requêtes sont les goulots d'étranglement » et que vous voulez mettre en cache des requêtes « simples ». Cependant, je suis sûr à 90% que le fait de plusieurs petites requêtes sera plus de ressources que de faire plusieurs petites requêtes. vous aussi ne pas mettre en cache toutes les combinaisons, seuls ceux qui existent réellement. dans mon exemple, quel est le problème avec une requête comme ça?

SELECT person.*, car.* from person left join on car where person.car_ID = car.ID

Les bases de données relationnelles sont devenus la base de données de fait pour plusieurs raisons.

  1. La mise en place des contraintes primaires, étrangères et unique impose certaines règles commerciales aux

    les plus bas niveaux, permet d'assurer integrety de données et rend les relations de base de données facilement compréhensibles pour à peu près tous les niveaux de l'informatique professionnelle.
  2. Une base de données relationnelle bien conçu est en fait plus rapide dans les coulisses pour de nombreux processus (pas tous).

  3. La interrogation base de données relationnelle est assez rapide à apprendre et facile à faire.

  4. Bases de données relationnelles aide des données de limite double emploi, et du point de vue de l'ingénierie de données, qui est une chose merveilleuse.

et bien d'autres, mais ce sont quelques-uns.

Si vous n'utilisez pas les relations, vous devez stocker tout dans une table géante avec de nombreux nombre de colonnes. Vous pouvez aussi utiliser un cube de données (je pense?)

Il vous permet de normaliser vos données et supprimer redanancy. Plutôt que de stocker toutes les données dans une table plate (comme une feuille de calcul Excel), vous stockez des données disparates dans des tables séparées, puis rapportez les uns aux autres.

Par exemple, vous pouvez stocker les utilisateurs dans une table des utilisateurs et des produits dans une table de produits et utiliser une table de relation de relier l'utilisateur qui a ordonné quels produits.

  

UserA -> ProduitA

     

UserA -> ProductB

     

UtilisateurB -> ProduitA

     

UtilisateurC -> ProductB

Avec des données normalisées, cela signifie que si les données changent, il n'a besoin que d'être mis à jour en un seul endroit. Si un utilisateur change son nom, seulement que les changements d'enregistrement de l'utilisateur. Si un prix du produit doit être élevé, mais seulement que les changements d'enregistrement du produit. Vous n'avez pas à parcourir votre table à plat à la recherche de données en double pour remplacer.

Valya, si les données de votre application ne seront pas ajoutés à, mis à jour ou supprimer, puis un cache est la plus rapide pour la recherche et l'afficher. Je suis curieux de savoir ce que ces données est que tout le monde est si pressé de voir, mais ne sera pas mise à jour? Peut-être que certains détails pourraient vous aider. Je connais quelqu'un qui a stocké toute sa base de données en mémoire avec un cache d'écriture immédiate, et oui, il a volé! Il est le seul développeur que je connaisse qui pourrait retirer ceci. Peut-être que vous avez besoin de réinventer le moteur de fusée, et peut-être que vous ne le faites pas.

Relation est le mot mathématique pour la table. Les colonnes sont en relation les uns avec les autres, sinon ils ne sont pas dans le même tableau.

Par exemple, deux chiffres sont en relation avec l'autre si elles diffèrent un multiple de 3. Ecrivons certains d'entre eux vers le bas: (0,0), (1,4), (2, -1), etc. . Vous voyez une collection de lignes apparaissent, ce qui est une table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top