我正在MySQL中设计一个数据库,并且有几个关于如何定义表和列的问题。
现在,我有一个实体(我们称之为Entity1),它将具有可能随时间变化的几个(5-10)特征。我还需要能够随着时间的推移添加功能。我正在考虑2种设计:
1:1表包含Entity1信息,1表包含时间戳,然后是每行中给定时间戳的所有功能。这样可以更轻松地强制执行所有功能之间的连接。
2:1表包含Entity1信息,每个功能包含1个表,每个表都有一个添加该行的时间戳。这将减少我在数据库中存储的冗余数据量。
这些设计中的任何一个都是理想的吗?我应该看一些数据库文献吗?我是数据库设计的总菜鸟。
由于
答案 0 :(得分:0)
考虑创建2个表:实体表和要素表。
entity(id,...)
功能(id,entity_id_foreign_key,feature_name,created_timestamp,feature_value)
如果特征值都是相同的类型,它将起作用。好的是,如果要添加或删除功能,则不需要触摸架构,因此不需要迁移。