Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用数据库和表(MySQL)_Mysql - Fatal编程技术网

使用数据库和表(MySQL)

使用数据库和表(MySQL),mysql,Mysql,在我的网站上,客户可以选择创建包含各种项目的活动(具有卖家、颜色等属性)。 我应该为每个事件设置一个数据库和一个新表吗?我不知道还有什么方法可以编程,将每个客户/事件拆分成一个新的数据库似乎是一个糟糕的解决方案,但我对数据库不熟悉,不知道这是否愚蠢 我假设我有一个带有用户ID的表,每个事件的表,以及一个将用户链接到他/她创建的事件的表。这是最好的方法吗?一体化数据库? 谢谢 如果您有少量事件类型,并且事件类型在性质上非常不同(属性不同),则可以为每个事件类型创建不同的表 但是,通常您将创建一个数

在我的网站上,客户可以选择创建包含各种项目的活动(具有卖家、颜色等属性)。 我应该为每个事件设置一个数据库和一个新表吗?我不知道还有什么方法可以编程,将每个客户/事件拆分成一个新的数据库似乎是一个糟糕的解决方案,但我对数据库不熟悉,不知道这是否愚蠢

我假设我有一个带有用户ID的表,每个事件的表,以及一个将用户链接到他/她创建的事件的表。这是最好的方法吗?一体化数据库?
谢谢

如果您有少量事件类型,并且事件类型在性质上非常不同(属性不同),则可以为每个事件类型创建不同的表


但是,通常您将创建一个数据库,其中一个表用于所有事件,一个列用于事件类型或代码(如果需要)。您也不需要创建包含所有事件类型的表,您的代码可以包含它们。您的表应该只包含触发的实际事件。

用户表和事件表之间应该有一对多关系。事件表应将用户ID作为外键

CREATE TABLE user (
    id int UNSIGNED AUTO_INCREMENT NOT NULL,
    name varchar(50) NOT NULL,
    last_modified timestamp NOT NULL,

    PRIMARY KEY (id),
    UNIQUE KEY (name)
);

CREATE TABLE event (
    id int UNSIGNED AUTO_INCREMENT NOT NULL,
    user_id int UNSIGNED NOT NULL,
    name varchar(50) NOT NULL,
    description varchar(500) NOT NULL,
    last_modified timestamp NOT NULL,

    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES user.id ON UPDATE CASCADE ON DELETE CASCADE
);

因此,您有您的用户,当您添加事件时,您只需将用户id分配给事件所针对的任何用户。希望这能给你一些东西来建造。

是的,这很愚蠢。为每个事件单独设置一个表也是愚蠢的。(根据经验,数据库结构应该是静态的:不要动态创建新表。)那么我应该有一个包含所有项的表,并将事件作为字段?因此,我可以搜索具有该字段id的所有项目,或者使用该id在特定事件中搜索特定项目。。。这是有道理的。然后,我只需要另外一个表来链接用户ID和事件ID。我不希望这是一个一对多的关系,因为每个事件只能有一个与之关联的创建者/用户吗?你完全正确!:),这就是我至少说明的。那只是个打字错误!