• ベストアンサー

データベースの物理設計(素人)

まったくの素人です。 オラクルで、データベースの物理設計とは具体的にどういうことを言っているのでしょうか? 実装設計のことですか?  実際にデータベースを構築するハードウェアが決まっていなくても設計することが可能なのでしょうか? そもそも、データベースを設計するにあたって、どのような順序でどういうことを決めていかなければいけないのか? が よくわかりません。 概要レベルでいいので、どういうことを どういう順序で設計進めていけばいいのか? 物理設計は、その流れの中のどのポジションにあって、何が決まっていないとできないものなのか?を教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • luune21
  • ベストアンサー率45% (747/1633)
回答No.1

概要でよければこんな感じです。 DBの設計はおおまかに分けると、 論理設計→物理設計(実装)→運用設計の3フェーズで行います。 したがって、物理設計の前に論理設計が終わっていなければなりません。また、ハードウェア構成の概要(ポリシ)くらいは決めておく必要があります。しかし、現実には、ハード構成のほとんどは物理設計で決まることが多くあります。 物理設計の流れは、以下のような手順になります。 1.インデックスやキーなどのテーブル定義の決定 2.データ容量、ディスク容量見積り 3.テーブル配置、スペース定義 4.パフォーマンスなどの最適実装の検討 5.DDL作成 実際は一回で終わることはあまりなく、論理設計に戻ったり、何回かグルグルまわりながら設計します。 簡単にまとめれば、論理設計は、そのDBで何がしたいのかということのまとめ、物理設計はそれをどう実装するかのまとめ(実際は実装まで)ということができます。

nakasako
質問者

お礼

ありがとうございます。 物理設計は、やはり少し後の工程なのですね。 今、まだテーブル定義の工程だという認識なので、ハードウェアの設計部隊が「早く物理設計を」というのは、ちょっと焦っているということですかね。 もう少し、整理してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

物理設計というと、データベースの構成を設計していくフェーズだと思います。 たとえば、 ・テーブルを格納する表領域をどのくらいのサイズ、ファイルで作成するか ・バックアップの方針をどうするか ・DBの使用するメモリをどれだけ許容するか などなど・・・。 なので、事前にテーブルの構成やデータ件数などが必要ですね。 細かい点は参考URLのページを参照してください。 #ユーザ登録が必要です(無料)

