我正在为研究机构设计数据库架构。数据库应存储大多数预定义(依赖或独立)变量的实验样本,但可能需要项目数据库设计日期未知的项目依赖变量。
目前,我正在考虑两种方法:
您能为这种情况推荐任何此方法或其他方法吗?非常感谢你们的回复。
答案 0 :(得分:0)
这些方法都不会完全有效......使用您的方法1您无法添加新变量,而您的方法2将起作用,在灵活性性能或可读性方面也不会很好...也因为您提到'高级用户应该能够通过SQL使用数据库进行数据分析,这种方法将非常困难。
最好的妥协方案可能是两者兼而有之,将当前所知的所有变量存储为列,然后使用单独的EVA(实体值属性)表,可以添加自定义变量。这使得大部分逻辑保持良好,同时在需要时允许动态变量。如果可以添加的变量数量有一个上限,您可以考虑在表上使用SpareDateVariable1Name,SpareDateVariable1Value,SpareIntegerVariable1Name,SpareIntegerVariable2Name列的混合方法,以允许添加一些自定义变量而无需使用< / p>
主要问题是在关系数据库中,您需要预先了解所有列。这就是它们的设计方式。您应该考虑使用像MongoDB这样的NoSQL解决方案,它将条目存储为没有严格模式的“文档”,因为在传统的关系数据库中根本没有很好的方法来解决这个问题,但是这些类型的数据库将更好地处理这种情况。