将此数据拆分为单独的列是一个很好的开始(逗号分隔的值是一个异端)。但是,通常应将“可变数量的属性”建模为一对多关系。
CREATE TABLE main_entity ( id INT PRIMARY KEY, other_fields INT);CREATE TABLE entity_properties ( main_entity_id INT PRIMARY KEY, property_value INT, FOREIGN KEY (main_entity_id) REFERENCES main_entity(id));
entity_properties.main_entity_id是一个外键来
main_entity.id。
恭喜,您处在正确的道路上,这称为规范化。您即将到达第一范式。
但是,请注意,这些属性应具有明显相似的性质(即所有电话号码或地址等)。不要陷入阴暗面(也称为Entity-Attribute-
Value反模式),并极易将所有属性扔到同一张表中。如果可以识别几种类型的属性,请将每种类型存储在单独的表中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)