如何从其他DB记录中引用特定的表列?

时间:2010-12-29 10:40:19

标签: sql mysql database database-schema

我想为我的MYSQL数据库的表中的列定义额外的属性。

例如,我想定义数据库列的测量单位。

为此,我目前计划创建此表:

COLUMN_UNIT
id
{table_name, column_name} unique constraint
unit_id

(我没有使用复合PK,因为我的框架需要一个自动递增的ID字段)

我可以拥有的其他表格是:

UNIT
id
unit_name

WEATHER_DATA
temperature
wind_speed
...

SENSOR_DATA
intensity
frequency
...

使用列名和表名是引用其他列的最佳方式吗?

谢谢!


更新:

在我的情况下,列中的所有记录都具有相同的属性值。这是一个明智的属性。因此,对于温度,所有值都将以C为单位。

1 个答案:

答案 0 :(得分:1)

你需要对UNIT表使用多个foreign keys ..例如,你的WEATHER_DATA表可能是

WEATHER_DATA
temperature
temperature_unit_id (FK to UNIT)
wind_speed
wind_unit_id (FK to UNIT)

我不知道你的框架是否在同一个表上允许多个外键...如果没有,我猜你可以创建另一个包含表名,列的nane和unit_id ..但那将是=丑陋的

希望有所帮助

修改

你可以使用一个元表,它只是存储表的额外信息的表.mysql使用自己的元表来存储行数,列类型等。一些框架使用自己的元表(如Django) )..但你可以创建自己的元表,它们就像任何其他表一样,在你的情况下它可能就像

WEATHER_META
temperature_unit_id FK
wind_unit_id FK

和WEATHER表将是

WEATHER_DATA
id
temperature
wind_speed
...

或者如果您愿意,您可以为所有表创建一个Meta表。像

这样的东西
META_TABLES
table_name
column_name
unit_id