• 締切済み

Accessで書籍のデーターベースでも作ろうかと思います。

Accessで書籍のデーターベースでも作ろうかと思います。 例えば、一つの本に対して著者が2名以上いるばあいにも対応するようにフィールドを作る場合はどのようにすればよいのでしょうか。 予め、「著者1」「著者2」・・・のように複数のフィールドを作っておく必要があるのでしょうか。 アクセス、およびデーターベースについてはほぼ初心者です。 よろしくお願いいたします。

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.8

書籍1件に対して、「同様の意味を持つデータ」(=ここでは著者名)が 複数ある場合は、テーブルを分けるのが一般的です。 理由としては、一部既出の回答とかぶりますが、  1)登録可能な上限を、テーブル設計時に決めなければならなくなる   (厳密には、テーブルを分けた場合でも、「数十件」なのか「数百」    「数千・数万」なのかは見極める必要がありますが)  2)上限に満たないデータしかないレコードでは、空白のフィールドが   増え、(データ型によっては)無駄に容量を消費する  3)同様の意味を持つフィールドが複数あると、検索・抽出を行うのが   非常に厄介になる   (検索したい著者が「著者1」にあったり「著者2」にあったりするため、    1名の著者の検索のために、フィールドの数だけ抽出条件が必要) といったデメリットがあることが挙げられます。 また、『MT1_書籍』『MT2_著者』という2つのテーブルに分けた場合でも、 クエリを使用することによって、容易に「著者1」「著者2」・・・といった形の データに変換することができることも、『テーブル上で予め著者フィールド を複数用意しない理由』になるかと思います。 (但し、この形のクエリにした場合はデータは参照専用となることには  注意しておく必要があります:  ただ、これも、「直接編集はできない」というだけで、どうしても「著者1」  「著者2」・・・の形で入力・編集を行いたい、という場合は、その形の一時  作業用のテーブルを用意し、そこでの作業終了時に、マクロやVBAを  使用して本来のテーブルに変換・転記といった回避策もあります) ですので、お勧めは  「書籍1冊に1件しかない情報(書名など)を記録するテーブル」と  「書籍1冊に複数あり得る情報(著者など)を記録するテーブル(群)」  (著者、章構成など、複数あり得る項目ごとに、別々のテーブルを作成) というテーブル・フィールド構成にする形です。 このあたりについて気になるようでしたら、「テーブル 正規化」で検索 されてみることをお勧めします。 参考: http://www.shoeisha.com/book/hp/10days/down/Access_temp.pdf http://hccweb1.bai.ne.jp/~hdg93401/sad/db/seikika.html また、Accessには「テーブルの正規化ウィザード」という機能もあります ので、実際にある程度データが溜まったところで、これを行ってみると、 実際に使用しているデータに即した例が見られることになりますので、 参考になるかと思います。 (但し、このウィザードは記録されたレコードを解析することで働くため、  レコードのない状態では意味をなしませんが(汗)) ※実際の手順も含めて、上記サイトの1個目に記載されています(p.3)。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

例) 『書籍A         中野○○・中村○○』 『書籍B         中村○○』 こういうとき、 本に対する著者名としては「中野○○・中村○○」「中村○○」ですが、 著者個人データとしては「中野○○」「中村○○」の2名です。 システム的にいうデータとしては 「中野○○」「中村○○」と「中野○○・中村○○」があれば同期が必要ですがいろいろ使えます。 データ3件。 「中野○○・中村○○」から「中野○○」「中村○○」にするのは何かと面倒で 区切り文字の決まりが必要です。 書籍A         中野○○ 中村○○ と著者2フィールドでなく 書籍A         中野○○ 書籍A         中村○○ と縦イメージで2レコードのデータがあれば 書籍A         中野○○、中村○○ という1レコードを起こすことはaccessで可能です。 3人でも10人でも対応できます。 また 「著者」「著者略称」とか、「著者」「著者代表」と別途項目を設けることでも 管理できます。 「中野○○ ほか1名」とし、著者マスタ側に「中野○○・中村○○」をもたせる。 → いろいろ考えられるので、リサーチは必要です。 ネットで 「書籍」「リスト」で検索するとどんなデータがあり管理されているかイメージできます。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.6

ターゲットにする書籍、使用目的によって設計が大きく異なるでしょう 百科事典、月刊誌、週刊誌をどうするかここら辺を文書化してから取り組まれては 例えば小説と限定した場合は、著者は1名でよいでしょうが 専門書となると多くのひとが関わることがあります。 (例えば手元にあるJW-CADでは9名の共著になっています) 何れにしろ 一つの書籍に関わる著者が何名以内でよいという限定はしないほうがよいでしょう 著者テーブル、書籍テーブル、書籍サブテーブルを基として 参照テーブルとして出版社テーブル、印刷会社テーブル、分野テーブル 全てではありませんがここら辺からスタートされては

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

