如何在数据库中存储用户特定数据

时间:2014-04-29 13:03:04

标签: mysql sql

我试图找到关于此的一些信息,但我不确定在哪里查看或如何表达它。

我做了一个简单的应用程序来学习PHP。但是,整个应用程序都是特定于用户的(您登录以查看自己的帖子)。

我应该在哪里存储用户数据和发布数据?例如,我需要存储post_title, post_content, post_id, post_time, post_status,用户将user_name, user_password, user_email

这些应该在单独的表格中,还是在一起?存储此类数据的常用方法是什么?

2 个答案:

答案 0 :(得分:2)

您需要在单独的用户表中包含详细信息。

User ID | User Name | Full Name | Email Address

User ID字段是唯一的。现在您需要将帖子存储在另一个表中:

Post ID | Post Subject | Post Content | Post Time | Post Status | Author

Author是外键,应与Users表的User ID字段链接。这称为关系数据库。可以这样建立关系:

如果您在此表中看到,则User IDPost ID是唯一键。它们被称为主键,这意味着每一行都由该值标识。此外,使用它的主要原因是,为了避免用户值之间的冗余,并且这也节省了大量占用的空间。 :)

这个的SQL是:

CREATE TABLE Users (
    `User ID` int PRIMARY KEY,
    `User Name` varchar(255),
    `Full Name` varchar(255),
    `Email Address` varchar(255)
);

INSERT INTO Users (
  `User ID`, `User Name`, `Full Name`, `Email Address`
) VALUES (
  NULL, 'Username', 'Full Name', 'email@gmail.com'
);

CREATE TABLE Posts (
  `Post ID` int PRIMARY KEY,
  `Post Subject` varchar(255),
  `Post Content` TEXT,
  `User ID` int
);

INSERT INTO Posts (
  `Post ID`, `Post Subject`, `Post Content`, `User ID`
) VALUES (
  1, 'Hello World', 'Hello World', 1
);

答案 1 :(得分:1)

简单回答:将用户信息放在一个表中,每个用户都有一个唯一的密钥。然后使用此唯一键标记每个“帖子”。您可以在以后的每个帖子中使用“评论”和“编辑”。 (提示 - 每个帖子也有一个唯一的密钥)

更复杂的答案:阅读有关数据库normalization