MYSQL|状态的数据类型

标签 mysql sql database sqldatatypes states

我需要弄清楚状态使用哪种数据类型。

应该是SET还是VARCHAR还是其他什么?

CREATE TABLE actors(
    state SET('USA','Germany','....)
    )

或者

CREATE TABLE actors(
state VARCHAR(30)
)

最佳答案

假设有数十个或数百个国家/地区,最好使用单独的表格。

CREATE TABLE states(
  state_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30)
);

还建议在 state_id 上使用外键,这样如果您想从数据库中删除某个状态,就不会破坏依赖于该状态的其他数据。

如果每个参与者仅分配到一种状态 (1:1),则可以使用参与者表中的列。

CREATE TABLE actors(
   actor_id INT ...,
   state_id INT,
)

或者,如果每个参与者可以分配给更多状态 (1:N),请使用另一个表来表示这些关系:

CREATE TABLE actors(
   actor_id INT ...,
)
CREATE TABLE actors_to_states(
   actor_id INT,
   state_id INT
)

关于MYSQL|状态的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709287/

相关文章:

mysql - 无法创建具有 2 个外键的表

php - 试图限制在 mysql 查询/数组中返回的数据

mysql - SQL:计算一个字段的值

sql - 帮助加入查询

javascript - Bookshelf.js 预加载第三个表

database - PeopleSoft Integration Broker 异步消息是否在接收端连续触发?

php - Laravel-belongsToMany 关系时间戳

mysql - 查询真的很慢而且简单,如何提高速度?

mysql - ON DUPLICATE KEY 更新(带有多个 where 子句)

SQL Server,按两列排序,第一个asc排序,第二个asc或desc根据第一个奇偶数