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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

6回答

1905閲覧

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

n-choco

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

2グッド

1クリップ

投稿2020/09/13 03:15

編集2020/09/13 03:18

データベース設計について質問があるのですが、データベースの設計を行うときに、エラーは出てなく動いていたとしてもその構造であったり設計が悪く結果としてDBからデータを取ってくる際にコードが長くなってしまうということが起きてしまいます。

このデータベース設計についてはマニュアルの様にルールは決まっていないかと思うのですが、設計についてはどの様に勉強すれば良いのでしょうか?

ER図を書く際にもどの様な設計が良いのかは一応考えているつもりです。

おすすめの本であったり、教えていただけると幸いです。

kai0310👍を押しています

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

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

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

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

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

1T2R3M4

2020/09/13 03:25

ご自身で調べた結果は何もないのでしょうか。
hentaiman

2020/09/13 04:51

ほぼ何も分からない初心者だと思って提案すればいいんですか?それともある程度分かっている? > ER図を書く際にもどの様な設計が良いのかは一応考えているつもりで す。 どんな情報や経験をもとにどんな設計にしているのかなど、何かしら自身が設計している例などが無いと判断出来ない。 全くなにも分からない(感覚で設計している)のか、何かしら基礎となる知識を持って試している事があるかなど、そういった情報があると回答がし易い。
n-choco

2020/09/13 08:34

> ほぼ何も分からない初心者だと思って提案すればいいんですか?それともある程度分かっている? 中間テーブルを用いた構造であったり、正規化などの一定の知識はあるかとお思っています。
hentaiman

2020/09/13 08:55

なら質問者自身の考え方をデータ例と設計を載せてくれないとレベル感が分からないので尚更回答し辛い。 特に長いコードというのを気にしているようなので、そのテーブル定義とSQLだけでも載せないと。
guest

回答6

0

データベース設計は具体的なものを想定して行うとわかり易いかと。
レシートのような帳票、スマホやPCの画面を漫然と見るのではなく、このデザインの裏ではどんなテーブルで設計されていて、どんなSQLが実行されているかを考えると良いのでは?

【DB設計入門|ER図|MySQL】コンビニレシートから学ぶ!データモデリング手法

投稿2020/09/13 04:16

Orlofsky

総合スコア16415

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

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

n-choco

2020/09/13 08:38

ありがとうございます。 リンク先の記事を読まさせていただきましたが、いくつか新しい気づきを得ることができました。
guest

0

ER図を書く際にもどの様な設計が良いのかは一応考えているつもりです。

DBからデータを取ってくる際にコードが長くなってしまうということが起きてしまいます。

ER図は書けていてそのようなことが起きるなら、概念モデルの精査が出来ていないか、正規化を緩める必要があるという事だと思います。

概念モデルの精査に関しては、他の技法(UML等)を用いて、エンティティの要/不要を多角的に見直してみる。
※特にシーケンス図やメッセージ設計で必要とするエンティティの場面や内容が明らかになります。
オブジェクト指向モデリング言語 UML ※ちょっと古いですが全体を見渡しやすい

正規化を緩める場合は、集計テーブルやSQLアンチパターンの見直し(DBMSによっては提供される機能によって、アンチパターンという程でもないものもあります[json型や配列等])などを検討されると良いかと思います。

もう1点は取得するSQLそのものの見直しです。
(ER図の設計が大筋正しいなら、この点が一番可能性は高いかと思います)
記述が簡潔になる、DBMSが提供する機能や関数の見落としがあるかもしれませんし、そもそも単に冗長な記述になっているだけかもしれません。

投稿2020/09/13 05:29

編集2020/09/13 08:54
sazi

総合スコア25206

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

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

n-choco

2020/09/13 08:37

ありがとうございます!リンク先にあったSQLアンチパターンの書籍も良い書籍となっているのでしょうか?
sazi

2020/09/13 08:52

読んだ事はありませんが、評価は良いようです。
guest

0

ここにあるようなもの読んでおけばいいかと。
【2020年版】データベース設計について学べる入門書3選

あとは、実践あるのみですかね。

投稿2020/09/13 03:33

編集2020/09/13 04:11
Suumon

総合スコア211

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

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

Suumon

2020/09/13 04:12

失礼しました。
guest

0

質問者の質問要点がよく理解できていませんが、

このデータベース設計についてはマニュアルの様にルールは決まっていないかと思うのですが、設計についてはどの様に勉強すれば良いのでしょうか?

ざっくりとした手順は、Wikipedia にも掲載されています。

データベース設計

ただ、ER 図がかけるレベルの人であれば、書いてあること程度は理解していると思うんですよねぇ。。。

課題は「SQL が複雑になりすぎてしまう。またはパフォーマンスが出ない」といったことなのでしょうか?

その場合は
・SQL の整理
・DB の再設計
になると思いますが、一般的な DB の設計からはズレてきます。

チューニングの範疇になると思うので、いわゆる「設計のアンチパターン」適用も視野に入れるケースがあります。(正規化を緩めるとかはこの辺の話ですね。)

課題が整理されれば、もう少し適切な回答が付くと思います。

投稿2020/09/19 19:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

追記です。
WEBからアクセスしやすい、例えば参照専用のテーブルを作のも一つの方法です。
WEBの複雑さを回避するために、バッチを作るイメージです。

投稿2020/09/19 14:46

Kaiser

総合スコア295

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

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

0

SQLアンチパターンは良書です。
データベーススペシャリスト資格も持っていますが、非常に役に立っています。

個人的な見解ですが、DBの正規化理論は必ずしも、使いやすいDB構造にはならないです。
DBの正規化は、あくまでデータを管理しやすい構造であって、プログラムからの使いやすさは
全くの別問題だからです。

プログラムからの使いやすさと、データ管理を両立するために、VIEWであったりパーティション
という機能が、生まれたと考えています。
VIEWやパーティションを活用して、それでもなおプログラムが難しくなるのであれば、
それはもう仕方ないと思います。

投稿2020/09/19 14:26

Kaiser

総合スコア295

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問