- ベストアンサー
テーブル作成でカラム名で配列を
- MySQLを勉強している初心者です、よろしくお願いします。テーブル作成時、カラム名を配列を使ってできないものでしょうか?(data1 data2 data3 data4 とするのが面倒なのですが)ERROR 1064:You have an error in your SQL syntax.となります。また二次元配列はどのようにしたらよいのでしょうか?
- MySQL初心者がテーブル作成でカラム名に配列を使用する方法について教えてください。カラム名を配列を使って簡潔に記述する方法はありますか?また、テーブル作成時のエラー「ERROR 1064:You have an error in your SQL syntax.」が発生します。さらに、二次元配列を作成する方法も教えてください。
- 初心者のMySQL学習者です。テーブル作成時にカラム名を配列を使って簡単に記述する方法はありますか?現在、カラム名を個別に列挙する方法に苦労しています。また、テーブル作成時にエラー「ERROR 1064:You have an error in your SQL syntax.」が発生する問題も発生しています。さらに、二次元配列を作成する方法も教えてください。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
テーブルに配列を、というのは非常に非効率的な考えです。 たとえば電話番号をデータベースに登録するとして、 一人の人間が何個の電話番号を持つかと考えれば、 固定電話、FAX、携帯電話1,携帯電話2・・・ と増える場合もありますし、携帯電話1しか持たない人も いるわけです。 そんなときにあらかじめフィールド数が決まっていると、 多いときには入りきらないし、少ないときは残りを NULLで埋める必要がでてきます。また、取り出す アプリケーション側で値がNULLの時の処理を するひつようが出てきます。 通常このように配列のようなデータが必要になる場合は テーブルを2つに分離させ、「正規化」というものを 行います。 たとえば次のようにします create table member( member_id int(11) primary key not null auto_increment, first_name varchar(64), last_name varchar(64)); create table member_phone_number( member_phone_id int(11) primary key not null auto_increment, member_id int(11) not null, phone_number varchar(13)); こうして select mp.phone_number, p.first_name, p.last_name from member p, member_phone_number mp where p.member_id = mp.member_id; とすると、名前と電話番号がずらっと出てきます。 「名前を配列に」するのは、理由がわからないので思いつきません。 配列よりもわかりやすい名前を付けた方が後で便利だと思うのですが、 いかがでしょう。 自分は多少長くても誰が見てもわかるフィールド名をつけるようにしています。
お礼
アドバイスありがとうございます。 初心者ですので、データベースを構築するにあたってのノウハウがありません。 大変勉強になりました。正規化がどんなものなのかも勉強してみたいと思います。 データベースは出来るだけ細分化し、小さくするのがコツのようですね。 結論的には、配列は使えない、もしくは使う合理性が無いということでしょうか。 フィールドも多少長くても、識別しやすい名前にすべきなんですね。