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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

データベース設計

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

586閲覧

【RDB設計】DBで設計するのかPHP配列で設計するのか迷っている

madebyjun

総合スコア9

MySQL

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

データベース設計

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/05 06:19

編集2020/07/05 07:42

前提

PHPでユーザー登録機能のある入退館記録システムを作成しています。
ユーザー登録画面や入退館画面はプログラムに詳しくないスタッフが操作することを想定して、プログラムに支障のないような方法で運用します。
ユーザーはそれぞれ5桁のIDを所持しており、入退館GUIでスタッフがIDを入力することで入館と(既にその日に入館が行われている場合)退館が記録できるようになっています。

ユーザー情報画面にはユーザーの年齢、住所、電話番号、などの情報の他に
「所属している学校」と
「所属している団体」という項目があります。

実現したいこと

所属している学校と団体はそれぞれユーザーによって名称の認識が違うため、
例)東京大学 or 東大 or 東京大
例)東京大学テニスサークルジャンプ or JUMP or ジャンテニ
それぞれを同一で扱うために大学id、団体idで管理したいと考えています。
大学や団体は後日プログラムに詳しくないスタッフがこちらが設計した管理画面を使用して追加することもあります。
また、団体名称の変更なども(管理画面を通してですが)起こりえます。
もっとも標準的、もしくは推奨される設計はどのようなものなのかをご教授いただきたいです。

お尋ねしたいこと

ユーザー登録画面にて大学名の頭文字or団体名称の一部を入力することでサジェスト表示させたい(jsの使用を想定)
→その場合DBで大学名などを管理するのは良いやり方なのか(jsで呼び出す際に速度が遅くなる?そもそも呼び出せる?)、それともphpの配列等を使用したほうがよいのか(後から追加等の管理がGUIでしにくい?)

補足情報(FW/ツールのバージョンなど)

まだ設計段階なので使用言語がPHPでDBがMySQLであること程度しか決まっていません。
また、当方初プログラミング実践です。

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

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

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

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

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

gentaro

2020/07/05 06:51

質問のフォーカスを絞らないと回答する側も困ると思う。 特に、 > →サジェスト表示を行うjsでおすすめのコード等があればお教えいただけると嬉しいです(当方jsを書けないのでできれば書けなくても使えるものをご紹介いただけると嬉しいです。) これはただの丸投げだし、テーブル設計の話であれば、JavaScript絡みの質問まで混ぜるのはやめましょう。(フロントエンドとの連携まで考慮した設計について質問している、という趣旨ならともかく)
madebyjun

2020/07/05 06:55

仰る通りでした、個々の質問に分けるように修正して質問を上げ直します。 一応PHPとタイトルにもある通りフロントエンドも考慮したDB設計を考えていたのですが、そもそも質問内容が複数になってしまっていました。 ご指摘いただきありがとうございます。
coco_bauer

2020/07/05 07:33

とにもかくにも、"プログラムに詳しくないスタッフ"を運営や設計に携わらせる事をやめましょう。 例えば、団体idと団体名の管理を、"プログラムに詳しくないスタッフ"(それが、プログラムでどのように使われるデータであるのかを認識していない人)に任せると、名称の重複、名称誤記といった問題が生じる可能性が高くなります。(どうすると問題が生じるのか、といったことを判っていないので、間違った管理をしても気が付かない)
madebyjun

2020/07/05 07:39

ご指摘ありがとうございます。言い方が悪かったです、開発設計と保守等の運営自体はプログラムのできる人のみで行います。プログラムに詳しくない管理者はこちらの設計したGUIをブラウザ上で操作するのみですので、データの重複等は起こらないか、もしくは起こってもシステムには問題のないように開発します。また、団体idは(プログラムに詳しくない)管理ユーザーからは見えないようになっています。 その点を書き換え、書き加えたいと思います。ありがとうございました。
sazi

2020/07/05 07:59 編集

> 当方初プログラミング実践です。 プログラムをしたことも無くて、設計も初めてですか?
madebyjun

2020/07/05 08:01

saziさん、wpのテーマ編集や運営などに携わったことがあり、PHPはなんとなく時間がかかりますが読める、程度です。自分の所属している団体で必要になり、特に納期等もないためのんびり勉強がてら設計しようかなと思ったところです。設計は以前趣味程度に何度か考えるだけ考えてみたことはありますが、実務的なことは完全に初めてです。
guest

回答1

0

どういうデータがあるのかわからないのでアドバイスが難しいです。
ざっくりでいいのでE-R図を書いて提示いただけませんか。
他の方も指摘していますが、「前提」だけを読んでも以下が混じっていて難しいです。

  1. 運用方法のはなし
  2. データベースの設計のはなし

ユーザによって名称の認識が違うのはわかりますが、このシステムではこの名称を使います、としてしまうのはダメなのでしょうか?
個人的にはこれが一般的だと思っていますが、同じアプリケーション内で単語を統一するものだと思います。
システムで「東京大学/東大/東京大」の表示を切り替える機能が、他の機能より重要と思えません。
このシステムで重要なのは「5桁のIDで入退館が記録できる」ことではないのでしょうか。
Webページにありがちな、F5で2重に処理されるのを防ぐというような機能に注力した方がいいのではないでしょうか。
E-R図を作りながら、このシステムに必要な機能一覧を挙げてみてはいかがでしょうか。

「大学id、団体idで管理したい」といきなり出てきますが、これはなんですか?
たぶんmadebyjunさんの頭の中にある設計の話と思いますが、回答者にはわかりません。(E-R図があると分かり安いと思います)
E-R図を作る、機能一覧を作る、画面一覧を作る、画面遷移を作る、ワイヤーフレームを作る等順番に設計していってはいかがでしょうか。

熟練者からのアドバイスなしのDB設計でそのまま運用するのはかなりリスキーだと思います。
誰かアドバイスを受けられるような人を探せませんか。

質問内容から、サーバの選定などもmadebyjunさんがするんじゃ無いかという懸念を抱きました。
膨大に時間があれば問題無いかもしれませんが、全部勉強しながらやるのはかなり大変です。
これはどういった仕事なのでしょうか?

投稿2020/07/06 01:49

FiroProchainezo

総合スコア2424

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

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

madebyjun

2020/07/08 06:19

丁寧なご回答ありがとうございました。 正直E-R図という言葉自体初めて聞いたほど勉強不足でした。甘く見すぎていました。 仰る通りサーバー選定等もすべて自分でしようと考えていました。勉強しながらは大変なんですね... 周りにプログラムができる人があまりいないのですが、つてをたどってアドバイスを受けようかと思います。 こんな稚拙な質問に答えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問