【问题标题】:Database modelling数据库建模
【发布时间】:2012-10-05 10:30:47
【问题描述】:

我正在尝试在数据库中建模体育比赛..

我有以下表格

[sport_game]
sport_game_id
sport_game_type_id
name
description

[sport_game_instance]
sport_game_instance_id
sport_game_id
start_time
end_time

[sport_game] 1 - M [sport_game_instance]

[sport_game_type]
sport_game_type_id
type  -- professional, semi-pro, college..etc

[sport_game] M - 1 [sport_game_type]

[basketball]
basketball_id
sport_game_typeid
basketball_info

[basketball] 1 - 1 [sport_game_type]    

[baseball]
baseball_id
sport_game_type_id
baseball_info

[baseball] 1 - 1 [sport_game_type]  

我不能 100% 确定是否将类型表与特定运动相关联;我有时认为它有效,但不确定。

我希望它能够拥有一组具有通用信息的核心类,例如 [sport_game]、[sport_game_instance]。

带有[运动游戏类型],我可以修改和添加更多运动;它是我不确定的单独表格。我在想把它们分开意味着任何与运动相关的东西,如果我需要的话,我可以加入这些表格。

你怎么看?

【问题讨论】:

  • 您在 [sport-game] 表中的条目肯定是棒球、篮球等。如果您能给出您期望在表中出现的值的示例,将会有所帮助。

标签: database database-design


【解决方案1】:

您当然不希望每项运动都有单独的表格。为什么?

  1. 您的应用程序的扩展性和扩展性会很差。您不知道有多少运动项目?随着每一个新的添加,您将创建一个新表?谁来管理这个过程?我不知道该过程是否在您的构建中,但我的 DBA 肯定不会将 DDL 权限授予我的应用程序以从我的应用程序中创建数据库对象。

  2. 报告将是一件苦差事。您将不得不遍历n 表来获取任何有关n 运动的信息。一点都不好。您将永远能够知道您支持多少个 sports_types,而无需询问某人或在某处张贴您创建了多少个 sports_types 表格。

如果游戏特定字段非常重要,您可以模板化(我希望这是一个词)JSON 或 XML 中的游戏特定数据(我通过 XPath 投票支持 XML 的多功能性和现成的数据库支持)。您的模板可以是

  1. 每种特定运动类型的模板。所以你会有

     sport_templates(
     sport_type_id FOREIGN KEY REFERENCES...
     sport_template_specs VARCHAR2(300)
      )
    
  2. 每个 sport_game 的模板(篮球、足球等特定游戏)。所以你会有

     sport_game_instance(
     sport_game_instance_id
     sport_game_id
     sport_game_template_specs
     start_time
     end_time)
    
  3. 两者的组合,其中sport_game_template 规范是对包含预定义模板的父表的 FK 引用。

或者,您可以拥有某种将sport_type_attr 映射到sport_type_attr_value 的EAV 表,如

     sport_type_id   sport_type_attr           sport_type_attr_value
     1               bathroom_breaks           2
     1               cheerleaders_permitted    350

显然sport_type_id 是定义sport_type 的父表的FK 引用

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2019-06-18
    • 2021-01-29
    • 2023-03-08
    • 2015-07-31
    相关资源
    最近更新 更多