我正在设计一个数据库,用于存储各个站点的每日降雨量数据。我不得不存储每日记录,无论是否下雨,如果有雨,我表示从雨量计读数毫米,如果没有下雨我只是指示零。
我想到的方法是我在" rainfall_data"中有以下字段:表:
选项1:
ID |车站|一年|月| day1 | day2 | day1 |第三天| day4 |第5天.... | day31
选项2
ID |车站|一年|月|一天|
我确实感觉 Option1 更好,因为我的" rainfall_data"表
寻找建议。感谢
答案 0 :(得分:0)
方法1实际上是不太有利的选择。
为什么?
1)添加或删除列是很昂贵的(需要ALTER TABLE
来锁定整个表并且必须重新构建所有现有数据),而且很容易添加或删除行
2)插入数据需要锁定现有行,而插入新数据会使现有数据可访问(这在很大程度上取决于数据库引擎)
3)对于DBMS来说,大量行不是问题,它们旨在解决这个问题。然而,大量的columsn,特别是如果它们中的大部分在大多数情况下都是空的,会毫无理由地增加数据库大小(列中的空值需要与任何非空的一样多的空间,除了
varchar
列)