2009-12-10 10 views
0

J'ai deux tables 'Elements' et 'Lists' Listes a une clé primaire et un nom de liste. Les éléments ont des données relatives à une entrée individuelle de la liste.Clé étrangère Utile dans SQLite?

éléments a besoin d'une colonne qui contient la liste qui l'élément est.

J'ai lu contrainte de clé étrangère de SQL et la figure qui est la meilleure façon de relier les tables, mais je l'utilise SQLite qui doesn ne pas appliquer la contrainte de clé foerign.

Y at-il un point à déclarer la contrainte de clé étrangère s'il n'y a pas d'application?

Répondre

2

Il est toujours bon de le faire, même si la base de données ne fait pas respecter la contrainte (ancienne MySQL, par exemple). Le raisonnement pour cela, c'est qu'un jour, quelqu'un va essayer de lire votre schéma (peut-être même vous-même).

Si vous ne pouvez pas utiliser la nouvelle version, vous pouvez toujours déclarer la contrainte et l'appliquer avec des déclencheurs. Dans les deux cas, je n'omettrais pas la notation. C'est trop utile.

2

De nos jours, sqlite applique des clés étrangères, téléchargez la nouvelle version.

+0

Quelle est la dernière version? Je dois utiliser sqlite3, est-ce que cela supporte les clés étrangères? – CodeFusionMobile

+0

Lisez ici, sqlite 3.6.19 applique des clés étrangères sans l'utilisation de déclencheurs: http://www.sqlite.org/foreignkeys.html – tuinstoel

0

Une clé étrangère est un domaine (ou champs) qui pointe vers la clé primaire de une autre table. Le but de la clé étrangère est d'assurer l'intégrité référentielle des données. En d'autres termes, seules les valeurs supposées apparaissent dans la base de données sont autorisées.

Il applique uniquement la "règle métier". Si vous avez besoin de cela du côté des entreprises, alors oui, c'est nécessaire.

L'indexation ne sera pas affectée.

Vous pouvez toujours créer des index comme requis.

Jetez un oeil à Foreign Key

et

Wikipedia Foreign key