2017-11-27 6 views
-4

データベース内の一部の機能や操作を他のプログラミング言語と比較した場合のメリットは何ですか?データベースでの操作とロジックの利点(SQL)とプログラミングの土地(PHP、C#...)

たとえば、テーブルstudentsを持つmysqlデータベースschoolがあるとします。その後studentsテーブルには、以下の属性(idnameagedob ...)を持っている:現在の日付からdobを減算し、その後のためにage列に格納することで、データベースにage計算のように行う方が良いでしょう全生徒?または、プログラミング言語でそれを計算し、ageの結果をデータベースに格納する方が良いでしょうか?

ここでの目標は、毎年各生徒の年齢を自動的に更新することです。また、アプリケーションのパフォーマンスが最高のノッチ(速度を含む)であることを確認する。

どの方法が良いですか?

+5

年齢をデータベースに格納することはお勧めできません。 DOBに固執すると、多くの問題が軽減されます。 –

+0

@NigelRen yea ...私は知っていましたが、現在の日付からDOBを差し引いて別の列に格納された生徒の年齢を取得することをお勧めしますか?それはデータベースでこれを行うだけで大丈夫ですプログラミング言語からやってみてください – Boiy

+0

おそらく年齢を計算する単純な関数を使って、このような計算をデータベースで行う方がよいと思います。これは、データベースからわずかに少ないデータを戻していることを意味し、その機能は他のアプリケーションで使用できるようになります。ナイジェルのように、年齢を保存するのは良い考えではありません。必要なときはいつでもそれを計算してください。 – bbrumm

答えて

0

DATE_OF_BIRTHのみをデータベースに格納することをお勧めします。アプリケーションで生徒の年齢を知る必要がある場合は、現在の日付を使用して計算できます。

データベースやアプリケーションで計算を行う方が良いかどうかは、通常、SQLではSQLで行うことができます。私たちはとにかくデータを照会する必要があることを考えると、何のアプリケーションコードは

select student_id 
     , date_of birth 
     , floor(months_between(sysdate, date_of_birth)/12) as age_in_years 
from students 

このソリューションは、Oracle RDBMSの機能を使用するよりも、より高速になるだろうされていません。正確な構文はSQL ServerまたはMySQLでは異なります。


はHadoopersは、多くの場合、データに計算をもたらすことについて話

「アプリケーションが良くかつ高速に実行を確認するために探しています」。それは新しい洞察ではなく、SQLが何をしているのか何十年もしてきたことです。

+0

ありがとう、私はちょうどそれがSQLでより良いパフォーマンスを与えるかどうかを知りたかったのですが、アプリケーションで計算を実行してSQLに格納する代わりに、SQLでそれを行い、アプリケーションの要求があったときのフロントエンドは、アプリケーションが順調に実行されていることを確認しようとしています – Boiy

関連する問題