SQL Base de données de la bibliothèque


Exemple

Dans cet exemple de base de données pour une bibliothèque, nous avons des tables Authors , Books et BooksAuthors .

Exemple en direct: violon SQL

Les auteurs et les livres sont appelés tables de base , car ils contiennent une définition de colonne et des données pour les entités réelles du modèle relationnel. BooksAuthors est appelé la table de relations , car cette table définit la relation entre la table Books et Authors .


Relations entre les tables

  • Chaque auteur peut avoir 1 ou plusieurs livres
  • Chaque livre peut avoir un ou plusieurs auteurs

Auteurs

( voir la table )

Id prénom Pays
1 JD Salinger Etats-Unis
2 F. Scott. Fitzgerald Etats-Unis
3 Jane Austen Royaume-Uni
4 Scott Hanselman Etats-Unis
5 Jason N. Gaylord Etats-Unis
6 Pranav Rastogi Inde
7 Todd Miranda Etats-Unis
8 Christian Wenz Etats-Unis

SQL pour créer la table:

CREATE TABLE Authors (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(70) NOT NULL,
    Country VARCHAR(100) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Authors
    (Name, Country)
VALUES
    ('J.D. Salinger', 'USA'),
    ('F. Scott. Fitzgerald', 'USA'),
    ('Jane Austen', 'UK'),
    ('Scott Hanselman', 'USA'),
    ('Jason N. Gaylord', 'USA'),
    ('Pranav Rastogi', 'India'),
    ('Todd Miranda', 'USA'),
    ('Christian Wenz', 'USA')
;

Livres

( voir la table )

Id Titre
1 Le receveur dans le seigle
2 Neuf histoires
3 Franny et Zooey
4 Gatsby le magnifique
5 Tender id la nuit
6 Fierté et préjugés
7 ASP.NET 4.5 professionnel en C # et VB

SQL pour créer la table:

CREATE TABLE Books (
    Id INT NOT NULL AUTO_INCREMENT,
    Title VARCHAR(50) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Books
    (Id, Title)
VALUES
    (1, 'The Catcher in the Rye'),
    (2, 'Nine Stories'),
    (3, 'Franny and Zooey'),
    (4, 'The Great Gatsby'),
    (5, 'Tender id the Night'),
    (6, 'Pride and Prejudice'),
    (7, 'Professional ASP.NET 4.5 in C# and VB')
;

LivresAuteurs

( voir la table )

BookId AuthorId
1 1
2 1
3 1
4 2
5 2
6 3
7 4
7 5
7 6
7 7
7 8

SQL pour créer la table:

CREATE TABLE BooksAuthors (
    AuthorId INT NOT NULL,
    BookId  INT NOT NULL,
    FOREIGN KEY (AuthorId) REFERENCES Authors(Id),
    FOREIGN KEY (BookId) REFERENCES Books(Id)
);

INSERT INTO BooksAuthors
    (BookId, AuthorId)
VALUES
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 2),
    (5, 2),
    (6, 3),
    (7, 4),
    (7, 5),
    (7, 6),
    (7, 7),
    (7, 8)
;

Exemples

Voir tous les auteurs ( voir l'exemple en direct ):

SELECT * FROM Authors;

Afficher tous les titres de livres ( voir l'exemple en direct ):

SELECT * FROM Books;

Voir tous les livres et leurs auteurs ( voir exemple en direct ):

SELECT
  ba.AuthorId,
  a.Name AuthorName,
  ba.BookId,
  b.Title BookTitle
FROM BooksAuthors ba
  INNER JOIN Authors a ON a.id = ba.authorid
  INNER JOIN Books b ON b.id = ba.bookid
;