使用数据库和表(MySQL)

时间:2014-12-02 19:45:26

标签: mysql

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

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

2 个答案:

答案 0 :(得分:0)

如果您有少量事件类型,并且事件类型的性质非常不同(不同的属性),那么您可以为每种事件类型创建一个不同的表。

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

答案 1 :(得分:0)

您应该在用户表和事件表之间建立一对多的关系。事件表应该将用户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
);

那么,您拥有了自己的用户,当您添加事件时,您只需将user_id分配给该事件所针对的任何用户。希望这能为你提供一些东西。