我正在尝试在数据库中模拟体育比赛..
我有以下表格
[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]
我不是百分百肯定将类型表链接到特定的运动;我有时认为它有效,但我不确定。
我希望它能够拥有一组具有通用信息的核心类,例如[sport_game],[sport_game_instance]。
使用[运动游戏类型]我可以修改并添加更多运动;它是我不确定的单独表格。我想将它们分开意味着任何与运动相关的东西,然后我可以加入这些表格,如果我需要的话。
您怎么看?
答案 0 :(得分:0)
你肯定不希望每项运动都有单独的牌桌。为什么呢?
您的应用程序将扩展并扩展得非常差。您知道多少运动在头顶?每增加一个新的,你都会创建一个新表?谁将会管理这个过程?我不知道这个过程是在您的构建中,但我的DBA肯定不会将我的应用程序的DDL权限交给我在我的应用程序中创建数据库对象。
报告将是一件苦差事。您需要遍历n
表,而不是单个select语句和按运动类型过滤的where子句。获取有关n
运动的任何信息。一点都不好。您将从不能够知道您支持多少sports_types,而无需询问某人或在您创建了多少个sports_types表格的帖子。
如果游戏特定领域非常重要,你可以用JSON或XML来模板化(我希望这是一个词)特定于游戏的数据(我投票支持XML,因为它具有多功能性,并通过{{1 }})。您的模板可以是
每种特定运动类型的模板。所以你会有
XPath
每个sport_game的模板(篮球,足球等特定游戏)。所以你会有
sport_templates(
sport_type_id FOREIGN KEY REFERENCES...
sport_template_specs VARCHAR2(300)
)
两者的组合 sport_game_instance(
sport_game_instance_id
sport_game_id
sport_game_template_specs
start_time
end_time)
spec是对包含预定义模板的父表的FK引用。
或者,您可以使用某种EAV表格将sport_game_template
映射到sport_type_attr
,如
sport_type_attr_value
显然 sport_type_id sport_type_attr sport_type_attr_value
1 bathroom_breaks 2
1 cheerleaders_permitted 350
是定义sport_type_id
的父表的FK引用