2013-03-29 14 views
1

Je suis nouveau à la conception de base de données si désolé si c'est une question évidente débutant. J'utilise python et sqlalchemy bien que je ne pense pas que cela soit pertinent (l'exemple de code ci-dessous est du code psuedo), bien que cela puisse être faux. J'ai examiné certaines questions précédentes et je n'ai pas vu cela traité. Quoi qu'il en soit, à la question. L'objectif ici est de développer une base de données d'informations NBA qui aura des informations sur tous les jeux joués et aussi des scores de boîte pour chaque chaque joueur, pour chaque jeu. Il existe plusieurs façons de concevoir cette base de données.Base de données Design NBA

Game(game_id, date, home_name, away_name, score) 
Box_Score(game_id, player_name, date, points, rebounds) 

Dans cette situation, si je veux obtenir tous les jeux les Los Angeles Lakers joués je peux faire

query(Game).filter(home_name=="lakers" or away_name=="lakers").all() 
query(Box_Score).filter(player_name="kobe bryant") 

Voici la deuxième option pour savoir comment concevoir cette base de données:

Game(game_id, date, home_name=(foreignkey=Team.team_name), away_name, score) 
Box_Score(game_id, player_name=foreignkey=Player.player_name), date, points, rebounds) 
Team(team_name, home_games=relationship("Game")) 
Player(player_name, box_scores=relationship("Box_Score")) 

Alors je peux faire

query(Team).filter(name=="lakers").first().games 
query(Player).filter(name=="kobe bryant").first().box_scores 

D'une part, il semble que le but de l'utilisation d'une base de données relationnelle est de l'installer comme dans la situation # 2. D'un autre côté, je ne suis pas sûr de la fonctionnalité supplémentaire que cela me donne. Donc je suppose que ma question est, quelle conception recommandez-vous? Y a-t-il des avantages ou des inconvénients à l'une ou l'autre des conceptions qui deviendront apparents au bout du compte, ce que je ne peux pas encore voir? Et si vous recommandez la conception simple # 1 qui n'utilise pas les relations de table, pourquoi est-ce que je stocke une quantité décente d'informations liées mais n'ai pas besoin d'utiliser la base de données relationnelle? Merci!!

+0

pourquoi était-ce downvoted ce qui est stupide à propos de ma question? – appleLover

+0

Si vous êtes toujours intéressé à en discuter, c'est un projet sur lequel je travaille et j'ai trouvé un design mais plus normalisé que ce que vous aviez initialement indiqué – MageeWorld

Répondre

0

Le modèle de données idéal pour toute base de données est hautement subjectif. Si vous êtes nouveau dans la conception de base de données, vous ne trouverez probablement pas le schéma idéal jusqu'à après vous avez créé votre application et l'avez testé pendant une période prolongée. Je vous recommande de lire quelques notions de base sur la conception, en particulier Database Normalization, car vous bénéficieriez probablement d'un schéma hautement normalisé, où les données peuvent être référencées de différentes façons. Les bases de données hautement normalisées peuvent souffrir dans le département des performances si elles sont très importantes (ce qui ne semble pas être le cas), mais vous pouvez toujours dé-normaliser les données en utilisant Materialized Views ou d'autres méthodes de mise en cache.

Questions connexes