我有一些值,像這樣:什麼是隻接受少數特定值的最佳數據類型?
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