Mysql:枚举混乱 [英] Mysql: enum confusion

查看:124
本文介绍了Mysql:枚举混乱的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个员工表,员工有兴趣,所以表可以这样设计:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