0

自分でmysqlデータベースを作成するのはこれが初めてであり、いくつかのポインターを期待していました。以前の質問を調べたところ、一度に複数のテーブルを検索できることがわかりました...そのため、私の可能性が広がりました。

私がやろうとしているのは、PHPページにスノーモービルクラブの検索可能/フィルター可能なリストを表示することです。

これらのクラブは、州、郡ごとに一覧表示できるか、名前やその他の情報で検索できる必要があります。

また、エントリーの順番に関係なく、結果をアルファベット順に並べてほしい。

現在、私の心はニューヨーク、PAなどのテーブルを持っている代わりにありました

County(varchar)、Clubname(varchar)、Street address(long text)、phone(varchar)email(varchar)website address(varchar)の列あり

NY.ALBANY、NY.MADISONなど、実際に郡ごとに複数のテーブルを作成する必要があります。

私が選んだフィールドフォーマットは賢明なものですか?

住所をサブコンポーネントに分割する必要があります...street1、street2、city、state、zipなど。

最終的には、「trailsopen」の列に「はい」または「いいえ」を付けて、入力に基づいてtrの背景を緑または赤に変更したいと思います。

これが理にかなっていることを願っています...

4

5 に答える 5

1

これが私があなたのデータベースをセットアップする方法です:

state
id (tinyint) //primary key auto incremented unsigned
short (varchar(2)) // stores NY, PA
long (varchar(20)) // Stores New York, Pennsylvania

county
id (int) //primary key auto incremented unsigned
state_id (tinyint) //points to state.id
name (varchar(50))

club_county
id (int) //primary key auto incremented unsigned
county_id (int) //points to county.id
club_id (int) //points to club.id

club
id (int) //primary key auto incremented unsigned
name (varchar(100))
address (varchar(100)
city (varchar(25))
zip (int)
etc...
于 2013-02-08T14:30:49.587 に答える
0

私の見解では、1つのテーブルで十分なようです。MySQLは非常に堅牢であるため、ほぼすべてのことを実行する方法はたくさんあります。MySQL Workbenchをダウンロードして使用することをお勧めします。これにより、テーブルの作成、テーブルの変更、およびクエリの記述が、Webページに埋め込むよりも簡単かつ迅速になります。

MySQLWorkbenchをダウンロード-> http://dev.mysql.com/downloads/workbench/

また、MySQLクエリについて多くを学ぶ必要があります。必要なすべての情報を1つのテーブルにまとめることができると思います。秘訣は、情報を表示するためにどのクエリを使用するかです。

たとえば、テーブルが1つだけで、すべての状態が一緒になっているとします。次のようなクエリを使用して、ニューヨーク州のスノーモービルクラブだけを表示できます。

select * from my_table where state = "NY";

結果をクラブ名のアルファベット順に表示する場合は、次のように使用します。

select * from my_table where state = "NY" order by clubname;

オンラインにはたくさんのドキュメントがあります。したがって、かなりの数時間の調査を行い、MySQLWorkbenchで遊ぶことをお勧めします。

Stack Overflowの目的は、特定のコードやクエリに関係するより具体的な質問に答えることです。したがって、プログラムを作成して何かに困惑したら、ここで特定の質問をすることができます。幸運を!

于 2013-02-08T14:00:01.093 に答える
0

Uは、複合キー制約を使用して単一のテーブルを作成できます。たとえば、会社に3つの部門があり、それぞれに複数のサブ部門があります。したがって、このようなデータベースを作成できます。Dept_id || sub_dept_id || 名前|| サル|| 住所|| 電話..ここで、Dept_idとsub_dept_idは共同で主キーを表し、その一意性を確認します。

ただし、データベースが大きくなりすぎる場合は、この手順を実行する前に、そのシナリオでクラスタリングまたはインデックスが必要になる可能性があることを考慮してください。SQLクエリを作成するときは、メインモジュールをサブモジュールの数に分割することをお勧めします。だからあなたはアドレスを破ることができます。あなたのyes/noに従って....整数フィールドを使用し、YESの場合は1、それ以外の場合は0(ゼロ)を格納するように計画します。

于 2013-02-08T14:02:54.927 に答える
0

個々の郡ごとに個別のテーブルを作成するべきではありません。代わりに、州のテーブル、郡のテーブル、および住所のテーブルを作成する必要があります。

結果は次のようになります。

州(id、コード、名前)、郡(id、stateID、名前)、クラブ(id、countyID、名前、streetAddressなど...)

何をいつ分割するかを決定するために使用されるプロセスは、「データベースの正規化」と呼ばれます。実際には、これを行うアルゴリズムがあります。その上のwikiページから始めるのが良いでしょう:http://en.wikipedia.org/wiki/Database_normalization

他のフィールドのvarcharと同様に、番地の1つの長いテキストで問題ありません。

于 2013-02-08T14:08:30.110 に答える
0
  1. NY.ALBANY、NY.MADISONなど、実際に郡ごとに複数のテーブルを作成する必要があります。

状況によって異なりますが、説明したケースでは、すべてのスノーモービルクラブを含む1つのデータベーステーブルと、すべての州/郡用の1つのテーブルを用意することもできます。クラブテーブルでは、エントリを特定の州/郡のエントリにリンクする外部キーとしてidフィールドを持つことができます。すべての情報をまとめるには、テーブルに対してJOIN操作を実行する必要があります(mysqlのドキュメントを参照してください)。

  1. 私が選んだフィールドフォーマットは賢明なものですか?

彼らは働くだろう..

  1. 住所をサブコンポーネントに分割する必要があります...street1、street2、city、state、zipなどですか?

基本的に、ここでの問題は、現在または将来、サブコンポーネントに分割する必要があるかどうかです。分解すると、データが分離されるため、さらに処理(シリアル文字の生成、自動ルックアップなど)が簡単になる可能性がありますが、処理によって異なります。あなたがそれを分離する必要がないのなら、なぜ人生をより複雑にするのですか?

すでに多くの答えが..同意しました。

于 2013-02-08T14:13:46.180 に答える