Base de donnée relationnelle

Bonjour à tous,

je me pose une question car je suis sur le chapitre des bases de données.

J’ai crée:
une class "division"et un viewController division
une class "eleve"et un viewController élève

J’ai un dashboard avec une tableView faisant apparaitre toutes les divisions créées en BD comme dans le cours. Si dans le viewcontroller de ma class division je mets une tableView que je remplis d’élève en utilisant la même méthode, chaque division est bien liée aux élèves entrés? Je veux dire par là que la liste d’eleve est bien liée au numéro d’index de la table classe?
Si je supprime ma division, cela efface-t-il les élèves? Je peux faire des stats et des calculs pour une division pour ces élèves là?

Ensuite, je ne sais pas si Maxime a prévu d’envisager cela mais, j’ai beaucoup de données élèves sous forme excel et l’import automatique serait très appréciable!

Merci de vos éclaircissements.

PS: j’ai modifié les fautes que je n’avais pas vues, notamment dans le titre.

Salut,

Tout dépend de ce que tu utilises comme base de données.

Avec Realm, tu peux regarder de ce côté : https://realm.io/docs/swift/latest/#relationships.
Cependant, (sauf erreur) Realm ne supporte pas le cascading pour le moment, il faudra donc faire les choses manuellement. Tu peux suivre le bug #1186 pour des exemples de code et/ou suivre l’avancement de la feature.

Avec SQLite, il faudra que tu regardes du côté des Foreign Keys (https://sqlite.org/foreignkeys.html) et dans ton cas, plus particulièrement du côté des clauses ON DELETE CASCADE et ON UPDATE CASCADE (chapitre 4.3 du lien précédent).

Les autres BDD comme MySQL, MariaDB ou PostgreSQL ont des fonctionnalités similaires.

Pour ton import à partir d’un fichier Excel, je te recommande d’exporter tout d’abord tes données en format CSV depuis Excel, ça sera plus simple à traiter ensuite. La logique est assez simple :

  • Tu ouvres le fichier ;
  • Tu le lis ligne par ligne ;
  • Pour chaque ligne, tu splittes les colonnes en fonction d’un séparateur (en général, tabulation ou ; ) ;
  • Tu crées un objet en fonction des champs ainsi récupérés.

Il existe sans doute des librairies qui font ça facilement (ou des exemples de code tout fait), une recherche Google devrait t’aider :slight_smile:

2 « J'aime »

Merci François pour ton retour. Je vais regarder tout ça.