对于第二个表,我建议:
>添加显式自动递增主键.
>声明varchar的长度
>声明my_data_structure_id
>有一个独特的约束
结果如下:
CREATE TABLE my_optional_fields (
my_optional_fields_id int auto_increment primary key,
my_data_structure_id int not null,
my_optional_field_name VARCHAR(255) NOT NULL,
my_optional_field_value VARCHAR(255) NOT NULL,
FOREIGN KEY (my_data_structure_id) REFERENCES my_data_structures(my_data_structure_id)
UNIQUE (my_data_structure_id, my_optional_field_name, my_optional_field_value)
);
我猜这个唯一的约束是对.但是,如果您只想要给定名称的一个字段,请从唯一约束中排除该值.