我有一些值,像这样:什么是只接受少数特定值的最佳数据类型?
PHP
CSS
HTML
JavaScript
我想知道的是,可以定义为一个列一些特定的值有效值? (一切将是无效的)
我知道,我可以实现标签系统的其他方式。创建一个包含有效标签的独立表格,并检查所有要验证的内容。
但实际上,标记系统就是一个例子。我想要做的是为列定义了一些常数值。
我有一些值,像这样:什么是只接受少数特定值的最佳数据类型?
PHP
CSS
HTML
JavaScript
我想知道的是,可以定义为一个列一些特定的值有效值? (一切将是无效的)
我知道,我可以实现标签系统的其他方式。创建一个包含有效标签的独立表格,并检查所有要验证的内容。
但实际上,标记系统就是一个例子。我想要做的是为列定义了一些常数值。
创建表时,您可以使用一个枚举类型和定义常量:
http://dev.mysql.com/doc/refman/5.7/en/enum.html
我只会用它,如果它是一些固定的值列表。像“男”,“女”。
很好.. Thx +1 – Shafizadeh
这样做的典型方法是使用外键关系。
您可以定义值的表是这样的:
create table skills (
skillId int auto_increment primary key,
skill varchar(255) unique
);
insert into table_of_values (value)
select 'PHP' union all
select 'CSS' union all
. . . ;
然后你就可以验证使用外键。说:
create table PeopleSkills (
PeopleSkillsId int auto_increment primary key,
PeopleId int,
Skill varchar(255),
constraint fk_PeopleSkills_PeopleId foreign key (PeopleId) references People(PeopleId),
constraint fk_PeopleSkills_Skills foreign key (Skill) references skills(skill)
);
注意:本示例使用字符串作为外键引用。我实际上并没有提倡这种方法 - 但这是对你的问题的直接回答。在实践中,约束可以使用id而不是名称:
create table PeopleSkills (
PeopleSkillsId int auto_increment primary key,
PeopleId int,
SkillId int,
constraint fk_PeopleSkills_PeopleId foreign key (PeopleId) references People(PeopleId),
constraint fk_PeopleSkills_SkillId foreign key (SkillId) references Skills(skillId)
);
Thx。 。 。 。 +1! – Shafizadeh
IMO最干净和最容易维护的解决方案是创建一个标签一个单独的表,并把一个外键,它在表格中。 –
@juergend是的,正如我所说创建一个单独的表将没事。但我想知道是否可以为列定义一些常量? – Shafizadeh