質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1450閲覧

O/RマッピングかTwitter API式か

pandanoir

総合スコア72

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/07/03 00:30

今、データベースを構築しようとしてるのですが、どういう構造にしようか迷っています。

案件としては、「アカウントがあり、アカウントが商品を購入すると、購入履歴に商品が追加される」というものです。

(まだO/Rマッピングに疎いので合ってるかわかりませんが)愚直にO/Rマッピングをすると「Userクラスがあり、historyというフィールドがあり、データベースと連携させる」となると思います。

Twitter API風にするならUserクラスはidを格納していて、historyを持たず、API::history(id)として履歴を取得するのと思います。

データベース初心者でどちらで設計するべきか悩んでいます。Twitter API、O/Rマッピング、はたまた別の手法、どれが適しているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

O/Rマッピングはオブジェクト指向設計とリレーショナルデータベース設計の差異を吸収してうまいこと橋渡しするための実装上の工夫のことです。
O/Rマッパーは言語によって色々ありますが、内部的にはDBクエリを発行しており、どのようなクエリを発行しているかを意識しないでオブジェクト指向チックにデータアクセスの実装が可能です。
使用するにはオブジェクト指向設計とリレーショナルデータベース設計に関する深い知識が前提にあります。

ネットに溢れるサンプルにはO/Rマッパーを使用すればさくっと書けるという記述が散見されますが初心者、特にDB初心者が使用すると大切なDB設計に関する知識が抜け落ちてしまう危険性があります。
中級者以上になるにはデータベースに関する知識が大切だと個人的に考えています。

O/Rマッパーを使用することとデータベース設計をどのようにするかは無関係です。テーブルの正規化をしっかりと行い、効率のよいインデックスを貼り、クエリとスキーマの最適化を図ることでチューニングする。設計はプログラムの実装よりもっと大切なもののはずです。

また、「Twitter API風」とおっしゃっていますが、APIの返り値とDB設計は無関係です。

投稿2016/07/03 00:58

romiogaku

総合スコア546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問