理解数据库表之间的关系

时间:2012-10-17 10:36:06

标签: rdbms

您好我对关系数据库感到困惑。 这是我到目前为止所理解的:

假设我们有两个表用户和个人资料

用户:用户名,密码 个人资料:地址,电话,国家,城市等。

显然,应该在这两个表之间创建一个关系,因为每个用户都有一个地址,电话等。但MySql或Sql-server如何知道女性地址属于哪个用户。

我在一些教程中看到,在这种情况下创建了一个aditional字段,用于配置文件的users_id。我不明白的是,字段中的项是否是针对用户表自动生成的?还有我怎样才能确定我没有检索错误的用户个人资料?

任何人都可以向我解释这个概念或者给我一些教程吗?

2 个答案:

答案 0 :(得分:1)

您需要的是任何表格中的外键。因为你提到的例子中是1-1关系(基于用户只能有一个配置文件的逻辑),我会在配置文件表中有一个名为user_id的字段。

TABLE users:
id, username, password

TABLE profile:
id, user_id, presentation

创建用户时,在插入配置文件表时使用它的insert-id号。

一些错误的PHP代码示例(不要使用此代码):

mysql_query('INSERT INTO users (username, password) VALUES ("admin", "admin")');
$uid = mysql_insert_id();
mysql_query('INSERT INTO profile (user_id, presentation) VALUES ( ' . $uid . ', "I love my cats")');

答案 1 :(得分:0)

你的桌子需要看起来像这样

users:
  - id
  - username
  - password


profile:
  - id 
  - user_id // references field id from user as one to one
  - phone
  - etc

对相关规则的约束将不允许删除用户表中的记录(例如)而不删除带有user.id = profile.user_id的配置文件记录

关系数据库简介http://www.youtube.com/watch?v=z2kbsG8zsLM

相关问题