6
回答
如何设计一个日程表的数据库
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我想设计一个这样的日程表,当我选择一年中的某个月时,可以列出该月所有的天数,每一天是一条记录。然后我可以往每一天填写一些日程信息。

我的想法是创建两个表,days表存储时间,当我想添加某个月的数据时,将这个月的每一天添加到表里,如下图所示:

todo表存储日程信息,通过dayID与days表关联,如下图所示:

这样的话,当用户需要为某个月添加日程信息时,需要先把日期信息添加到days表里(提供一个初始化功能,或者叫预制信息)。我就可以用days表 LEFT JOIN todo表在一个列表里显示数据。不管某一天有没有日程信息,该条记录都存在,如果没有的话,用户可以填写(INSERT操作),如果有日程信息,那么用户就可以编辑(UPDATE)。

这是我的思路,觉得days表有点多余,期待有更好的解决方案:)

举报
crazymus
发帖于4年前 6回/1K+阅
共有6个答案 最后回答: 4年前
不怎么能理解你的做法,根据我的经验,数据库应该这么设计:把特定的信息以最简洁的格式放入数据库。回到你的问题,日期根本不是特定信息,你选定一个月,这个月有哪些天是恒定的,是否有日程是日程表里是否有数据决定的(反观你的设计会有数据不一致的尴尬哦)。所以日期不存入数据库,如果总是以月为节点,应该把月单独做列,这样比较简洁,用等号就能查找不用大于小于,每个日程信息增加一个详情和准确的日期就完工了,本例现有描述的需求几乎无需设计,太直白了。
一个todo表就够了,至于对于时间上的分类操作什么的 不应该在数据库层面做。一个todo表可以有以下几个columns: id, item, due, priority, created 基本满足任何类型的todo或者日程了
基本上一个todo表就够了,如果有大量 目标工作 类型 都是固定的,最多加个动作类型配置表 。

引用来自“欢乐的财神”的答案

不怎么能理解你的做法,根据我的经验,数据库应该这么设计:把特定的信息以最简洁的格式放入数据库。回到你的问题,日期根本不是特定信息,你选定一个月,这个月有哪些天是恒定的,是否有日程是日程表里是否有数据决定的(反观你的设计会有数据不一致的尴尬哦)。所以日期不存入数据库,如果总是以月为节点,应该把月单独做列,这样比较简洁,用等号就能查找不用大于小于,每个日程信息增加一个详情和准确的日期就完工了,本例现有描述的需求几乎无需设计,太直白了。
谢谢启发,我已经找到更好的解决方案,有时间写在我的博客里。
顶部