我需要找出用于状态的哪种数据类型。
应该是SET或VARCHAR还是其他什么?
CREATE TABLE actors(
state SET('USA','Germany','....)
)另一个选择
CREATE TABLE actors(
state VARCHAR(30)
)发布于 2016-01-10 18:51:28
假设有几十个或超过100个国家,最好使用单独的表格。
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
)发布于 2016-01-10 18:59:35
SET是一个复合数据类型,包含来自预定义的一组可能值的值。如果表包含这样的数据,那么根据关系数据库理论,它并不在1NF中。因此,只有少数特殊情况下,这种做法是合理的。在大多数情况下,我建议对国家使用单独的表格,例如如下所示:
CREATE TABLE countries (id SMALLINT, name VARCHAR(100))发布于 2016-01-10 18:47:42
要回答这些类型的问题,您应该对数据进行少量的数据分析,并对您的数据提出如下问题:
在你的例子中,它将是有着最大名字的国家-- .Note --下来。增加20,以保持安全。
在你的情况下只有人物。所以它是varchar。
此外,计划您的数据模型,以便您不需要编辑之后,.Use of set将不会被我推荐在这种情况下。
https://stackoverflow.com/questions/34709287
复制相似问题