帮助建立ER图的建模

时间:2010-10-13 11:50:00

标签: database database-design

我试图在ER图中模拟以下2个句子:

  

每家公司都有一套坦克。它是   也知道每个坦克怎么填满   这是一天中的每一个时间。

目前尚不清楚是否存在有日志的特定时间。它可以是一天一次,两次,每小时,也许有几天你没有任何信息等等。

这是我目前的尝试: alt text

(我忘了在坦克/日期关联中加入一个名为“当前加载”的属性)

虽然由于某些原因我不喜欢它(我想我不喜欢Dates实体!)。你们这些人如何模仿这种情况?

我想我可以改为拥有TankLoads实体,其属性为“加载”,另一个属性为“日期”。

由于

PS:对于糟糕的DIA图表抱歉:(

3 个答案:

答案 0 :(得分:2)

数据建模和数据库设计并不完全相同,即使人们经常使用ER图来汇总数据库模式。

关于日期或由日期和时间组成的时间戳,没有什么“不真实”。它们是抽象的事实并不重要。银行账户也是抽象的。

您是否要有一张日期或时间戳表是另一回事。在实践中,我发现在报表数据库中创建一个对每个日期或每个工作班次进行编目的表非常有用。使用适当的属性,即使企业有自己的古怪财务日历,也可以轻松生成每周,每月,每季度或每年的报告。对于内置于SQL中的函数,某些属性可能是多余的,但即使这样,它也是一个相对无关紧要的设计决策。

答案 1 :(得分:1)

alt text

答案 2 :(得分:0)

嗯,我会那样略有不同。将所有日期/时间放在一个单独的表中(我现在称之为Dates,但您也可以将其称为时间或时间戳左右),以及与Tanks多对多的日期/时间。 (我使用了表FillLevels。​​)

坦克填充的级别存储在FillLevels表中。

公司:
- [...]

坦克:
- company_id:int
- [...]

FillLevels:
- tank_id:int
- time_id:int
- [...]

日期:
- [...]

我很抱歉没有为您提供闪亮的图表,但我回家这有点道理。

或者,您可以在FillLevels表中创建DateTime字段,而不是使用Dates表,具体取决于您打算如何查询数据库。