Différence entre les relations un-à-un et un-à-plusieurs dans la base de données
C'est probablement une base(muet) de la question, mais quand on a une one-to-one relation dans une base de données de l'autre table a une clé étrangère ID(dans cet exemple). Et dans un un-à-plusieurs relation de la table contient plusieurs clés étrangères.
Mais la base de données ne sais pas si c'est un un-à-un ou un-à-plusieurs relation de droit? Les relations que j'ai faites dans un ER-Diagramme est seulement à indiquer l'endroit où il devrait être les clés étrangères lors de la prise de tables réelles?
Je ne suis pas complètement saisir l'idée de la relation, même si j'ai lu de nombreux tutoriels à ce sujet.
Merci d'avance.
source d'informationauteur LuckyLuke
Vous devez vous connecter pour publier un commentaire.
Dans un sens, toutes les relations que nous parlons ne sont pas connu à la base de données, ils sont des constructions que nous avons inventé de mieux comprendre comment concevoir les tables.
La grande différence en termes de structure de table entre un-à-un et un-à-plusieurs est que dans un-à-un, il est possible (mais pas nécessaire) d'avoir une relation bidirectionnelle, sens Une table peut avoir une clé étrangère dans la table B, et le tableau B peut avoir une clé étrangère dans l'enregistrement associé dans le tableau A. Ce n'est pas possible avec un un-à-plusieurs relations.
Un-à-un les relations associer un enregistrement dans une table avec un seul enregistrement dans l'autre table. Un-à-plusieurs relations associer un enregistrement dans un tableau avec le nombre d'enregistrements dans l'autre table.
Pour permettre à un-à-un lien que vous devez ajouter unique contrainte de clé étrangère. Il n'est pas possible d'avoir deux clés étrangères pour chaque tableau, il sera impossible de créer des dossiers.
Im avoir de la difficulté à comprendre ce que la question réelle est.
Votre analyse est, pour la plupart, de corriger, dans la mesure où si vous avez un 2 tables, et table2 a une clé étrangère vers la table, il pourrait être un un-à-un ou plusieurs-à-un.
Votre phrase "Et en un un-à-plusieurs relation de la table contient plusieurs clés étrangères."
De la table du côté "beaucoup" contient toujours une colonne qui est une clé étrangère, c'est juste que plus d'une ligne peut avoir la même valeur de clé étrangère (nombre de lignes point à l'un des parents).
Notez également que vous pouvez mettre la clé étrangère sur la table parent, de l'enfant, au lieu de l'inverse. De cette façon, vous pouvez éviter un-à-plusieurs si vous voulez le faire. Notez également que, de cette façon, plus d'un parent peuvent partager un enfant, ce qui pourrait ou ne pourrait pas être ce que vous voulez.
La base de données de niveau équivalent de 1:1 et 1:m est d'avoir un index unique sur la colonne de clé étrangère. Notez que cela ne fonctionne que pour 1:1, 1:0..1, comme
null
est considéré lors de l'évaluation de l'unicité. Il existe des solutions pour contourner cette restriction, mais c'est au niveau de base.bien, vous avez raison, cette relation est importante pour vous, mais pas pour la db. Lorsque vous avez deux tables, l'une avec vos informations de base, et une autre avec vos informations détaillées.. pour les deux tables, vous êtes, vous, de sorte qu'il est une relation, vous ne pouvez pas mapper vos données à quelqu'un d'autre.
Maintenant ajouter de la table "villes" et l'un de vos points d'information de la ville où vous habitez - cela est un exemple de l'un-à-plusieurs (une ville peut être utilisé et doit être utilisé pour beaucoup de gens).
un-à-plusieurs /un-à-un juste à montrer comment vos tables interagir. Et tout le temps, vous voulez "sauver" les lignes/colonnes dans le tableau de ne pas les dupliquer, vous allez utiliser un-à-plusieurs relation avec une autre table. Ou plusieurs-à-plusieurs 🙂
De la même manière par exemple, un produit qui n'a qu'un seul code de produit, donc c'est une relation (produit <-> ABC123), mais un client peut acheter plus d'un produit, il est donc l'un-à-plusieurs relations (personne <->>>produit).
Supposons que vous avez une table avec deux attributs A et B. Si A est une clé candidate et B n'est pas la relation entre A et B est de 1 à plusieurs. Si A et B sont des candidats clés de la relation de 1 à 1.
De la table A et B si
La meilleure approche est de rendre la clé primaire de B est également une clé étrangère référençant A. il est également appelé "une Table par Type d'Héritage" et le "est" une relation. Il existe d'autres moyens pour appliquer une unique clé étrangère, mais à l'aide de la clé principale qui rend la relation clairement dans le schéma et dans ER diagrammes.
Sûr il y a toujours d'autres scénarios, et si votre design n'est pas satisfaire aux deux critères ci-dessus, vous devrez utiliser une autre approche.