【发布时间】:2014-08-27 16:10:38
【问题描述】:
在为一个新的 iOS 应用找到了大部分数据模型之后,我现在遇到了一个我一直在思考的问题。
“实验”具有名称、描述和所有者。它也有一个“动作”和一个“事件”。
“事件”可能是不同的事物:时间、地点或速度。
根据“事件”是什么,它可以有不同的“类型”。例如,时间可以是一次性的、间隔的、日期范围的、重复的或随机的。位置可以是区域或确切位置。
然后,每个“类型”都有一个值,该值具有自己独有的数据类型。 Time One-Off 可以是 12:15 pm 的日期值,而 Location Exact 可以是 (30.0, -20.0) 的 GeoPoint 值。
问题
- 如何设计数据模型,让数据库不至于千疮百孔 使用 NULL 值?
- 如果我添加更多“事件”,如何设计可扩展的数据模型 和“类型”。
想法
由于 Experiment 只有一个 Action 和一个 Event,将这两个分隔到不同的表中是错误的,但是不这样做会导致 Experiment 表充满 NULL 值,因为我必须有列事件、事件类型和事件类型值,以补偿可以为事件类型值输入的所有可能数据类型。 (日期、整数、字符串、地理点等)
将事件和事件类型分离到一个单独的表中可能会解决 NULL 值问题,但是我会留下重复数据,特别是在时间作为事件类型为下午 12:00 的事件的情况下,如这将存在于其他实验中,而不仅仅是一个。 (除非我创造了每一种可能性并用这些填充一个单独的表 - 但我怎么能轻松做到这一点?)
也许我把事情复杂化了,也许我错过了一些如此简单的东西,以至于当我看到它时我会踢自己。
【问题讨论】:
标签: ios database-design persistence