【发布时间】:2012-02-17 11:22:39
【问题描述】:
我想在数据库中建模如下场景:
我有一个包,由独立的Activities 和Hotel 组成:
包P:
- 活动A1、A2、A3
- 酒店H
Activities 和Hotel 是独立的实体,在定义实体时定义了自己的价格。
当一个实体被添加到包中时,它的价格可以改变(仅限specific to the package)。因此,每个套餐对于活动/酒店都有一个独特的价格。
例如
(Defining activities and hotel):
A1 - 10$
A2 - 20$
H1 - 100$
(Adding activities and hotel to package):
Package p;
p.addActivity("A1", 15);
p.addActivity("A2", 25);
p.addHotel("H1", 50);
yields =>
p
- A1 - 15
- A2 - 25
- H1 - 50
数据库端:
定义:
-
Activity:活动 ID、开始日期、结束日期、价格
-
Hotel:酒店 ID、开始日期、结束日期、价格
添加到包后
-
Package table:
Package-id、Hotel-id、Activity-id
-
Package-Activity price table:Package-id、Activity-id、Price//package-id 和 activity-id 作为唯一键
-
Package-Hotel price table:Package-id、Hotel-id、Price//package-id 和hotel-id 作为唯一键
我需要一些关于我提出的设计的反馈。 我是否过于复杂了?有没有更简单/更好的方法来做到这一点? 另外,在我写这篇文章的时候,我想一个包可以有很多酒店和活动,所以需要在这里考虑。 我是否过于分散了这一点,因为对于实体的每次价格查询,我都将执行连接?
编辑
找到了有关使用 Joins 的性能的相关链接:When and why are database joins expensive?
【问题讨论】:
标签: database database-design data-modeling entity-relationship