参考URL:
http://otn.oracle.co.jp/skillup/oracle9i/index.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Oracleデータベースのスクリプト出力方法

    Oracleデータベースの構築をすることになりました。 Oracleはなんとなくわかるレベルです、構築は見たことがある程度です。 前任者からはスクリプトファイルがあるとの引継ぎはあったのですが、現データベースのものなのか現データベースの構築時に使用されたその前のデータベースのものなのかがわかりません(前任者は退職したため確認できません)。 私としては現データベースの現状を移行できればと思っているのですがスクリプトを出力する方法を教えていただければと思います。 コマンドでもGUIでも構わないのですが、手順がわかればと思います。よろしくお願いします。 現データベースはOracle12.1.0.2.0です。

  • 利用者数10万のデータベース設計について

    WEB上で利用者数10万のマイページ機能をもつようなビジネスサイトを構築しようと考えています。 ユーザーのID,PASS管理と ユーザーごとのマイページの中にスケジュール管理機能、顧客管理機能 を設けます。 このような大規模なデータベースの設計例を教えていただけないでしょうか? データベースにはMySQLを使用しようと考えています。 ユーザーのID管理は一つのテーブルじゃ無理ですよね? その場合どのように分ければいいのしょうか? ユーザーごとのマイページはユーザーごとにスケジュールテーブルなどを 作るべきなのでしょうか? MySQLの物理的最大DB,テーブル数の制限などあるのでしょうか? 私自身はデータベースプログラムが出来ないため設計の部分でお教えいただけたらと思います。

  • データベースの設計方法について

     全くの初心者で、いろいろな書籍を参考に販売・在庫管理データベースをつくりたいと勉強しています。  環境はMicrosoft SQL Server 2008 R2 EE をサーバーにインストールして、別のクライアントパソコンから SQL Server Management Studio でデータを作成しています。  データベースとは閉じた空間で、1つのデータベース内で必要なテーブルを全て用意するものと思っていました(参考にした書籍もそうなっていました)。  しかし、ネットでいろいろ調べるとインスタンス内に複数のデータベースを作成し、それらデータベース内のテーブルは相互接続可能出来るみたいでした。  となると、データベースを設計する際 <販売管理データベース>  ・顧客情報テーブル  ・商品情報テーブル  ・在庫テーブル  ・単価テーブル  ・請求データテーブル  ・伝票テーブル  ・etc.  と1つのデータベースに全てのテーブルを用意する設計では無く <販売管理データベース>  ・伝票テーブル  ・請求データ  ・etc. <顧客情報データベース>  ・顧客情報テーブル  ・単価テーブル  ・etc. <商品情報データベース>  ・商品情報テーブル  ・在庫テーブル  ・etc.  みたいに、機能ごとにデータベースを分けて、インスタンス単位で1機能(もしくは複数機能の実装)の設計でも良いのでしょうか?  プログラム言語の、プロジェクト=インスタンス、クラス=データベースみたいな考え方が出来ればと思っています。  この方法が正しいのか誤りなのか、そもそも理解に誤りがあるのか全く見当が付きません。  一般的にはどのようにするものなのでしょうか?

  • データベースの構築

    わたしの知り合いの人が現在、失業中で経理職の管理職で応募しているのですか、面接の際、システムの経験(オラクルとかSAP)のことをよく聞かれるらしいです。その人の会社は、自社のSE子会社が開発しているシステムを使っているそうです。 これは自社開発といってもオラクルやSAPの汎用のソフトの ベ-スがないとだめなのでしょうか。 オラクルやSAPについてはデータベースの構築が出来るかどうかですって。この場合のデータベースの構築とは具体的 にどのようなことでしょうか。

  • データベースの最適化をマクロでしたい

    お世話になります。 Accessのマクロのコマンドで データベースの最適化をしたいのですが、 「マクロまたはVisual Basicコードの実行中に、開いているデータベースを最適化することはできません。」とういうエラーメッセージが出て最適化されません。 マクロの一連の流れの最後で、データベースの最適化をしたいと 思っていますが、具体的にどのようにすれば、 データベースの最適化を実行できるのでしょうか? ※直前に「データベースを閉じる」的な物をいれられるのでしょうか? 素人で大変申し訳ございませんが、具体的に教えて頂ければ助かります。

  • データベースの設計について

    現在PostgreSQL(ver 8.4)を使ってちょっとしたシステムの構築を計画していますが、データベースの設計に関して広くアドバイスを頂きたいです。 ユーザーの入力データをDBで効率よく管理したいと考えています。 例えば、次のようなテーブルを作るとします。 userテーブル id | name ---+------------- 1 | 山田太郎 2 | 高橋次郎 .. | ............. .. | ............. emailテーブル id | address ---+------------------------------ 1 | yamada@mail.com 2 | takahashi@mail.com .. | ................................. .. | ................................. この様な複数のテーブルにユーザーの入力を受け、1対1に対応するIDを振って名前やアドレスなどのデータをリアルタイムで挿入していく場合、どのようなテーブルを用意し、プログラムを組むのが適切なのでしょうか? 具体的には、PerlでCGIをつくり、ブラウザ上などからユーザーの入力したデータを取得してPostgreSQLに次々挿入していく形にしようとしています。 具体的なPerlのコードを書いていただけると助かるのですが、他の言語のコードでも一向に構いません。 今のところ、自分で考えたものとしては、 create table user( id serial, name text); create table email( id serial, address text); とテーブルを用意し、 Perlコードの概要は use DBI; # *実際にはユーザーの入力値から値を得る $input_user = 'name_hogehoge'; $input_email = 'address_hogehoge@mail.com'; # DBとの接続 $dbh = DBI->connect("dbi:Pg:dbname=hogehoge", ......); # プレースホルダの準備 $sth_user = $dbh->prepare("INSERT INTO user (name) VALUES(?)"); $sth_email = $dbh->prepare("INSERT INTO email (address) VALUES(?)"); # SQLの実行 $sth_user->execute("$input_user"); $sth_email->execute("$input_email"); # コミット $dbh->commit; といった感じで考えていました。しかしidの対応が確実に取れるかなど不安な点がありますので、アドバイスいただけたらと思います。 もちろんこの方法に固執する必要はなく、結果的に同じようなテーブルが得られれば問題ないです。 長々と失礼致しました。

  • 設計素人が機械設計職を目指し独学しています

    設計素人が機械設計職を目指し独学しています ぐだぐだと長く書いてしまいました 要は 「機械設計技術者の3級と技術士1次試験(機械設計)を 全くの素人のつもりで一から独学で学びたいので 試験範囲を網羅するお勧めの本等々、様々な建設的情報を紹介頂きたい」 というのが以下の内容です。 どうぞお付き合いの程をご容赦ください。 私は 設計業務従事者に転校するのに限界とされる年齢を 誤差の範囲を含めて 既に遙か昔に超えていますが、 とある方に出会い、本当に短い間ではありますが学科として教えを請い 機械設計職への夢を頂戴し、また 強くお褒め頂くに預かりました。 しかし当然実務経験はなく、 機械設計職の求人には連戦連敗状態です、 未経験可の求人に多くの経験者の方が応募されている現状では 自然な事でしょう、 「もう不可能だから諦めた方がいい…」 こういう意見が多分99%を占めるであろうことも重々承知しているつもりです。 でもだから諦める? そんな方向性は私の「今」にあり得ません、 「諦める」という行為は、諦める余裕のある人にしか許されない ある種“贅沢”な選択だと思います。 そもそも、 この年で転向を決意した時点で後退はあり得ません、 まさに背水の陣です。 未経験で取得できる如何なる資格を取ったとしても 経験者に見劣りする事は重々承知していますし、 技術士1次試験と機械設計者の3級が 工業大学卒程度のレベルでしかないことも漏れ伺っていますが、 せめて未経験の方々のなかでのトップクラス、…  いやそれが駄目でも 目に見えない程であろうとも、 例え1mmでもより有利な条件に向上し、就職につなげたいのです。 私の資金が完全に底を突いてしまう前に この2つの資格を早急に取得したいので、 参考図書を初めとする様々な情報を頂ければ幸いと、 まかりこしました。 どうぞご教示をお願い致します。 最後に、長文で ともすれば愚痴とも取れる このようなものに 最後まで目を通して頂けた事を感謝致します。

  • oracleの勉強がしたい初心者です。

    DBに関しては、SQL文とMySQLで初歩の初歩を講座で受けたぐらいのレベルです。Oracleで設計、構築がしたく、Oracleの本を買い「Oracle Enterprise Maneger」をインストールしましたが、パソコンが重くなるのでアンインストールしました。よく調べると「Oracle Enterprise Maneger」はDB管理者が使い現場でも1つのパソコンにインストールするぐらいで、通常の設計、構築をするDBをやるSEは使わないと聞きました。では、Oracleの全くの初心者が設計、構築をするには、どのツールで勉強はじめればいいですか?参考になりそうなサイト、本、ツールなどありましたら、教えてください。

  • テーブル設計で迷っています

    今、初級シスアドの試験の過去問をデータベースかする為、テーブル設計をしていますが、どうしてもうまく一元化できません。 システムの概要 ・ユーザにアカウントとパスワードを作ってもらいログインしてもらう ・作成時に同じアカウントがある場合は別のアカウントにするよう指示を出す ・ログイン終了後、過去問(19年秋~16年春まで)を選ぶか、分野 ごとに分けた分野の問題20問1セット(データベースならデータベースだけの問題 など)を選ぶか選択してもらう。 ・試験を開始して終了後、成績を分野別と総合で表示。間違って解答した箇所は解答と解説を表示 大まかなシステムの概要でしてテーブルは今こんな状況の設計です。 ・アカウント アカウント番号 アカウント名 パスワード 氏名 ・成績 アカウント番号 日付 分野コード 配点  ・試験範囲 試験コード 試験名 例 0001  19年春午前 ・分野範囲 分野コード 分野名 例 0002  データベース ・問題 試験コード 分野コード 問番号 選択肢(ア~エ) 解答 配点 ・解説 試験コード 問番号 解説 一番問題なのは、成績・試験問題・解説・解答を管理するに当たって どの試験のどの問題なのかを特定するのに試験コード・分野コードが 重複しすぎてるところが一番悩んでいます。 テーブルの設計に詳しい方教えていただけませんか?どうしてもこのシステムを完成させてシスアド受ける自分の為にも、これから受ける人の 為にも実装させたいです

  • ORACLE勉強方法について教えてください

    お世話になります。 ORACLEについてお伺いします。 会社で構築会社に依頼して構築した基幹システムがORACLEデータベースで動いていますが、社内にORACLEのわかる人間が一人もいない状況です。 そこで、「ORACLEとは」という初歩的なところから、簡単なコマンドなどマスターするように会社で命じられました。 セミナーや講座には行かせてもらえるのですが、ORACLEの講座は少し調べてみたところ、結構高額のような気がしました。 ですので、セミナーを選択する、もしくは勉強法(スクールなど)をご存知の方がいらっしゃいましたらお教えいただけますでしょうか。 「ORACLE9i」というバージョンでした。 ちなみに私の知識レベルは、ORACLEに関してはまったくわかりません。 現在の仕事はサーバの保守・構築、ネットワークの保守・構築などを担当しています。 よろしくお願いします。