我的数据库存储版本号;但是,它们有两种格式:major.minor.build(例如 8.2.0、12.0.1)和日期(例如 YY-MM-DD)。我想到了两种解决方案:
+---+---+-----+-----------+ +-----+-----+-----+-----+ +-----+--------+
|...|...|id |versionType| |id |major|minor|build| |id |date |
|---+---+-----+-----------| |-----+-----+-----+-----| |-----+--------|
|...|...|12345|0 | |12345|0 |1 |2 | |21432|12-04-05|
|---+---+-----+-----------| +-----+-----+-----+-----+ +-----+--------+
|...|...|21432|1 |
+---+---+-----+-----------+
或者
+---+---+-----+-----+-----+-----+--------+
|...|...|id |major|minor|build|date |
|---+---+-----+-----+-----+-----+--------|
|...|...|12345|0 |1 |2 |null |
|---+---+-----+-----+-----+-----+--------+
|...|...|21432|null |null |null |12-04-05|
+---+---+-----+-----+-----+-----+--------+
这两个看起来都不是特别有效:第一个需要连接两个表才能获得版本号,而第二个每个版本条目浪费的空间是第一个的两倍。或者,我可以将值存储在列中的一些位中,然后在客户端解释它,但我希望有一些我忽略的这种情况的标准做法。
是否有适当的方法在关系数据库中为同一“列”存储两种不同类型的数据?