我想为我的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为单位。
答案 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