http://ms-access.seesaa.net/ Microsoft Access初心者入門講座 http://2003access.blog78.fc2.com/blog-category-4.html Access2003 初心者入門から実務サンプル まとめたサイトはここに限らずたくさんあります。 この1部分だけでなく 全体でどんなものを作ろうとしているかイメージを提示していただければ ある程度骨組を回答できます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

物事の始めはどうしても目標が必要に なります。OfficeでセットでAccess をインストールしていれば、サンプル としてNorthwindowや在庫管理、住所録、 出納帳などのサンプルがあります。 ただ、これらは高機能のかわりに ある程度のスキルがないとなかなか 中身が理解できないかもしれません。 WEB上には一定のキーワードで検索 をすると親切なサイト管理人が スキルの段階に応じて様々な サンプルを提供しています。 たとえば、ms access 書籍管理 で検索します。 そのような中で、書籍管理で 検索すると、たとえば以下の http://www.murun.net/murun1.htm にはゆっくりとした説明がなされています。 その他たくさんのサンプルがHITします。 掲示板で一から説明を受けてもわからいない ことが一つのサンプルをもとに理解度を あげていけば一年分のやり取りが習得 できます。少しずつスキルをあげていき、 疑問などが起こり始めたらまた質問を されたらいかがでしょう。 また、適当なサンプルはVectorなどにも たくさんあります。

akinopy
質問者

お礼

アクセスは簡単な入門書を一通り読みました。 質問のようなケースはどうしたらよいのか、検索もしてみましたが、探し方が悪いのか思うような回答を見つけられなかったのでここに質問してみました。 お教えいただいたサンプルも著者はひとりしか入らないようですね。 vecotrで探してみたいと思います。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

観点ズレてたかも。 本の著者とみればフィールド1つ、作家とみればフィールド2つ?。その人の他の本も調べたいとかあったらどっちがシステムになるか、とかどういう構成にするかで左右しそう。 本の著者として見せる箇所は1つのフィールドで値連結させて使うでもよし。著者のマスタ管理として見せる箇所は別々2レコードと連結1レコードを登録。3レコード登録しておけばー、フィールド1つでも2つでも可能。使い方は増える。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

コンピュタ処理の初期(50年以上昔)から (1)横に並べるやり方(ある同一事項のフィールドを複数にする)これには数に限度があるが。 社会常識で判断して、3名以上が多いか オバー分を切り捨てると致命的かなどが考慮される。 文字列にしてカンマででも区切り、長い文字列にするか 他のレコードにリンクするか 不定数のその数を記録として持って生かす(3著者有りの3を持って、何処から3フィールドかが判るようにする。 などがいままで考えられてきた方策とおもいます。 しかしフィールド敵に、位置の決ってない(1つのフィールドでない)レコード集合を、検索しようなどという場合は、前処理で特別な処理が必要です。 コンピュタ処理の初期から、オーバーフローした部分を別レコードにすることも行われました。 そしてオーバーフローした部分の記録は、レコード区分で見分けたりしてました。 (2)垂直に並べるやり方 1つずつ別レコードにするやり方 本XのID-著者(第1 本XのID-著者(第2 本XのID-著者(第3 ・・・ あるだけ並ぶ。圧倒的に1レコードだけが多いのだが。 これは著者という点を、非常に重きを置いて、この記録の利用を考える場合にとるとよいやり方です。 それも社会常識で決り(きめ)ます。 (3)オーバーフローすると別のレコードを見に行、仕掛けにする 詳細略 ーーー これらは設計者の長い経験や 全レコード数や 商用目的かや 記録媒体の経済性、読み書き速度、 CPUの容量や速度、 既製(市販)DBMSの進歩や安価性により、 少しは上記方法の評価が変わっていくものと思います。

akinopy
質問者

お礼

なるほど、いろいろな方法があるのですが、一長一短ですね。 今回作ろうとおもったものは、アクセスの勉強がてら自分の手持ちの書籍でもデーターベースにしようかなと思っていろいろ試していた程度のものですから、もっと簡単にできるとおもっていました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

そのデータがどう扱われるか、です。検索やら並び、名称変更でどうなる?。 著者マスタはどういう構成?。 長さが不定の1つのものを2つに分ける仕組みと2つのものを1つにするのとでは後者のが楽だと思います。 小さい単位に分けておく方が良いです。

akinopy
質問者

お礼

回答ありがとうございます。 書籍のデーターベースといっても、全然たいしたことなくて、アクセスの勉強がてら自分の手持ちの書籍でもデーターベースにしようかなと思っていろいろ試していたのですが、その中に著者が複数あるものがあり、これはどうしょりをすべきか疑問に思ったので質問をしてみました。 本によっては、著者が10名とかいう本もありますので、10個もフィールドを用意すべきなのでしょうか。

関連するQ&A