2017-10-06 7 views
1

"to_do_list"というデータベースがあります。ユーザーがログインしてタスクを作成できるようにしたい。私は「to_do_list」の2つのテーブルを持っている:"user"テーブルを "tasks"テーブルに接続する方法

tasks: 
task_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
task VARCHAR(255) NOT NULL 
importance VARCHAR(255) NOT NULL 
due_date DATE NOT NULL 

user: 
user_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
username VARCHAR(255) NOT NULL UNIQUE 
email VARCHAR(255) NOT NULL 
password VARCHAR (255) NOT NULL 
active TINYINT(1) NOT NULL 

ユーザーがログインしてタスクを作成することができますので、私はこれらの2つのテーブルを接続する方法を教えてください。私は外部キーを作成する必要があることを知っていますが、そうするたびにログインしたりタスクを作成することはできません。外部キーを削除すると、すべてが再び機能します。

答えて

1

タスクはどのようにユーザーに関連していますか?ユーザーにはタスクがありますか?タスクは一度に1人のユーザーに属しますか?

私は両方の答えが「はい」であると推測します。

もしそうなら、あなたのタスクテーブルにuser_id列を追加し、それを外部キーとしてマークする必要があります。これは、あなたのタスクが関連しているユーザーを取得するために使用されます。

あなたは仕事のためのあなたのCREATE TABLEステートメントに次の行を追加することでこれを行う(またはALTER TABLEを)することができます

FOREIGN KEY (user_id) REFERENCES user(user_id) 

ログインの問題を抱えている場合、これは別の問題だろう。おそらくあなたのログインロジックは、間違ったSQLクエリや他のプログラミングロジックからのものです。

+0

私はタスクテーブルにuser_id行を追加し、それを外部キーとしてマークしようとしましたが、私はこのエラーが出ます:エラー1452:子行を追加または更新できません。 – Julian

+0

私は参照してください。私はそれがユーザーIDを持たないタスクレコードがあるので起きていると思います。ですから、user_idフィールドを追加してから、user_id値を設定するためにタスクレコードを更新してから、外部キーを追加する必要があります。別の方法として、タスクテーブル内のすべてのレコードを削除することもできますが、それが良い考えになるかどうかはわかりません。 – bbrumm

関連する問題