我需要弄清楚状态使用哪种数据类型。
应该是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/