如何在表中标识具有不同名称的相同列?

时间:2016-07-13 17:32:12

标签: sql sql-server database database-design relational-database

我的数据库有很多列可以在表中重复使用,但列的名称会更改。

编辑:举个例子:我们在电信行业处理10位数的电话号码。它在100多个表中使用,通常每个表使用不同的column_name,并且列的数据类型和格式不一致(例如' 123-456-7890',' 1234567890',int 1234567890,1800-123-456-7890)。

对于培训和分析,我希望能够用不同的名称链接或识别这些重复项。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果使用引用约束声明外键,那么至少应该帮助您使用关键字段。

有时,但并非总是如此,数据库设计人员将使用用户定义类型一次指定给定的数据格式,而不是在许多列中表示相同的定义。如果是这样,那么引用相同UDT的多个表都将具有相同的形式,尽管不一定具有相同的语义。

对系统表的快速研究应该向您展示如何通过UDT名称查询和分组。这应该将列但相同的数据放在一起。

答案 1 :(得分:0)

  

示例:我在电信公司工作,我们使用的电话号码很多   不同的方法。该数据点(电话号码)被重用   几乎100个表,它有几十个不同的列名

好的,不,SQL Server无法为您自动识别这些列。

如果您可以根据可用的元数据(例如sys.columns)提出以编程方式识别电话号码列的规则,则可以编写一个查询来获取所有此类列。

如果您必须浏览列并手动确定哪些是电话号码列,则可以开始手动将此信息存储在您自己设计的元表中。类似的东西:

TableName    ColumnName    StandardName
Table1       Phone         PhoneNumber
Table2       HomePhone     PhoneNumber
Table2       WorkPhone     PhoneNumber

其中TableNameColumnName是实际名称,而StandardName是您手动分配的值,对于所有“相同”列,它将是相同的“标准”名称。< / p>

然后可以使用/查询此元表进行参考,培训和分析。