您好我对关系数据库感到困惑。 这是我到目前为止所理解的:
假设我们有两个表用户和个人资料
用户:用户名,密码 个人资料:地址,电话,国家,城市等。
显然,应该在这两个表之间创建一个关系,因为每个用户都有一个地址,电话等。但MySql或Sql-server如何知道女性地址属于哪个用户。
我在一些教程中看到,在这种情况下创建了一个aditional字段,用于配置文件的users_id。我不明白的是,字段中的项是否是针对用户表自动生成的?还有我怎样才能确定我没有检索错误的用户个人资料?
任何人都可以向我解释这个概念或者给我一些教程吗?
答案 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的配置文件记录