basketテーブルを変更、basket_itemテーブルとuserテーブルを作成
買い物かごの1つの銘柄を格納するbasketテーブルができました。ただし、これではどの行が誰の買い物かごの品か判別できません。しかも、meigaraテーブルと銘柄名と単価が重複してしまいます。今回は認証機能を持っていませんが、第7回のためにユーザIDの項目が必要となります。
また、銘柄名と単価はmeigaraテーブルから取得できるため不要です。これはmeigaraテーブルのidを保持すればよさそうです。basketテーブルと言いつつも、basketに入っている銘柄の情報が入っているのもしっくりしません。basketテーブルにはユーザidと買い物かごのidがあれば十分です。
買い物かごの中身は別のテーブルbasket_itemで管理することにします。basket_itemテーブルにはid、basketテーブルのid、meigaraテーブルのid、本数(quantity)を持つことにします。ユーザidもどこかに格納する必要があります。第7回の認証機能で必要になるuserテーブルも作ることにします。今回はuserテーブルにはユーザid、ユーザ姓、ユーザ名だけで十分であり、1ユーザのみ追加します。
上記の変更をWorkbenchのSQL Developmentを使って実現します。復習になりますが、NetBeansで[サービスウィンドウ]-[データベース]-[MySQL サーバー]を選択、右クリックし[管理ツールを実行]を選択すると、MySQL Workbenchが起動します。左側のSQL Developmentの[Open Connection to start Querying]のimoshop_01コネクションをクリックすると、[home]タブの隣に[SQL Editor]タブができます。Overviewの下に4つのスキーマがあるはずです。その中の[imoshop]タブをクリックすると、imoshopスキーマのTables、Views、Routinesが表示されます。
Tablesにはbasketとmeigaraテーブルが存在します。basketテーブルをダブルクリックすると図6のように[basket(1)]というタブができます。まだ中身がないので空っぽの状態です。タブの上に[SQL Statements]があり、自由にSQL文を発行できます。basketのidは買い物かごのidとして残します。残りのカラムは不要であるため削除します。削除するには図7のようにSQL文を記述し、メニューから[Query]-[Execute]を選択するとSQLが実行されます。
次にbasketテーブルにuser_idを追加します。図8がuser_idカラムを追加するためのSQL文です。新しくbasket_itemテーブルとuserテーブルを作成します。作成手順は「basketテーブルを作成」で説明したとおりです。図9がbasket_itemテーブル、図10がuserテーブルです。





