Outils pour utilisateurs

Outils du site


store_data_safely:an_intro_to_sqlite_suite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
store_data_safely:an_intro_to_sqlite_suite [2013/10/31 10:33] – [20] auntieestore_data_safely:an_intro_to_sqlite_suite [2013/10/31 11:11] (Version actuelle) – [25] auntiee
Ligne 152: Ligne 152:
 The exam score will be zero if they have not sat the exam yet. To access the score, we need the combination of student_id and exam_id to be our unique (primary key). This is a slightly tricky case, because we don't allow a student to take the same exam twice, but the data structure means that we need to accept duplicate student_id's and duplicate exam_id's, but reject any combinations of the two which are not unique. This is a situation where a composite primary key has the effect we want.** The exam score will be zero if they have not sat the exam yet. To access the score, we need the combination of student_id and exam_id to be our unique (primary key). This is a slightly tricky case, because we don't allow a student to take the same exam twice, but the data structure means that we need to accept duplicate student_id's and duplicate exam_id's, but reject any combinations of the two which are not unique. This is a situation where a composite primary key has the effect we want.**
  
-Si nous avons une très grande base de données — plusieurs milliers de lignes dans plusieurs tables — les performances s'en ressentiront. Dans ce cas, nous devrions examiner comment nous utilisons notre base de données, en particulier en ce qui concerne les jointures, et utiliser le menu Index →  Créer un index. Ceci est susceptible d'accélérer les requêtes, au détriment d'une petite pénalité pour les mises à jour de la base de données (nous devons maintenir chaque index supplémentaire).+Si nous avons une très grande base de données — plusieurs milliers de lignes dans plusieurs tables — les performances s'en ressentiront. Dans ce cas, nous devrions examiner comment nous utilisons notre base de données, en particulier en ce qui concerne les jointures, et utiliser le menu Index →  Créer un index. Ceci est susceptible d'accélérer les requêtes, au détriment de la facilité des mises à jour de la base de données (nous devons maintenir chaque index supplémentaire).
  
 La dernière fonctionnalité importante qui peut être utilisée est l'instruction TRIGGER – quand il est souhaitable qu'un événement de base de données « déclenche » une suite d'actions. C'est vraiment un sujet assez avancé et je vous renvoie ailleurs ! La dernière fonctionnalité importante qui peut être utilisée est l'instruction TRIGGER – quand il est souhaitable qu'un événement de base de données « déclenche » une suite d'actions. C'est vraiment un sujet assez avancé et je vous renvoie ailleurs !
Ligne 186: Ligne 186:
 CREATE TABLE "Texamens" ("id_etudiant" CHAR NOT NULL, "id_examen" CHAR NOT NULL, "note" INTEGER DEFAULT 0, PRIMARY KEY ("id_etudiant", "id_examen")) CREATE TABLE "Texamens" ("id_etudiant" CHAR NOT NULL, "id_examen" CHAR NOT NULL, "note" INTEGER DEFAULT 0, PRIMARY KEY ("id_etudiant", "id_examen"))
  
-Nous devrions vraiment déclarer id_etudiant comme clé étrangère afin qu'il soit validé par rapport à Tetudiant, et de façon similaire id_examen devrait être une clé étrangère afin qu'il soit validé par rapport à Tnom_examen . Donc, nous supprimons (avec DROP Texamens) et exécutons l'instruction SQL suivante ; comme vous pouvez le voir, elle est effectivement similaire à notre précédente rencontre avec les clés étrangères :+Nous devrions vraiment déclarer id_etudiant comme clé étrangère afin qu'il soit validé par rapport à Tetudiant, etde façon similaireid_examen devrait être une clé étrangère afin qu'il soit validé par rapport à Tnom_examen. Donc, nous supprimons (avec DROP Texamens) et exécutons l'instruction SQL suivante ; comme vous pouvez le voir, elle est effectivement similaire à notre précédente rencontre avec les clés étrangères :
  
 CREATE TABLE "Texamens" ("id_etudiant" CHAR NOT NULL, "id_examen" CHAR NOT NULL, "note" INTEGER DEFAULT 0, CREATE TABLE "Texamens" ("id_etudiant" CHAR NOT NULL, "id_examen" CHAR NOT NULL, "note" INTEGER DEFAULT 0,
Ligne 198: Ligne 198:
 FOREIGN KEY("id_examen") REFERENCES Tnom_examen ("id_examen")); FOREIGN KEY("id_examen") REFERENCES Tnom_examen ("id_examen"));
  
-(En fait , ce n'est pas tout à fait correct car SQLite permet que des caractères soient stockés dans des colonnes numériques, donc l'instruction CHECK ne fonctionnerait pas correctement ; nous pourrions résoudre ce problème avec une instruction CHECK plus compliquée, mais cela n'ajouterait rien à la lisibilité. Donc, nous allons le laisser comme ça).+(En fait , ce n'est pas tout à fait correctcar SQLite permet que des caractères soient stockés dans des colonnes numériques, donc l'instruction CHECK ne fonctionnerait pas correctement ; nous pourrions résoudre ce problème avec une instruction CHECK plus compliquée, mais cela n'ajouterait rien à la lisibilité. Donc, nous allons le laisser comme ça).
  
 ====== 23 ====== ====== 23 ======
Ligne 210: Ligne 210:
 Nous pouvons saisir tous les cas de test en utilisant INSERT, et ils devraient tous se comporter correctement. Nous pouvons saisir tous les cas de test en utilisant INSERT, et ils devraient tous se comporter correctement.
  
-Avec notre dernière table, nous sommes en mesure de faire quelque chose de typique. Le collège a quelques règles assez arbitraires, qui changent de temps en temps, donc elles n'ont pas vraiment besoin d'être forcées par la base de données. Par exemple : « Aucun étudiant ne peut s'inscrire pour M829 sans avoir réussi M823 auparavant. » C'est facile à faire en SQL avec un peu de décision dans un programme.+Avec notre dernière table, nous sommes en mesure de faire quelque chose de typique. Le collège a quelques règles assez arbitraires, qui changent de temps en temps et elles n'ont donc pas vraiment besoin d'être appliquées par la base de données. Par exemple : « Aucun étudiant ne peut s'inscrire pour M829 sans avoir réussi M823 auparavant. » C'est facile à faire en SQL avec un peu de décision dans un programme.
  
-Comme légère variation, j'ai fourni une version qui s'exécute dans un écran de terminal ; elle pourrait facilement être convertie en un script bash. Beaucoup de programmes peuvent avoir la base de données ouverte, simultanément.+Comme légère variation, j'ai fourni une version qui s'exécute dans un écran de terminal ; elle pourrait facilement être convertie en un script bash. La base de données peut être ouverte dans beaucoup de programmes simultanément.
  
 ====== 24 ====== ====== 24 ======
Ligne 304: Ligne 304:
 http://zetcode.com/db/sqliteruby/ - Ruby. http://zetcode.com/db/sqliteruby/ - Ruby.
  
-http://zetcode.com/db/sqlitecsharp/ - C #.+http://zetcode.com/db/sqlitecsharp/ - C#.
  
 http://zetcode.com/db/sqlitevb/ - Visual Basic. http://zetcode.com/db/sqlitevb/ - Visual Basic.
  
 http://en.wikipedia.org/wiki/List_of_relational_database_management_systems - Seulement d'intérêt général. http://en.wikipedia.org/wiki/List_of_relational_database_management_systems - Seulement d'intérêt général.
store_data_safely/an_intro_to_sqlite_suite.1383212014.txt.gz · Dernière modification : 2013/10/31 10:33 de auntiee