CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Des retours sur mon SQL

horustecastre
horustecastre
Niveau 9
18 juin 2016 à 21:49:26

salut, je travail sur un site de stream
Ca fait 1 an que je n'ai pas fait de SQL ou PHP (je fais du réseau).

J'aimerai avoir un retour sur mon SQL, cela vous parait il logique ?


CREATE DATABASE STREAMING ; 

CREATE TABLE Serie (
	NomSerie varchar(50) NOT NULL,
	NombreSaisons INTEGER NOT NULL,
	PRIMARY KEY (NomSerie)
);

CREATE TABLE Saison (
	NumeroSaison INTEGER NOT NULL,
	NombreEpisodes INTEGER NOT NULL,
	PRIMARY KEY (NumeroSaison)
)

CREATE TABLE Episode (
	IdEpisode INTEGER NOT NULL,
	NumeroEpisode INTEGER NOT NULL,
	NomEpisode varchar(50) NOT NULL,
	DescriptionEpisode varchar(120) NOT NULL,
	NoteEpisode INTEGER NOT NULL,
	Lecteur1VF varchar(50) NOT NULL,
	Lecteur2VF varchar(50) NOT NULL,
	Lecteur3VF varchar(50) NOT NULL,
	LecteurVOSTFR varchar(50) NOT NULL,
	PRIMARY KEY (IdEpisode),
	FOREIGN KEY (NumeroSaison) REFERENCES Saison(NumeroSaison)
)

Sur le site j'ai simplement un menu

Saisons :
saison 1 -> EP1 EP2
saison 2 -> EP1 EP2

https://image.noelshack.com/fichiers/2016/24/1466279352-capture.jpg

GrandeGuerre
GrandeGuerre
Niveau 11
18 juin 2016 à 21:54:45

Un varchar en guise de clé primaire, surtout pour le nom de al série, ça pue à mon avis.

horustecastre
horustecastre
Niveau 9
18 juin 2016 à 21:59:21

Le 18 juin 2016 à 21:54:45 GrandeGuerre a écrit :
Un varchar en guise de clé primaire, surtout pour le nom de al série, ça pue à mon avis.

en effet, c'est corrigé


CREATE TABLE Serie (
	IdSerie INTEGER NOT NULL,
	NomSerie varchar(50) NOT NULL,
	NombreSaisons INTEGER NOT NULL,
	PRIMARY KEY (IdSerie)
);

CREATE TABLE Saison (
	IdSaison INTEGER NOT NULL,
	NumeroSaison INTEGER NOT NULL,
	NombreEpisodes INTEGER NOT NULL,
	PRIMARY KEY (IdSaison)

J'ai maintenant des ID

Pourquoi faut il évité les varchar pour la clé primaire ?

horustecastre
horustecastre
Niveau 9
18 juin 2016 à 22:11:34

je ne comprend pas bien le principe de clé étrangères
PhpMyAdmin m'indique une erreur
https://image.noelshack.com/fichiers/2016/24/1466280674-capture.jpg

fluxies
fluxies
Niveau 17
18 juin 2016 à 22:56:03

Salut, non ce n'est pas terrible imo.

- Utilise un identifiant (champs id) pour toutes tes tables et sers toi comme foreign key dans celles qui ont besoin de la relation.

En gros tu devrais avoir un schéma de la sorte (les x..x représente les relations, '1' pour une instance et 'n' pour plusieurs)
Serie (1 --> n) Saison (1 --> n) Episode
Donc chaque saison aurait un champs serie_id, et chaque episode un champs saison_id

- Débarasse toi du champs "nombreXX", c'est useless et contraignant, si tu veux savoir combien d'episodes possède ta saison, tu (qqchose du genre syntaximent)

 select count(episode.id) where episode.saison_id = :id_saison

- Autre avis, je trouve inutile de rajouter le nom de la table a ses champs (nomSerie pour la table serie etc.)

- Pense à faire une table pour tout ce qui dépend d'une row de la table. Par exemple un episode pourrait avoir plusieurs lien (et donc plusieurs "Lecteur" ? ) et un autre episode un autre nombre de liens. Donc plutot privilegier une table juste pour les liens, que chaque episode puisse en avoir autant qu'il veut, dans les formats qu'il souhaite (VF VOSTFR qualité aussi?.)

- Pour ton erreur sql, je ne sais pas, je m'y connais pas tellement que ca en sql pur en fait

Bon courage

horustecastre
horustecastre
Niveau 9
18 juin 2016 à 23:10:42

Merci pour vos conseils
je vais chercher mes cours de SQL car je suis à la ramasse.

horustecastre
horustecastre
Niveau 9
19 juin 2016 à 14:27:42

Me revoila
Changement de stratégie finalement je ne créer qu'une table.
Je ne vais pas me compliquer la vie alors que je suis un débutant :peur:


CREATE TABLE Episode (
	IdEpisode INTEGER NOT NULL AUTO_INCREMENT,
	Numero INTEGER NOT NULL,
	Nom varchar(50) NOT NULL,
	Description varchar(500) NOT NULL,
	Note INTEGER NOT NULL,
	Lecteur1VF varchar(400) NOT NULL,
	Lecteur2VF varchar(400) NOT NULL,
	Lecteur3VF varchar(400) NOT NULL,
	LecteurVOSTFR varchar(400) NOT NULL,
	Saison INTEGER NOT NULL,
	PRIMARY KEY (IdEpisode),
);

C'est suffisant pour les requêtes que je veut faire.
Maintenant je passe au PHP :)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment