我有下面的表格
事件:
EVENT_ID EVENT_OWNER_ID EVENT_NAME EVENT_DATE EVENT_PRIVATE EVENT_ACTIVE除EVENT_NAME之外的所有字段都是date、int或bit。
在EVENT_ID和EVENT_NAME之间使用另一个表进行匹配,并在需要时使用JOIN查看事件名称是否更有效?或者,与我目前使用的只有一个带有EVENT_NAME的表相比,连接的效率更低吗?
发布于 2010-11-02 04:14:36
两个表在所有方面的效率都较低,除非您跟踪使用相同名称的重复事件(标准化示例)。该技术将节省的唯一资源是非常少量的磁盘空间。就查询的效率而言,一个表总是更有效率。
基本上,如果两段数据(在本例中是Event_Name和事件数据的其余部分)之间存在一对一的关系,那么您将希望这些数据位于同一个表中。
如果你想了解更多,谷歌规范化与非规范化。
发布于 2010-11-01 17:07:15
在事件列表中存储事件固定信息是不正确的。如果您决定更改事件名称-您将不得不更改很多行,而不是1行。
你的数据库应该被规范化。在events列表中-仅ides,以及event_id列表中的特定于事件的数据(日期、时间、生成器)-事件的固定数据(名称、严重性、类似于文档等)
发布于 2010-11-01 17:15:57
如果一个事件只能有一个所有者、一个名称和一个日期...那么你可以把它放在一张表里。
https://stackoverflow.com/questions/4067573
复制相似问题