Comment concevoir un des sports les statistiques de la base de données pour plusieurs sports?
Je suis en train de concevoir une base de données pour stocker les statistiques des joueurs pour plusieurs types de sports.
Dans la base de données, vous avez un tas de joueurs. Chaque joueur appartient à une équipe, et chaque équipe joue un sport. Voici les tableaux que j'ai pour seule partie à ce jour:
Joueur (Player_ID, Team_ID, FirstName, LastName)
Équipe (Team_ID, Sport_ID, TeamName)
Sport (Sport_ID, SportName)
Maintenant je veux stocker les statistiques. Je rencontre un problème avec différents joueurs à jouer des sports différents et donc avoir à stocker les différents types de statistiques pour chaque sport. Si je devais ranger les joueurs de hockey et les joueurs de baseball par exemple:
-
pour les joueurs de hockey je veux stocker buts et de passes
-
pour les joueurs de baseball je veux stocker les hits, les courses à la maison et Rb.
Est-il une bonne façon de faire quelque chose comme ceci en utilisant une base de données? Ont j'ai même commencé à le droit chemin?
- Êtes-vous absolument certain qu'un joueur ne peut jouer qu'un sport pour une équipe? - par exemple, qu'il n'y a aucune chance qu'un joueur peut jouer à la fois le hockey et le baseball? Si oui, vos tables jusqu'à présent regarder OK pour moi.
- Si c'est les devoirs, c'est une bonne idée de le dire. Cela ne signifie pas que vous ne sera pas obtenir de l'aide.
- oui, chaque joueur ne joue jamais plus d'un sport. C'est une sorte de devoirs, je suppose, pas vraiment, C'est un projet de démonstration, je suis en train de faire pour quelqu'un.
Vous devez vous connecter pour publier un commentaire.
La bonne façon est de faire de multiples tables, une pour chaque sport semble probable.
Joueur (Player_ID, FirstName, LastName)
Équipe (Team_ID, Sport_ID, TeamName)
TeamList (Team_ID, Player_ID)
Sport (Sport_ID, SportName)
HockeyStats (Player_ID, Team_ID, L'Année, Les Objectifs, GamesPlayed, Aide)
BaseBallStats (Player_ID, Team_ID, Ans, BoringSport)
Cela permet également de régler la situation avec les commerciaux, qui équipe les points ont été obtenus à partir d', ainsi que de multiples sports.
Vous pouvez trouver de l'inspiration à partir de sportsdb, un sgbdr schéma pour les sports de modélisation créé par XML de l'Équipe. Dans ce schéma, le jeu et les statistiques des joueurs sont stockés dans dénormalisée tables, et les stats de base (comme le score) sont séparés de sports spécifiques. Le schéma est assez complexe, mais peut vous donner une idée sur une éventuelle mise en œuvre
Votre conception initiale est ok.
Vous aurez besoin de créer une table pour les jeux. Donc, vous avez une table de jeux avec des champs (Game_ID, Sport_ID,Team1_ID, Team2_ID) et puis peut-être (Date_Played, Win_Lose_Tie etc...)
Je place ensuite de Créer un Tableau de Statistiques pour chaque sport. TBL_Baseball_Stats (Stat_ID, Game_ID, Player_ID, Hits, H, Rb etc...
Alors vous pourriez avoir une table pour le Hockey Stats. TBL_Hockey_Stats (Stat_ID,Game_ID, Player_ID, les Buts, les Passes, etc ...)
Ce qui vous permettra de tirer vers le haut les stats du Joueur, Jeu, Sport, etc...
Une approche alternative est d'une seule table avec une statistique-colonne ID, identifiant statistique est décrit dans la ligne. Cela peut bien fonctionner si les statistiques à être conservés va changer au fil du temps. Il ne fonctionne bien que si la forme de base de chaque statistique est la même (désolé, je suis Britannique et pas familier avec le sport et les statistiques que vous mentionnez), mais il y a des multi-table des variantes mineures (les pourcentages statistiques dans un tableau, tout simple-comte stats dans un autre, etc).
Si vous voulez être en mesure de créer dynamiquement de nouveaux sports, sans modification de la base de données, vous aurez à créer quelque chose d'assez intelligent pour généraliser le stockage de tout type de statistiques. Quel que soit votre choix, vous ne serez pas en mesure de le faire avec une seule table.
Donc si vous avez un nombre déterminé de sports différents, je vous recommande de créer un tableau pour chaque statistique.
Si non (vous voulez être en mesure de créer de nouveaux sports dans l'avenir avec leurs statistiques), vous devriez regarder pour comment résumé la chose. Certains projets de toughts:
Si les mêmes contours apparaissent dans les différentes statistiques, vous pouvez profiter de l'héritage de table.
Plusieurs sport de type différent de la règle de sorte que vous pouvez utiliser le document de base de données(par exemple: MONGODB) parce qu'il est souple et ne pas avoir de colonne spécifique.
vous devez noter qu'il y a certains athlètes qui ont le même nom (et prénom) à cet effet prendre en considération lors de la définition des clés primaires.
Pour le baseball, il ya beaucoup de différents types de stats - je voudrais essayer de répondre aux attentes de la concurrence DBs par au moins l'ajout d'AVG. /Jeux/Course/Hits/AB/SB/2B/3B. et pichet statistiques ainsi - W/ÈRE/FOUET/SO.