私はSQLの完全な初心者であり、非常に単純な問題の解決策を見つけるのに苦労しています。
シナリオは次のとおりです。ユーザーが私のサイトに登録すると、数列(user_id、username、email、password、date)のみで「users」テーブルに挿入されます。
登録時にもう尋ねたくないのですが、各ユーザーに、名前、名前、略歴などの追加のユーザー情報を入力できるオプションの設定ページを用意してもらいたいと思います。
データベースをクリーンに保つために、この情報用に「user_info」という2番目のテーブルを作成しました。このテーブルには、「users」に存在する「user_id」列が含まれています。
私が苦労しているのは、これら2つのテーブルをリンクすることです。ユーザーが「users」テーブルに追加されるたびに、同じ「user_id」で「user_info」に新しいエントリが挿入されるようにしたいと思います。これは、ユーザーの削除にも機能する必要があります。
これまでのところ、外部キーの使用が必要であると収集し、これを解決するためにCASCADEを使用しようとしました。
私のテーブルは次のようになります。
CREATE TABLE users (
user_id INT AUTO_INCREMENT NOT NULL,
username VARCHAR(20) NOT NULL default '',
email VARCHAR(100) NOT NULL default '',
password VARCHAR(100) NOT NULL default '',
create_date DATETIME NOT NULL default '0000-00-00',
PRIMARY KEY (user_id),
UNIQUE KEY (username),
UNIQUE KEY (email)
);
CREATE TABLE user_info (
user_id INT NOT NULL,
forename VARCHAR(30) NOT NULL default '',
surname VARCHAR(30) NOT NULL default '',
dob DATE NOT NULL default '0000-00-00',
location VARCHAR(30) NOT NULL default '',
PRIMARY KEY (user_id),
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
);
この問題に関するアドバイスと、一般的なベストプラクティスに関するアドバイスをいただければ幸いです。
敬具
アダム