-2

私は聖書のプロジェクトを持っており、ページに結果を表示する際にどちらがより高速で効率的かを判断するために、専門家からの情報が必要です。

現在、私の聖書テーブルには 3 つのフィールドしかありませんか? id、verse_code、および verse_content。

適切な聖書の本と詩を単語で表示できるようにするために (創世記 1:1 など)、66 個のケースを含む verse_code で switch-case ステートメントを実行しています...

select (verse_code)
{
case 1: echo "Genesis";
case 2: echo "Exodus";
...
case 66: echo "Revelation";
}

このままにしておくか、新しい列book_nameを追加して、対応する各節の書籍名を入力することができます。これは 31,103 行に相当します。

パフォーマンスに関しては、これら 2 つのアプローチの方が高速です。31,103 行の書籍名を入力しますか?

テストコードはこちら。 http://sandbox.littlegraffyx.com/bible/test.htmlを使用するには、Gen x:x と入力してみてください。x は章と節、そして本の最初の 3 文字です。サンプル: Gen 1:1 または Exo 2:2

テキストボックスは左下にあります

ありがとう

4

1 に答える 1

1

最善の方法は、クエリでルックアップ テーブルを使用することです。とにかくデータベースへのラウンドトリップを行っており、このようなデータを結合するデータベースの場合は、次のように設計されています。

CREATE TABLE verses (verse_id INT PRIMARY KEY AUTO_INCREMENT,book_id INT NOT NULL, chapter INT NOT NULL,verse INT NOT NULL, verse_content TEXT NOT NULL, FOREIGN KEY(book_id) REFERENCES books(book_id)) ENGINE = InnoDB;

CREATE TABLE books(book_id INT PRIMARY KEY AUTO_INCREMENT,book_name VARCHAR(100)) ENGINE = InnoDB;

ここで verses テーブルを使用すると、books の外部キーとして機能する book_id フィールドが表示されます(したがって、既存の本にリンクしていることが確実です)。今後、クエリで使用して、verses のデータを book_name と結合することができます。本。

次に、本の book_id が詩で見つけたものでなければならないことを指定するクエリ条件でそれを検索でき、クエリは自動的に正しい本のタイトルを返します。

 SELECT book_name,chapter,verse,verse_content FROM verses,books WHERE books.book_id = verses.book_id;

結合は、データの把握を本当に強化する優れた SQL 概念の 1 つです。Jeff Atwood によるこのブログ投稿は、結合があなたにとって何を意味するかを明確に理解するのに役立ちます。検討することを強くお勧めします。:)

追加のボーナスとして、これはおそらく自分で使用するためだけに書いているわけではないため、コードから視覚化されたデータをデータベースに配置して抽象化すると、この側面 (データ入力とデータ修正) を他の人に引き渡すことができます。 (基礎となる)コーディングを完全に知らない可能性があります。

タイプミスをして Peter の代わりに Potter と呼んだ場合、人々がソース コードを変更しなければならないことを望んでいますか? それとも、コードを Peter に変更できるように、コードから離れた優れたインターフェイスを提供する方が安全でしょうか?

また、相互に干渉したり、コードに干渉したりせずに、全員にデータを挿入させることで、より多くの人に作業を分散させることもできます。

于 2012-06-16T23:02:32.423 に答える