次の配列をデータベースに保存しようとしていますが、経験が浅いため、設定方法がわかりません。
スケジューラー用です。日エントリには、次の3つの配列が含まれます。
最初の配列は、基本エントリ_['prefix', begin, increment, 'suffix']
_を保持し、次のように表示します。
'prefix' begin - (begin + increment) 'suffix'
2番目の配列は、すべてのnumber
を表示する定期的なエントリを保持します。たとえば、5つの基本エントリごとに、新しいタイプを表示します。
最大7日間のエントリを含むことができる週のエントリもあります。
私はそれを次のように整理しました:
日入力:
_'day' => [
['prefix', begin, increment, 'suffix'],
[
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
(Haven't decided on limit)
],
[list of days]
]
_
そのすべてのデータをそのまま1つの列に貼り付けることを考えましたが、週のエントリも保存する必要があることを思い出しました。
_'week' => [
'day' => [
['prefix', begin, increment, 'suffix'],
[
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
etc...
],
[list of days]
],
'day' => [
['prefix', begin, increment, 'suffix'],
[
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
[every, ['prefix', begin, increment, 'suffix']],
etc...
],
[list of days]
],
(Possibly 5 more 'days')
]
_
エントリごとにid
列と他のいくつかの無関係な列がありますが、これが主要なデータです。私はまだ多くのコードを書いていませんので、何でも変更したいと思っています。
私の質問は、このデータをmySQLデータベースに保存するための最も保守可能で効率的な方法などは何ですか?
編集:データは次のようになります:
_'day' => [
['Lesson', 1, 2, ''],
[
[5, ['Test', 1, 0, '(study)']],
[10, ['Investigation', 10, 0, '(study)']]
],
[1, 2, 3, 4, 5]
]
_
また、1週間のエントリには、これらの日のエントリを最大7つ含めることができます。
データベーステーブルには、行と列の2つのディメンションしかありません。データベースエンジンが調べる必要のないblobに階層的なものを格納したい場合を除いて、JSONのようなものはRDBMSに適していません。 jpegをテーブルに保存する場合、できることはjpegを取得することだけです。すべてのjpegの中から黄色いピエロを探すようにデータベースに依頼することはできません。
(実際には、JSONとXMLの内部を覗く方法がありますが、それはRDBMSを使用する「実際の」方法ではありません。)
同様の行と異なる列の1つ以上のセットとしてデータを再定式化します。その後、さらに話すことができます。
スケジューラーを作成する最良の方法は、確立された cron形式のようなものを使用することです。 これが機能する場合は、タスクが単純になります。
CREATE TABLE tasks ( pkid int AUTO_INCREMENT, ... );
CREATE TABLE crontab (
minutes text,
hours text,
dom text,
month text,
dow text,
year text,
fkey_task int REFERENCES tasks.pkid
);
この表記は通常、すべての1分未満のスケジューラーで十分に機能します。これで、スケジューラのイベントループを管理するためのライブラリが必要になります。