```sql
CREATE TABLE utilisateurs (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    mot_de_passe VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_utilisateurs_username ON utilisateurs (username);
CREATE INDEX idx_utilisateurs_email ON utilisateurs (email);

CREATE TABLE roles (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(50) NOT NULL UNIQUE,
    description TEXT
);

CREATE INDEX idx_roles_nom ON roles (nom);

CREATE TABLE utilisateurs_roles (
    utilisateur_id INTEGER NOT NULL,
    role_id INTEGER NOT NULL,
    PRIMARY KEY (utilisateur_id, role_id),
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs (id),
    FOREIGN KEY (role_id) REFERENCES roles (id)
);

CREATE TABLE tokens (
    id SERIAL PRIMARY KEY,
    utilisateur_id INTEGER NOT NULL,
    token VARCHAR(255) NOT NULL,
    expires_at TIMESTAMP NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs (id)
);

CREATE INDEX idx_tokens_utilisateur_id ON tokens (utilisateur_id);
CREATE INDEX idx_tokens_expires_at ON tokens (expires_at);

CREATE TABLE articles (
    id SERIAL PRIMARY KEY,
    titre VARCHAR(100) NOT NULL,
    contenu TEXT NOT NULL,
    auteur_id INTEGER NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (auteur_id) REFERENCES utilisateurs (id)
);

CREATE INDEX idx_articles_titre ON articles (titre);
CREATE INDEX idx_articles_auteur_id ON articles (auteur_id);

CREATE TABLE commentaires (
    id SERIAL PRIMARY KEY,
    contenu TEXT NOT NULL,
    article_id INTEGER NOT NULL,
    auteur_id INTEGER NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (article_id) REFERENCES articles (id),
    FOREIGN KEY (auteur_id) REFERENCES utilisateurs (id)
);

CREATE INDEX idx_commentaires_article_id ON commentaires (article_id);
CREATE INDEX idx_commentaires_auteur_id ON commentaires (auteur_id);

INSERT INTO roles (id, nom, description) VALUES
(1, 'admin', 'Administrateur'),
(2, 'utilisateur', 'Utilisateur standard');

INSERT INTO utilisateurs (id, username, email, mot_de_passe) VALUES
(1, 'admin', 'admin@example.com', 'password'),
(2, 'utilisateur', 'utilisateur@example.com', 'password');

INSERT INTO utilisateurs_roles (utilisateur_id, role_id) VALUES
(1, 1),
(2, 2);

INSERT INTO articles (id, titre, contenu, auteur_id) VALUES
(1, 'Article 1', 'Contenu de l\'article 1', 1),
(2, 'Article 2', 'Contenu de l\'article 2', 2);

INSERT INTO commentaires (id, contenu, article_id, auteur_id) VALUES
(1, 'Commentaire 1', 1, 1),
(2, 'Commentaire 2', 2, 2);
```