4

大学を卒業したばかりの私は、データベースを設計する「正しい」方法を教えられてきました。たとえば、データベースの正規化、テーブルの構造化方法など。

今、私は彼らが大学で教えてくれなかった何かに直面しています...

MyISAMまたはInnoDBの2つのデータベースエンジンを選択できるようです。

InnoDBストレージエンジンを使用してリレーショナルデータベースを構築できることは知っていますが、テーブルをリンクできないため、MyISAMストレージエンジンを使用してリレーショナルデータベースを構築することはできません。

だから-私の質問-そして、私がただ愚かであるのか、それとも単にトリックを逃しているのかを教えてください...

MyISAMでリレーショナルデータベースを構築できない場合、それは何に役立ちますか?MyISAMでデータベースの整合性を確保するにはどうすればよいですか?ほとんどの人はMyISAMまたはINNODBを使用していますか?2つのMyIsamテーブル間に制約を適用するにはどうすればよいですか?

たとえば、小さなオンラインストアを構築している場合、商品用のテーブルとカテゴリ用のテーブルが1つずつあります。製品は1つのカテゴリに属している必要があります。MyIsamを使用してこれを構築するにはどうすればよいですか?

4

2 に答える 2

5

MySQLの現在のバージョンでは、MyISAMテーブルで定義されている外部キー制約が適用されないことは事実ですが、そのようなテーブル間の関係を作成できないことを意味するわけではありません(結局のところ、1つのテーブルデータを保持するだけの問題です)。別のテーブルの関連レコードを識別します):それらを適切に管理するには、より注意する必要があります。

強制されたACIDコンプライアンスが重要である場合は、InnoDBが最適です。特定の状況でパフォーマンスを向上させる見返りにそのようなコンプライアンスを犠牲にすることができる場合は、MyISAMを一見の価値があります。必要に応じて、同じデータベース内で両方のストレージエンジンを組み合わせて、バランスをとることもできます。

MyISAMとInnoDBの長所と短所について説明しているリソースはたくさんあります。Google(またはこのサイト)で検索するだけで見つかります。

于 2012-09-08T19:34:57.540 に答える
0

リレーショナルモデルは、そのモデルに準拠したデータベースを構築するためのケースを明確にするために、1969年から1970年に開発されました。最終的に階層型データベースに入るデータをモデル化するためにリレーショナルモデルを使用する必要がある特別な理由はありません。ただし、リレーショナルモデルを使用して、階層型データベースからデータがDBMSクライアントに配信される前にデータを記述するのに役立つ場合があります。

データのリレーショナルモデルは設計ツールであり、実際には分析ツールではないことを理解することが重要です。データのERモデルは、リレーショナル実装やSQL実装など、特定の1つの実装に分析を傾けることなく、データ分析のために正確に考案されました。ERモデル自体には、外部キーはありません。外部キーはソリューションの機能であり、問​​題の機能ではないことを理解することが重要です。

たぶん、MyISAMを使用して適切なデータベースを構築するには、データベースを構築する正しい方法を再学習する必要があります。大学で学んだことは、階層型データベースを構築する必要のある学生がいないことを前提として、リレーショナルデータベースを構築する方法だったかもしれません。

警告:ほとんどの階層型DBMSには、その上に「リレーショナルレイヤー」が埋め込まれているため、リレーショナル用語で考える人は、リレーショナルモデルを片側に置くことなくツールを使用できます。また、リレーショナルDBMSは、少なくともいくつかの点で、非リレーショナルDBMSよりも「優れています」。1969年から1970年に行われた議論は、依然として大部分が有効です。

于 2012-09-09T13:06:01.520 に答える