質問: こんにちは。Webアプリの作成を勉強中です。 今回の内容にはあまり関係ありませんが、言語はJava、フレームワークはspring bootです。 本題ですが、データベース設計における一対多、多対一の関係について質問があります。 ### 当方の知識レベル 例えばTwitterのようなサービスで言えばユーザー(User)とツイート(MicropostPost)は**一対多**の関係と言えると思います。 日本語にすれば「1人の User は複数の Micropost をツイートすることが可能であり、 Micropost は 必ず1人の User に所属する」という感じだと思います。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/06ec1de6f348c2eba6da307fb4ca8c3a.jpeg) ### 今回の質問 今回質問したいのは、Springの教本上で出てくるデータベース設計のテーブル間の関係について理解ができないので私の解釈を確認いただきたいのです。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3b8edcf7b394989d2ecf72f63acbd37a.jpeg) ここでは会議室予約システムのチュートリアルをしています。 その中で4つのテーブルが出てきます。 ・usr(ユーザー) ・meeting_room(会議室) ・reservable_room(予約可能な会議室) ・reservation(予約) 教本によると(reservable_roomの欄)reservable_roomとmeeting_roomは多対一の関係だと言います。 これを日本語にすると「会議室は複数の予約可能な部屋となることができ、予約可能な部屋は1つの会議室に属する」... 続いてreservationの欄を見るとreservationとreservable_roomは多対一で日本語にすると「予約可能な部屋は複数の予約をすることができ、予約は1つの予約可能な部屋に属する」...日本語の意味がわからん。。。重複予約を許容すると言っている? reservationとusrも多対一だそうです。日本語にすると「ユーザーは複数の予約をすることができ、予約はユーザー1人に属する」...怪しいけど何となく言いたいことはわかる。 もうちょっと「コレだ!!」っていう解釈をしたいのですがご教授いただけないでしょうか? よろしくお願いいたします。
回答: なんかテーブル名を一生懸命日本語に直して意味を考えてますけど、隣にそのテーブルがなんであるか書いてありますよね? 例えば reservable_roomは「特定の日に予約可能な会議室の情報」 reservationは「予約情報」 なんですから、 「特定の日に予約可能な会議室の情報」1つに対して「予約情報」が複数存在できる。