9
votes

Est-ce que obligatoire dans MySQL Workbench signifie que le champ de référencement ne peut pas être nul?

Je conçois de la base de données et je suis curieux de faire une case à cocher obligatoire dans MySQL Workbench signifie que ce champ devrait être nul ou à ce qui est obligatoire dans cette situation se référer?

Plus tard si nécessaire, je comprendrai une image de ce tableau dans lequel cette question s'est produite.

Chars de l'aide pour l'aide.

UPD:
Je dois dire qu'après avoir généré des modèles SQL et j'ai regardé les deux tables, je n'ai rien vu différent. Je commence à penser que cette option obligatoire ne s'affiche que visuellement, mais de manière fonctionnelle, cela ne signifie rien.

Si je me trompe, quelqu'un s'il vous plaît aider. Réservoirs à nouveau.


2 commentaires

... Créez une base de données du modèle et voyez par vous-même?


C'est en fait une bonne idée. Va essayer ça.


3 Réponses :


0
votes

Très probablement, cela signifie que la valeur de champ ne peut pas être null . Je dis très probablement parce que je ne trouve pas le mot "obligatoire" nulle part dans MySQL Workbench ici.


1 commentaires

Lorsque vous créez une relation et double-cliquez dessus, vous pouvez le trouver dans la deuxième onglet. Peut-être que ce serait plus clair.



2
votes

Je suis arrivé à une conclusion qu'il s'agit simplement d'un effet visuel à montrer que la relation est obligatoire. Cette option n'affecte pas le code SQL généré de toute façon.


2 commentaires

exactement! Après des heures de confusion, j'ai atteint le même argument. MySQL elle-même, soutenait ce concept du tout?


Vous n'êtes pas correct si vous définissez la table référencée comme obligatoire, l'ID de référencement est défini sur NN (pas NULL).



9
votes

OK, je l'ai trouvé.

Disons que vous avez une table appelée utilisateur et une seconde appelée adresse et vous souhaitez faire une relation entre eux. L'exemple pourrait ressembler à ceci:

utilisateur
id
nom

adresse
id
user_id
rue

Vous avez donc une clé étrangère dans adresse pour l'utilisateur . Si vous faites cette relation, tous les champs sont obligatoires, donc user_id est un champ de clé primaire qu'il n'est pas null, et adresse - ID est même La même chose, mais qu'est-ce que adresse - user_id ? Est-ce vraiment une partie de la clé primaire dans adresse ? Non, cela ne vous aide pas à identifier une ligne dans cette table. Donc l'adresse - user_id pourrait être null, vous n'avez peut-être qu'un adresse ou le tableau adresse est même référencé. par une compagnie de table.

Le truc est, la case à cocher obligatoire sur la "table de référencement" -Sside est uniquement destinée aux effets visuels, à l'opposé de la case à cocher de la "table référencée" -Sside permet au champ nullable ou non.

Si obligatoire, l'adresse de champ-user_id ne pourrait jamais être null. Si ce n'est pas obligatoire, le champ peut être nul pour une rangée de données et aucune contrainte ne sera affectée.


1 commentaires

"Effets visuels" C'est une véritable façon de dire que MySQL Workbench est vraiment suce ici. Après des heures de googling, j'ai trouvé cette bande de roulement. Devrais-je aussi dire que toutes les relations "obligatoires" à une seule ou à une ou plusieurs relations WBNCH (pour ... HMM ... "Effets visuels") sont en fait un à deux zéro-ou-plusieurs? Il n'y a pas de mécanisme dans les RDBMS pour faire respecter un parent d'avoir au moins un enfant. Merci pour ce fil, les gars ...