2

私は単純な Android アプリを使用しており、データベース テーブル (mysql) を整理する最良の方法を知りたいと考えています。アプリのアイデアは、カテゴリのリストであり、ユーザーがこれらのカテゴリのいずれかを押すと、別のアイテムのリストが表示され、そのうちの 1 つをクリックすると、その詳細が表示されます。

たとえば、最初のリスト (国) には (英国、米国、中国、日本、およびその他の国) があります。

米国をクリックすると、別のリスト (州) が表示されます (カリフォルニア、ニューヨーク、アリゾナなど)。

カリフォルニアをクリックすると、その詳細(人口、面積、首都)が表示されます

イギリスをクリックしてからロンドンをクリックしても同じことが起こります...

では、どのようにデータを整理すればよいのでしょうか?

  1. 国ごとに 1 つのテーブルと各国ごとに別のテーブル、

  2. すべての州に対して 1 つの大きなテーブルのみで、どの国に属しているかを示す列があります。

  3. 他の提案はありますか?

4

3 に答える 3

1

次のようなことを試してください..そこから行ってください..

create table countries (
  id int(11) not null auto_increment,
  name varchar(255) not null,
  primary key (id)
);

create table states ( id int(11) not null auto_increment, name varchar(255) not null, country_id int(11) not null, primary key (id) constraint foreign key (country_id) references countries(id) on delete cascade );

create table properties ( name varchar(255) not null, primary key (name) );

create table state_properties ( id int(11) not null auto_increment, property varchar(255) not null, state_id int(11) not null, primary key(id), constraint foreign key (property) references properties(property) on delete cascade, constraint foreign key (state_id) references states(id) on delete cascade );

編集:タイプミス

于 2013-06-13T18:45:30.940 に答える
1

3 つのテーブル 1 を国用に、別のテーブルを州用に、別のテーブルを詳細用に作成する必要があります。

理由:

  1. これにより、冗長なデータがなくなり、正規化ルールに従います。
  2. それ以外ではなく、必要な唯一のデータを取得します。

フォーム送信または ajax を使用して、テーブルからデータを取得できます。

編集:

州に対応する詳細のデータを保存し、次に国に対応する州のデータを保存するため、IAM の要求に従ってデータベースにデータを保存し、各州の 1 つの列に国名を複数回入力します。このような国や州のデータはデータベース内で複数回になり、データベースが重くなります。

于 2013-06-13T18:40:05.420 に答える
0

情報が JSON または XML BLOB として格納されていると仮定すると、2 つのテーブルが必要になります。1つまたは3つではありません。ゼロから構築します。

CREATE TABLE locale (locID int PRIMARY KEY, data BLOB )

CREATE TABLE localGrouping (
    groupID int PRIMARY KEY,
    groupName varchar(255),
    parentGroup int NULL,
    locID int NULL
)

国のリストを取得してから、都市または州にドリルダウンしたいとおっしゃいました。これはすべて見つけてダンディですが、都市の上の州レベルで統計を含めたい場合はどうなりますか? それとも、近隣よりも上の都市レベルですか?

適切なプログラミングと同様に、適切なデータベースの正規化は、「ゼロ ワン インフィニティ」ルールに従います。特に階層データセットに関しては。

(もちろん、LOCALE上から下に適切なテーブルがいくつあっても自由に追加してください。ただし、ロケールのプロパティで比較インデックスを実行する予定がない限り、シリアル化されたデータ オブジェクトで問題ありません。)

于 2013-06-15T00:06:11.117 に答える