0

こんにちは、リレーショナル データベースに関して少し混乱しています。これは私がこれまでに理解していることです:

users と profile の 2 つのテーブルがあるとします。

ユーザー: ユーザー名、パスワード プロフィール: 住所、電話番号、国、都市など

各ユーザーはアドレス、電話などを持っているため、この 2 つのテーブル間に関係を作成する必要があります。

この場合、プロファイルの users_id という追加のフィールドが作成されることをいくつかのチュートリアルで見てきました。フィールド内の項目がユーザー テーブルに関して自動的に生成されるかどうかはわかりません。間違ったユーザー プロファイルを取得していませんか?

誰かがこの概念を私に説明したり、いくつかのチュートリアルを教えてくれませんか?

4

2 に答える 2

1

必要なのは、いずれかのテーブルの外部キーです。あなたが言及した例では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")');
于 2012-10-17T10:42:32.863 に答える
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

于 2012-10-17T10:39:44.600 に答える