Environnement
Java 1.6
La machie virtuelle pour cette version peut être téléchargé sur le site officiel de java (Windows et Linux) ou ici (Mac OS X).
Description
Pour la persistance dans la base de données il faut 6 tables:
- une table pour les auteurs
CREATE TABLE `authors` (`id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL, `givenName` varchar(100) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- une table pour les livres
CREATE TABLE `books` ( `isbn` varchar(20) NOT NULL, `title` varchar(100) NOT NULL, `publisherId` int(11) NOT NULL, `languageId` int(11) NOT NULL, `categoryId` int(11) NOT NULL, `isRead` tinyint(1) NOT NULL default '0', PRIMARY KEY (`isbn`), KEY `languageId` (`languageId`), KEY `editorId` (`publisherId`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- une table pour les catégories
CREATE TABLE `categories` ( `id` int(11) NOT NULL auto_increment, `code` varchar(10) NOT NULL, `label` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- une table pour les langues
CREATE TABLE `languages` ( `id` int(11) NOT NULL auto_increment, `code` varchar(3) NOT NULL, `label` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; INSERT INTO `languages` VALUES (1, 'ES', 'Spanish'); INSERT INTO `languages` VALUES (2, 'FR', 'French'); INSERT INTO `languages` VALUES (3, 'DE', 'German'); INSERT INTO `languages` VALUES (4, 'GB', 'English'); INSERT INTO `languages` VALUES (5, 'LU', 'Luxembourgish');
- une table pour les éditeurs
CREATE TABLE `publishers` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- une table lien auteurs / livres
CREATE TABLE `authors_books` ( `authorId` int(11) NOT NULL, `bookIsbn` varchar(20) NOT NULL, PRIMARY KEY (`authorId`,`bookIsbn`), KEY `bookIsbn` (`bookIsbn`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Sur ces tables il y a les contraintes suivantes:
- Contraintes pour la table auteurs / livres
ALTER TABLE `authors_books` ADD CONSTRAINT `authors_books_ibfk_2` FOREIGN KEY (`bookIsbn`) REFERENCES `books` (`isbn`), ADD CONSTRAINT `authors_books_ibfk_1` FOREIGN KEY (`authorId`) REFERENCES `authors` (`id`);
- Contraintes pour la table livres
ALTER TABLE `books` ADD CONSTRAINT `books_ibfk_2` FOREIGN KEY (`languageId`) REFERENCES `languages` (`id`), ADD CONSTRAINT `books_ibfk_1` FOREIGN KEY (`publisherId`) REFERENCES `publishers` (`id`);
Le fichier SQL de création peut être téléchargé ici.
Modèles
- Modèle conceptuel selon Merise

- Modèle logique selon Merise

- Diagramme UML
