Désolé pour la question de novice.
J'ai créé mes tables en utilisant Navigateur de base de données SQLite , mais:
Je ne sais pas comment puis-je spécifier mes clés étrangères à l'aide de l'application?
Comment créer un diagramme de relation entre les tables?
Je sais que cette question a été posée il y a longtemps mais je l'ai trouvée. Son construit directement dans l'interface graphique. Il vous suffit de faire glisser et de rendre ces onglets Nom, Type un peu plus petits pour faire de la place pour l'onglet Clé étrangère. Placez le pointeur de votre souris à la fin et faites glisser l'en-tête.
Ma version de SQLite Browser est la version 3.7.0.
Je ne pouvais pas trouver un moyen de définir des contraintes de clé étrangère en utilisant l'onglet "Structure de la base de données". Il est vivement recommandé de définir les définitions de table et les contraintes à l'aide d'un script plutôt que de les créer à l'aide de l'éditeur graphique. Il est ainsi beaucoup plus facile de créer de nouvelles bases de données et de suivre les modifications apportées au schéma.
A titre d'exemple, supposons que nous ayons deux tables: une définissant les noms de fichier et l'autre spécifiant la méthode utilisée pour la compression, nous pouvons ajouter une contrainte de clé étrangère à la table définition_fichier lors de la définition.
CREATE TABLE [compression_state] (
[compression_state_id] INTEGER PRIMARY KEY NOT NULL,
[value] TEXT NOT NULL
);
CREATE TABLE [file_definition] (
[file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[compression_state_id] INTEGER NOT NULL,
[name] TEXT NOT NULL,
FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id)
);
Cependant, par défaut, SQLite n'applique pas la contrainte. Par conséquent, chaque fois que vous vous connectez à la base de données, vous devez exécuter la commande suivante pour activer le contrôle de contrainte.
PRAGMA foreign_keys = ON;
Plus de détails dans la documentation .
Si les tables existent déjà et que vous ne souhaitez pas créer de script complet, aucune chance, SQLite ne prend pas en charge l'ajout de clés étrangères une fois la table générée, voir ici: Fonctionnalités SQL non prises en charge par SQLite Mettre en place
De la documentation SQLite:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER -- Must map to an artist.artistid!
);
et à la fin :
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Dans le navigateur de base de données pour environnement SQLite (v 3.8.0 - Sqlite v 3.9.2), lorsque vous ajoutez les champs de base de données pour la table track
avec Les colonnes PK, AI et autres, vous pouvez trouver une colonne de clé étrangère.
Dans cet exemple, vous ajoutez simplement artist(artistid)
dans la ligne trackartist
.
Ensuite, la contrainte de clé étrangère est créée.
Dans le navigateur de base de données, dans la fenêtre Modifier la définition de la table, vous pouvez double-cliquer sur la zone vide de la clé étrangère et une zone de texte s'active. Vous pouvez y ajouter votre clé étrangère.
Aller à la fenêtre de définition de la table
Cliquez sur le champ Ajouter
Nommez-le avec Type: Entier
Faites défiler à droite et trouver la colonne Forein Key
Double-cliquez sous la colonne Clé étrangère dans la nouvelle ligne.
Sélectionnez la table principale et son champ d'identification
Cliquez sur OK
Cliquez sur Ecrire les modifications
Les déclencheurs dans SQLite3 appliquent les contraintes de clé étrangère. Link https://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers vous aiderait à résoudre votre première question.