2016-06-08 53 views
0

我有一些值,像這樣:什麼是隻接受少數特定值的最佳數據類型?

  • PHP
  • CSS
  • HTML
  • JavaScript

我想知道的是,可以定義爲一個列一些特定的值有效值? (一切將是無效的)


我知道,我可以實現標籤系統的其他方式。創建一個包含有效標籤的獨立表格,並檢查所有要驗證的內容。

但實際上,標記系統就是一個例子。我想要做的是爲列定義了一些常數值。

+0

IMO最乾淨和最容易維護的解決方案是創建一個標籤一個單獨的表,並把一個外鍵,它在表格中。 –

+0

@juergend是的,正如我所說創建一個單獨的表將沒事。但我想知道是否可以爲列定義一些常量? – Shafizadeh

回答

2

這樣做的典型方法是使用外鍵關係。

您可以定義值的表是這樣的:

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) 
); 
+0

Thx。 。 。 。 +1! – Shafizadeh

相關問題