Clés étrangères et NULL dans mySQL
Puis-je avoir une colonne dans ma table des valeurs (valeur) la référence de clé étrangère à knownValues table, et laissez-le être NULLE en cas de besoin, comme dans l'exemple:
Tableau: les valeurs
product type value freevalue
0 1 NULL 100
1 2 NULL 25
3 3 1 NULL
Tableau: types de
id name prefix
0 length cm
1 weight kg
2 fruit NULL
Table: knownValues
id Type name
0 2 banana
Remarque: Les types dans le tableau values
& knownValues
sont bien sûr référencé dans la types
table.
source d'informationauteur Industrial
Vous devez vous connecter pour publier un commentaire.
Les valeurs null dans les clés étrangères sont parfaitement acceptables. Traiter avec des valeurs Null dans les clés étrangères est délicat, mais cela ne signifie pas que vous modifiez ces colonnes NON NULLES et insérez factice ("N/A", "Inconnu", "Sans Valeur", etc) enregistrements dans les tables de référence.
En utilisant les valeurs Null dans les clés étrangères exige souvent que vous utilisez GAUCHE/DROITE se JOINDRE au lieu de JOINTURE INTERNE.
Bien que vous pouvez faire des colonnes de clé étrangère nullable je dirais que c'est généralement préférable de conception de tableaux sans nullable clés étrangères. Les valeurs null conduisent invariablement à des ambiguïtés et des résultats incorrects, mais c'est d'autant plus un problème si les colonnes en question devraient être soumis à certaines contraintes.
C'est un 1 à zéro à plusieurs relations. J'ai utilisé à de nombreuses reprises avec SQL Server. Je crois qu'il est possible de le faire avec MySQL.
Je préfère éviter les valeurs Null dans mes bases de données en raison de problèmes liés à l'agrégation de données, donc, selon ma conception, j'ai mis un INCONNU de la ligne dans la table de recherche.
Oui, il est tout à fait possible d'avoir une valeur NULL dans votre clé étrangère contrainte de colonne. Je l'ai juste essayé. Gardez à l'esprit que si vous n'êtes pas en utilisant le moteur de stockage MyISAM, vos contraintes de clé étrangère sera ignorée de toute façon.
Bien sûr, il est une des possibilités de ti ont des valeurs NULL dans la clé étrangère, mais pour ne pas vous inquiéter à ce sujet, j'espère que vous peut utiliser MyISAM comme moteur de base de données pour gérer les contraintes de Clé. Pour ce cas, je suggère d'utiliser une Jointure Gauche ou de Droite se rejoignent pour obtenir les lignes de la DB et de Groupe peut être utilisé pour éviter les doubles emplois. S'il vous plaît ne pas utiliser une Jointure Interne.