Mysql:枚举混乱 [英] Mysql: enum confusion
问题描述
我有一个员工表,员工有兴趣,所以表可以这样设计:
create table emp
id int(10)not null auto_increment,
name varchar(30),
interest varchar(50),
主键(id)
);
或这个:
创建表emp(
id int(10)not null auto_increment,
name varchar(30),
兴趣枚举('足球','篮球','音乐','乒乓球','排球'),
主键(id)
);
感兴趣的人数可以约为50.
我应该如何设计桌子?我应该使用枚举还是其他?
编辑:
感谢您的回复。
假设一个人可以是先生或女士或女士
我在PHP中下载一个列表。
< select name =role>
< option value =Mr。>先生< / option>
< option value =Ms> Ms< / option>
< option value =Madame> Madame< / option>
< / select>
对于DB部分,我可以这样做:
create table emp(
id int(10)not null auto_increment,
name varchar(30),
role varchar(50) ,
主键(id)
);
或这个:
create table emp(
id int(10)not null auto_increment,
name varchar(30),
role enum('Mr。','Ms。 'Madame'),
主键(id)
);
在这种情况下,哪个更好?
假设员工可以拥有多个兴趣,您应该真正做出3个表。 (您当前的设计将每个员工限制为1个兴趣)。这样的东西:
员工(emp)
- -----
id
名称
兴趣
-------
id
描述
Employee_Interest
--------
employeeID
interestID
关于编辑,我会说这个枚举是你的两个例子中更好的,因为它限制了你预定的允许值。但是很多人会认为,即使是
,您应该查找一个查找表(具有ID和描述的角色)
I have an employee table, employee has interests, so the table can be designed like this:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
interest varchar(50),
primary key(id)
);
or this:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
interest enum('football','basketball','music','table tennis','volleyball'),
primary key(id)
);
The number of interests can be about 50.
How should i design the table? Should i use enum or others ?
Edit:
Thanks for your reponse.
Assume that a person can be a Mr. or Madame or Ms.
I make a drop down list in PHP.
<select name="role">
<option value="Mr.">Mr.</option>
<option value="Ms">Ms</option>
<option value="Madame">Madame</option>
</select>
And for the DB part, I can do this:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
role varchar(50),
primary key(id)
);
or this:
create table emp(
id int(10) not null auto_increment,
name varchar(30),
role enum('Mr.','Ms.','Madame'),
primary key(id)
);
In this context, which is better?
You should really make 3 tables, assuming that an employee can have multiple interests. (Your current design limits each employee to 1 interest.) Something like this:
Employee (emp)
-------
id
name
Interest
-------
id
description
Employee_Interest
--------
employeeID
interestID
Regarding the edit, I'd say the enum is the better of your 2 examples as it limits you to predetermined allowable values. But many would argue that you should make a lookup table (Role with id and description) even for that
这篇关于Mysql:枚举混乱的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!