2012-10-17 56 views
0

嗨关于关系数据库我有点困惑。 这是迄今为止我是这么理解:了解数据库表之间的关系

比方说,我们有两个表用户和个人资料

用户:用户名,密码 简介:地址,电话,国家,城市等

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

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

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

+1

您需要了解外键关系:http://msdn.microsoft.com/en-us/library/ms189049。 ASPX –

回答

1

你所需要的是在任何表的外键。由于它在你提到的例子中是一个1-1关系(根据用户只能拥有一个配置文件的逻辑),我将在配置文件表中有一个名为user_id的字段。

TABLE users: 
id, username, password 

TABLE profile: 
id, user_id, presentation 

当您创建用户插入到配置文件表时使用它的插入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")'); 
0

你的表需要像这样

users: 
    - id 
    - username 
    - password 


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

对有关规则的约束将不允许在用户表中的记录(例如)被删除,而不与user.id = delete一个轮廓简介记录.user_id

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