Dyl*_*SUN 2 mysql sql enums database-design data-modeling
我有一个员工表,员工有兴趣,所以表可以这样设计:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
interest varchar(50),
primary key(id)
);
Run Code Online (Sandbox Code Playgroud)
或这个:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
interest enum('football','basketball','music','table tennis','volleyball'),
primary key(id)
);
Run Code Online (Sandbox Code Playgroud)
利益的数量可以是大约50.
我该如何设计桌子?我应该使用枚举还是其他人?
编辑:
谢谢你的回应.
假设一个人可以是先生或女士或女士
我在PHP中创建了一个下拉列表.
<select name="role">
<option value="Mr.">Mr.</option>
<option value="Ms">Ms</option>
<option value="Madame">Madame</option>
</select>
Run Code Online (Sandbox Code Playgroud)
对于DB部分,我可以这样做:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
role varchar(50),
primary key(id)
);
Run Code Online (Sandbox Code Playgroud)
或这个:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
role enum('Mr.','Ms.','Madame'),
primary key(id)
);
Run Code Online (Sandbox Code Playgroud)
在这种背景下,哪个更好?
还有第三种选择,创建一个用于保存兴趣值的附加表.
权益
interest_id,int,主键interest_value,string/varchar,唯一约束(停止重复)但是,如果您想支持具有多种兴趣的员工,则需要第三个表.这是一个多对多的关系 - 第三个表位于EMPLOYEES和INTERESTS表之间,并且与两者具有外键关系.
EMPLOYEE_INTERESTS
employee_id,主键,EMPLOYEES.id的外键interest_id,主键,INTERESTS.interest_id的外键如果EMPLOYEES记录只能有一个INTEREST,那么您只需要更新EMPLOYEES.interest列以使其与INTERESTS表具有外键关系.
雇员
interest_id,主键,INTERESTS.interest_id的外键