sql - 不同表上同名的列可以有不同的数据类型吗?
问题描述
我正在寻找一些指导。纵观我们的一个数据库,我们有所有名称相同的列,比如说X
。现在列出现在X
同一个数据库的多个表中。但是,在 10 列中,数字 / varchar 数据类型几乎是均匀的。
我想知道这是否可以,或者我应该尝试提出一些事情来改变这种情况?据我所知,现实世界的数据都是数字的。
非常感谢您提前提供任何帮助。
解决方案
这实际上取决于列X
是十个不同表上的相同业务属性,还是具有相同列名的不同属性。
我想知道这是否可以...
如果这些列代表不同的业务属性,那么它们共享相同的名称是令人讨厌的,但可能造成的损害不足以证明重命名它们是合理的。这取决于真实姓名(假设它不是真的X
)。
如果每一列代表相同的业务属性,那么它们具有不同的数据类型肯定是不行的。可能发生的最好情况是连接效率低下,因为 Oracle 必须将字符列转换为数字值。在最坏的情况下,您已经打开了数据损坏的门户,并且您应该只包含数值的列现在包含非数字值,这些值无法转换并且会导致查询失败。历史的教训是,这种数据损坏最终会发生。
……或者我应该尝试提出一些事情来改变这种情况
在一个理想的世界里,你应该改变这一点。当然,在理想的世界中,您不必:-)
实际情况是,拥有一致的物理数据模型总是一件好事,但您可能很难让人们相信这样做的价值。
至少需要付出很多努力,因为您不能简单地通过 ALTER TABLE ... MODIFY 来更改填充列的数据类型。您需要添加一个新列,移植数据,删除旧列,重命名新列并重新应用任何约束、索引等。然后是使用相关表的应用程序的回归测试。
那是幸福的道路:如果您发现数据损坏并且这些列中有非数字数据,会发生什么?现在它变得非常混乱。
推荐阅读
- python - python - 跨方法和类传递变量
- javascript - 在循环内按按钮创建多个元素(输入)
- list - 一个 Haskell 函数,它接受两个字符串并根据第一个过滤第二个
- python - 强制 pytest.main() 使用不同的 pytest.ini
- deployment - 在生产和版本控制同步问题中运行 Strapi
- macos - 终端无法在带有 OSX 的 Aptana IDE 中工作
- javascript - 传递、接收和使用函数到子组件中
- c# - C# 是否支持嵌套的强类型树结构?
- r - 使用 R 将数据块中的 spark 数据帧写入 Azure 数据缺乏存储
- ios - 如何使用 LocalNotification iOS 在特定时间运行代码?