Wol*_*'08 2 php mysql database-design join
标题基本概括了所有内容.我有用户发布内容,我想将users表中的用户ID附加到帖子.我应该在posts表中添加userid列,我应该通过DB语言加入,还是应该使用脚本语言来轮询每个表?如果我应该加入,我应该做什么样的加入?
样品内容如下:"我商店的泰迪熊比泰迪山羊更柔软,但泰迪山羊更可爱." - James Teddyman于下午3:36发表.
在这种情况下经常使用的概念是通过拥有用户表和邮政表,用唯一标识符将它们链接在一起.这个标识符可以是任何东西 - 序列化的id,用户名,邮件地址等 - 只要它是唯一的.使用外键约束完成链接.究竟如何在MySQL中实现这一点我不知道,但在Postgres中它是这样做的:
CREATE TABLE users (
id serial PRIMARY KEY,
name text
);
CREATE TABLE posts (
content text,
user_id integer REFERENCES users(id) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
然后使用连接合并表.这可以通过多种方式完成,但是在插入一些值后,这里是交叉连接:
@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
FROM users U, posts P \
WHERE U.id = P.user_id;
user_id | name | content
---------+-------+-----------------------
1 | James | Hello from James.
2 | Jones | Greetings from Jones.
Run Code Online (Sandbox Code Playgroud)
MySQL中的YMMV,但我认为上面的结构将直接起作用.
(编辑:添加INSERT以澄清)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |