Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

サロゲートキーと桁数

サロゲートキーが好きで、私の設計物にはサロゲートキーが多いです。RDBの外部キー制約を適用できません。チェックルーチンをアプリかストアードかどちらかに実装することになります。
「項目が増えるし、チェック処理を実装する手間は増えるし、良いことがない」と突っ込まれることもあります。
でも、永久連番を主キーにすると、何かと便利です。コードの付け替えも主キーでないので、比較的容易です。
親伝票・子伝票のリレーションも確立した後は変わることがマズないので、処理が楽。
ログとの突き合わせも楽。
 でも、開発ツールで貼り絵感覚で作成している現場(RDBの外部キー制約を自動登録する仕組み)からの、サロゲート邪魔者扱いは年々強まっている希ガス。
屈する日も近いかもしれません。

永久連番項目を number(10) としているシステムがあります。
次のような突っ込みがありました。
「連番が 9,999,999,999 を越えたらシステムが破綻する。」「確実に破綻するような設計は、手抜きだ」

毎日 100件の売上があり、1売上に対して明細がMax20行あるとして、消費する番号は 100* 20 /1日=> 100* 20 * 365 /年 =730000/年
100年稼働しても、73000000レコード= 8桁
全て赤黒処理が発生したとしても * 3 で 9桁。=>充分対応できます。

 物理的な桁不足問題と実稼働上の桁不足問題を区別して、対応の可否を考慮したいものです。
年をyyyyで表記してますが、10000年になったときの心配はしません。(以前言及した時のコメントのように、2038年問題などの問題がありますが)
現行のシステムが100年も継続するはずは無いと暗黙に思っているからでしょう。
(2000年問題の根底も類似で、20年以上存命したプログラムが多かったです。100年は有り得るかも。1000年は無理でしょうし、こちらも鬼籍入りしてるし)

それなのに、永久連番のほうは、100年で9桁以下の消耗なのに 10桁の桁溢れを現実問題として捉え、消極的になったり、15桁とかDB制約の最大桁にせよとか言われます。
100年先は、あり得ないと考えるが、2桁先は有り得ると感じるのは、なんだろう。論理性と感覚性をどちらを優先にするかの問題なのかなぁ。
「0.1%でも起こりえるケースは考慮すべし」とするか「1%しか発生しない事象はエラーとして扱え」とするかは、
アプリの性質と予算で決める事です。
桁不足突っ込み回避で全ての数字桁は最大桁(38桁)で取るというのも、有りかもしれませんね。
そうしても機器性能が上がっているので、実質の負荷は少なく満足に稼働しそうなので怖い。
項目桁の検討が荒っぽくなりそう。

 

投稿日時 : 2009年6月4日 1:43

Feedback

# re: サロゲートキーと桁数 2009/06/04 2:41 aetos

> 桁不足突っ込み回避で全ての数字桁は最大桁(38桁)で取るというのも、有りかもしれませんね。

連番が 99,999,999,999,999,999,999,999,999,999,999,999,999を超えたらシステムが破たんする。手抜きだ。

# re: サロゲートキーと桁数 2009/06/04 10:19 trapemiya

私もサロゲートキー派です。テーブルには必ずサロゲートキーを付けます。サロゲートキーというと聞こえが悪いかもしれませんけど、どんなテーブルでも何とかコードという項目を作成すれば、それがサロゲートキーです。
レコードを一意に識別できる項目があると何かと便利です。SQLの記述も簡単になります。一意な項目があるんだからそれを主キーにします。最初に主キーありきじゃないんです。私の中では。

# re: サロゲートキーと桁数 2009/06/04 10:56 aetos

サロゲートキー…日本語で言えば「代理キー」ですか。
http://ja.wikipedia.org/wiki/%E4%BB%A3%E7%90%86%E3%82%AD%E3%83%BC
によれば、主キーになり得たのにならなかったキーのことですね。
Ognac さんが言いたいのは、「人工キー」じゃないのかな。
まぁ、以降、「サロゲートキー」を人工キーの意味で使っているとして。

> どんなテーブルでも何とかコードという項目を作成すれば、それがサロゲートキーです。

そうなんですか?
例えば「商品コード」とか、顧客の業務の中に既にあるコードで、頭3桁が商品カテゴリ、下3桁が連番とかいう業務ルールが盛り込まれてしまっていても、それはサロゲートキーと言えますか?
あるいは、複合主キーな「何とかコード」でもサロゲートキーと言えますか?

# re: サロゲートキーと桁数 2009/06/04 12:00 trapemiya

ちょっと書き方が誤解を与えやすかったです。すみません。
要する必ずユニークな値を持つ項目を一つ作りたいということなんです。商品コードがあればそれでかまいませんし、無ければ内部的に商品コードをユーザーに見えないように作成します。
この後者が、

> どんなテーブルでも何とかコードという項目を作成すれば、それがサロゲートキーです。

の意味です。
必ずユニークな値を持つ項目がありますので、それは必然的に主キーとして利用できます。
なので、主キーを複合で作成することは私の場合はまずありません。主キーが単一の項目ですと外部キー制約も簡潔です。SQLもすっきりします。

ちなみにユニークな値を持つ項目(主キー)、レコード更新日時、レコード登録日時はどんなテーブルにも必ず持たせています。
経験上、私はここにたどり着きましたが、ここはおかしいという点があればご意見下さい。みなさんがどのように考えてテーブルを設計されているのか知りたいと思います。

# re: サロゲートキーと桁数 2009/06/04 12:07 aetos

> レコード更新日時、レコード登録日時はどんなテーブルにも必ず持たせています。

ちょっと本題をそれてしまって申し訳ないですが、レコードの新規登録時、更新日時は NULL ですか? 登録日時と同じものを入れますか?

# re: サロゲートキーと桁数 2009/06/04 12:38 やじゅ

人工キーだと、テストデータが作成し難いという
部分ってありませんかね
複合キーの方がテストデータが想定して作成しやすい。

関連するテーブルに人工キーが含まれている場合、番号
の突き合せが面倒だなと。

# re: サロゲートキーと桁数 2009/06/04 13:59 trapemiya

>レコードの新規登録時、更新日時は NULL ですか? 登録日時と同じものを入れますか?

登録日時と同じものが入ります。トリガーで入れてますので勝手に入ります。何かあった時のための保険のようなものです。

>人工キーだと、テストデータが作成し難いという
部分ってありませんかね

私の場合はほとんどオートナンバーなので、データベースが勝手に値を埋めてくれますので、さほど苦労したことはありません。もしオートナンバーが使えなくても連番を振るのはSQLで可能だと思います。

>関連するテーブルに人工キーが含まれている場合、番号
の突き合せが面倒だなと。

その通りなんです。子テーブルで親テーブルの番号がわかっても、人間から見れば親が何なのかはわかりません(^^;
まぁ、Viewで見れば済む話ではあるんですが。

# re: サロゲートキーと桁数 2009/06/04 14:46 aetos

> 登録日時と同じものが入ります。

なるほど。
実は、今仕事で作っているシステムで、ここがまちまちで;;

> 商品コードがあればそれでかまいませんし、無ければ内部的に商品コードをユーザーに見えないように作成します。

それが業務的な意味を持っていようがいまいが構わない、ということでしょうか。
その場合、新しいレコード用のキーの値は、単純に何か+1で求められないこともあると思います。

一方で、単一で一意な自然キーがあっても、必ず業務上無意味な連番を主キーとして設ける、という立場もありますね。
Ognac さんはこれかな、と思います。

# re: サロゲートキーと桁数 2009/06/04 17:34 trapemiya

>それが業務的な意味を持っていようがいまいが構わない、ということでしょうか。

その通りです。

>その場合、新しいレコード用のキーの値は、単純に何か+1で求められないこともあると思います。

私の書き方がまずいんですね。つまりは、
ユニークな値を持つ項目があればそれで終わり。無ければユニークな値を持つ項目を作成する。もしくは、ユニークな値を持つ項目であっても単純に+1のようにできない場合、つまり、ユーザーにとって重要な意味のある項目の場合も他にユニークな値を持つ項目を作成する。
後者2つがサロゲートキーになります。

>Ognac さんはこれかな、と思います。

であれば私とはちょっと違うということになりますね。すぐ上で書いた「ユニークな値を持つ項目があればそれで終わり」の場合には、私はサロゲートキーを作成しませんので。

# re: サロゲートキーと桁数 2009/06/04 17:55 みきぬ

大体の考え方は trapemiya さんと同じだけど、明細テーブルは複合キーにするかな。
例えば伝票明細テーブルだと、伝票ID と 連番 で主キーになる感じ。

# 今は SharePoint で開発してるんで、自動的に Ognac さん方式になっちゃうけど

# re: サロゲートキーと桁数 2009/06/04 18:49 Ognac

私の中では、サロゲートキー = 人工キー =永久連番です。
業務項目で主キーが構成できる場合も、極力、設定してます。
過去例では、顧客マスターなどで、業務的な顧客コード付け替えたり、統合したりする要望があったとき、有難かったです。
複合キーで主キーを構成するケースは悩ましいですね、
 鏡と明細の親子関係の時は、親番+明細番号をキーする場合と余り差は出ません。
 (私のローカル話ですが)明細処理の構文(SQL文や言語ルーチンなど)を動的に生成して、処理を移管する仕組みにしています。
 ソースの吐き出しの面から見ると、単一キーのほうが楽なので、メリットは大きいです。
これは、みきぬさんのSharePointに通じるかも知れませんね。

レコード更新日時は、私は、作成日をセットするケースが多いですね。プロジェクトによっては、作成時はNULL指定の思想もありますが。

>複合キーの方がテストデータが想定して作成しやすい。
慣れの問題になるのですが、人工キーでのテストデータを作るパターンを確立すると、変わりませんね。

商品コードなどは、同じ商品に対して、自社のコード体系、仕入れ先のコード体系、納品先のコード体系など複数の主キーになりうる項目があったりして、返って煩わしい事があります。
コードの統廃合なんかがあったら、面倒なので、その面でも人工キーが好きですね。

>Ognac さんはこれかな、と思います。
そうです。なんでも永久連番主キーです。でも 自動採番はしてませんね。 insert時に max(項目) + 1をストアード化してます。
自動項目やOracleのシーケンスはどうも使いにくい。

勿論テーブル毎の連番ですが、過去に全テーブルを通して連番にしているプロジェクトがありました。
RDBが普及する以前のISAMの時代の設計でしたが。未だにメリットが理解できていないです。

# re: サロゲートキーと桁数 2009/06/04 22:32 黒龍

私は基本的には複合キーです。トランザクションデータや番号の付け替えの発生するものは人口キーが必要なので入れるとしてあとは正規化を進めて行く際にキー同士の組み合わせのエンティティが多発した際に人口キーを導入。
その後チューニング意図で人口キー(たとえば10ケタある品番から品番IDなどへの容量の削減による速度向上が狙い)を入れる。みたいな感じですね。
人口キーのほうがin句が使えたりコーディング時に楽なのはありますが正規化をきっちりやらない段階では入れないです。結局継承項目とかの表現しようと思うとユニークインデックスを張ってリレーション張ったりって必要があるのでそれをするくらいならキーの一部にいるほうがメリットが多いかなと。
基本正規化厨なんでかみ合わない点はご容赦を。

なんとなくですが insert時に max(項目) は性能面が心配だなぁ。

# re: サロゲートキーと桁数 2009/06/04 23:36 Ognac

思い入れや携わったシステムの差によっても変わるのでしょうね。
キーの付け替えが発生するシステムが時々あったのが、影響しています。
本来のRDBの正規化という思想からは、外れる仕組みなのは事実でしょう。
でも、絶対不変のキーの魅力は大きいと個人的に思っています。

# re: サロゲートキーと桁数 2009/06/05 1:28 Pasie.

>「連番が 9,999,999,999 を越えたらシステムが破綻する。」「確実に破綻するような設計は、手抜きだ」

 おめでとうございます、お客様。
 私どもが考えていたよりもはるかに多い売り上げを達成されたということですね!いやあ、めでたい。

 とかいうギャグがどっかにあったな…

# re: サロゲートキーと桁数 2009/06/05 11:19 trapemiya

みきぬさんや黒龍さんが言われている複合キーなんですが、思想はよく理解できます。でも、やっぱりそれでも私はレコードを一意に識別できるユニークな値を持つ項目がほしいんです。
無駄というのもよくわかります。でも、私にとってはこれも一種の保険なんです。状況が許せば保険をかけておきたいんです。だから、伝票ID+連番で主キーになりえることがわかっていても、サロゲートキーを追加します。
あと、統一しておくと考えやすいということもあります。プログラムはいつでも一つの主キーのみを対象にすれば良いので、例えば新規登録時に新しい主キーを取得することも、ある程度ワンパターン化できます。(SCOPE_IDENTITYの使用)

# re: サロゲートキーと桁数 2009/06/05 15:06 aetos

> insert時に max(項目) は性能面が心配だなぁ。

というのは、最大値を求めるのに時間がかかりそうということですか?
主キーにはインデックスがあるので、最大値はレコード数にかかわらず定数時間で求まると思います。

採番テーブルを使う思想もありますね。
排他処理とか考えると、その方がいいのかも?

あと、最大値ではなく、最小の空き番号というケースもあります。
加えて、使っていい範囲が決まっていたりすると、もう…
例えば、テーブルの仕様上は5桁だが、使ってよい範囲は1~5000までで、その中の最小の空き番号とする、とかね。

# re: サロゲートキーと桁数 2009/06/05 21:07 Pasie.

 サロゲートキーの本質(?)は、見えるID(?)とリレーション情報(以下'サロゲートキー')の分離と、同じ属性(Field)を複数のテーブルに持たない、つまりその属性はそのテーブルだけにあればいいってことなんですよね。この点についてはとてもシンプルで変更容易性も優れると思うので魅力的。
 反面、人間にわかりにくい。サロゲートキーの採番方法が直感的でないこともさることながら、サロゲートキーの採番ミスがあったときとか、かなり死ねそう。トラブルシューティングもさることながら「なぜこんなサロゲートキーみたいなわけのわからないものを作っているんだ」的なことで政治的に死に追いやられる感じが…
 むしろノウハウはサロゲートキーをどう扱うかではなく、サロゲートキーをどう認めさせ理解させるかにある様な気がするのは私だけでありましょうか…
 

# re: サロゲートキーと桁数 2009/06/05 21:41 Pasie.

> 例えば、テーブルの仕様上は5桁だが、使ってよい範囲は1~5000までで、その中の最小の空き番号とする、とかね。

 え?こんなの簡単にできるんですか?もしかして。
 是非教えてください。
 私は select min(id) from id_table where used is null みたいな感じのことしか思いつかない…

# re: サロゲートキーと桁数 2009/06/06 0:04 aetos

> え?こんなの簡単にできるんですか?

SQL では断念したのでプログラムでやりました。

# re: サロゲートキーと桁数 2009/06/06 0:08 aetos

> 例えば、テーブルの仕様上は5桁だが、使ってよい範囲は1~5000までで、その中の最小の空き番号とする、とかね。

最小の空き番号だけなら SQL でできるんですが、範囲制限がつくと…たぶんプログラムでやる方が楽かと。
で、なんでそういう変な仕様があるのかというと、5001からはデータの意味が変わるからなんですね。
つまり、1つのテーブルに違う意味のデータが同居しているわけで、その時点でロクでもない設計なんです。

# re: サロゲートキーと桁数 2009/06/07 0:12 Pasie.

>最小の空き番号だけなら SQL でできるんですが

 を。これだけでも是非教えてください。

>5001からはデータの意味が変わるからなんですね

 よくある設計だなあ…
 昔はメモリとかの制限でよく使っていた様な。いまでこそ減りましたが…

# re: サロゲートキーと桁数 2009/06/07 0:55 黒龍

>trapemiya
>無駄というのもよくわかります。でも、私にとってはこれも一種の保険なんです。状況が許せば保険をかけておきたいんです。だから、伝票ID+連番で主キーになりえることがわかっていても、サロゲートキーを追加します。
チューニング意図ならわかるんですが重複がもし発生したら?を考えて制約外にするのはちょっとまずいと思います。
そこは重複値がはいってはエントリの場面はよくても後続処理が続かないはずなので。
なので通常のDB設計時はサロゲート入れる場合はもともとのキーは二次識別子(ユニークインデックスor一意キー)にしておきます。バッチとか外部からの受け取りなどでとりあえずは受けなきゃならんって時は当然ながらチェックするのが処理内容なのでワークテーブルには設けませんが。
誤解を受けるとあれなんですがサロゲートキーは私はものすごく使います。(それこそ品番10ケタなんかの場合も品番IDを導入するくらい)
が、あくまでも複合キーできちんと表現したのちの正規化orチューニングに限ります。

# re: サロゲートキーと桁数 2009/06/08 11:23 trapemiya

>>Pasieさん
>サロゲートキーの本質(?)は、見えるID(?)とリレーション情報(以下'サロゲートキー')の分離と、同じ属性(Field)を複数のテーブルに持たない、つまりその属性はそのテーブルだけにあればいいってことなんですよね。この点についてはとてもシンプルで変更容易性も優れると思うので魅力的。

その通りなんです。結局私はここに行き着きました。

>>黒龍さん
>チューニング意図ならわかるんですが重複がもし発生したら?を考えて制約外にするのはちょっとまずいと思います。

もちろん、重複してまずいところは主キー以外に複合キーを作成し、一意制約をかけます。私の書き方が誤解を招いてしまったかもしれません。私は複合キーを作らないのではなく、主キーにはしないということなのです。

# re: サロゲートキーと桁数 2009/06/08 13:12 みきぬ

> >最小の空き番号だけなら SQL でできるんですが
> を。これだけでも是非教えてください。

ここを見ると幸せになれるかな。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15927&forum=26

# re: サロゲートキーと桁数 2009/06/08 22:11 Ognac

シーケンス嫌いな私は、しっくりしない面があります。
ロールバックができないのも理由ですが、業務的な連番管理は、自分のロジックで管理したくなりませんか?
業務的項目の連番は永久連番とは別に設定することもありますね。設計思想の問題になりますが。

# re: サロゲートキーと桁数 2009/06/09 10:04 trapemiya

>業務的な連番管理は、自分のロジックで管理したくなりませんか?

必要があればそのようにします。例えば1日毎に枝番が付くような場合ですね。日付+枝番のような感じです。
#枝番は必ずしも連番ではありません。

>業務的項目の連番は永久連番とは別に設定することもありますね。

あります。レコードに不変の背番号が欲しい場合があるのがその理由です。

# re: サロゲートキーと桁数 2009/06/09 21:24 Pasie.

 みきぬさん。ありがとうございます。
 +1して自分を左外部結合か…思いつかんなあ。SQL脳になってない証拠ですね。修行が足らないようで…
 しかしこれってコストってどのくらいかかるんだろうかな。

# re: 個人氏名の同姓同名はニックネームで解消(?) 2009/10/15 1:47 Ognacの雑感

re: 個人氏名の同姓同名はニックネームで解消(?)

# Hi there! I realize this is somewhat off-topic however I needed to ask. Does operating a well-established website like yours take a large amount of work? I am completely new to blogging but I do write in my journal on a daily basis. I'd like to start a b 2019/05/08 21:32 Hi there! I realize this is somewhat off-topic how

Hi there! I realize this is somewhat off-topic however I needed
to ask. Does operating a well-established website like
yours take a large amount of work? I am completely new to blogging but I do
write in my journal on a daily basis. I'd like to start
a blog so I can easily share my own experience and views online.
Please let me know if you have any ideas or tips for brand new aspiring bloggers.
Appreciate it!

# I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious. 2019/07/23 21:16 I am regular reader, how are you everybody? This p

I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious.

# I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious. 2019/07/23 21:17 I am regular reader, how are you everybody? This p

I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious.

# I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious. 2019/07/23 21:18 I am regular reader, how are you everybody? This p

I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious.

# I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious. 2019/07/23 21:19 I am regular reader, how are you everybody? This p

I am regular reader, how are you everybody? This piece of writing posted at this site is truly fastidious.

# Fantastic blog! Do you have any tips for aspiring writers? I'm hoping to start my own blog soon but I'm a little lost on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out th 2019/08/20 10:54 Fantastic blog! Do you have any tips for aspiring

Fantastic blog! Do you have any tips for aspiring writers?
I'm hoping to start my own blog soon but I'm a little lost
on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm totally overwhelmed ..
Any ideas? Cheers!

# Fantastic blog! Do you have any tips for aspiring writers? I'm hoping to start my own blog soon but I'm a little lost on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out th 2019/08/20 10:55 Fantastic blog! Do you have any tips for aspiring

Fantastic blog! Do you have any tips for aspiring writers?
I'm hoping to start my own blog soon but I'm a little lost
on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm totally overwhelmed ..
Any ideas? Cheers!

# Fantastic blog! Do you have any tips for aspiring writers? I'm hoping to start my own blog soon but I'm a little lost on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out th 2019/08/20 10:56 Fantastic blog! Do you have any tips for aspiring

Fantastic blog! Do you have any tips for aspiring writers?
I'm hoping to start my own blog soon but I'm a little lost
on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm totally overwhelmed ..
Any ideas? Cheers!

# Fantastic blog! Do you have any tips for aspiring writers? I'm hoping to start my own blog soon but I'm a little lost on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out th 2019/08/20 10:57 Fantastic blog! Do you have any tips for aspiring

Fantastic blog! Do you have any tips for aspiring writers?
I'm hoping to start my own blog soon but I'm a little lost
on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm totally overwhelmed ..
Any ideas? Cheers!

# writing a literature essay u16wxc 2022/09/03 23:44 Charlosmox


You have made the point. https://definitionessays.com/ how to write a poem analysis essay

# cheap essay h15gnv 2022/09/08 18:36 Charlosmox

You actually expressed this fantastically! https://definitionessays.com/ writers freelance

# writing persuasive essay a34puo 2023/02/09 6:09 Albertosed

You actually suggested it terrifically!

https://service-essay.com/ college essay idea

# personal essay college v99out 2023/02/10 4:11 Albertosed


Fine stuff. Cheers.
https://essaywritingservicelinked.com/ i-thesis

# dissertation help london n43mqv 2023/02/27 1:15 Robertsaids


Really all kinds of beneficial info.
dissertation writing company https://dissertationwritingtops.com/ phd research assistance

# developing strong thesis statements f95xhb 2023/03/03 0:07 Josephbried


You definitely made the point.
why are thesis statements helpful https://writingthesistops.com/ thesis statement informative essay

# write my essay canada b51tza 2023/03/06 8:36 Gregorysaipt


Regards, Plenty of advice.
how can i write an essay https://dissertationwritingtops.com custom writing services https://essaywritinghelperonline.com

# compare and contrast essay help h27hmx 2023/03/06 19:40 EugeneSib


Superb forum posts, Cheers.
college argumentative essay https://essaywritinghelperonline.com writing essay introductions https://buyanessayscheaponline.com

# phd thesis library v48zxv 2023/03/07 7:15 Gregorysaipt

You explained that really well.
meaning of thesis https://buycheapessaysonline.com college of charleston essay https://writingpaperforme.com

# application essay writing service j33uwt 2023/03/08 2:37 EugeneSib


Nicely put, Cheers.
how to improve writing essays https://helpwithdissertationwriting.com how to write an exemplification essay https://essaywriting4you.com

# essay formats for college g16oyy 2023/03/08 5:38 Gregorysaipt


Nicely put, With thanks!
us essay writing service https://helpwritingdissertation.com pay to write my essay https://buyanessayscheaponline.com

# how to write an essay about a poem h30kbe 2023/03/09 3:49 Gregorysaipt


Whoa tons of wonderful knowledge!
help with college essays https://studentessaywriting.com dissertations international https://helpmedomyxyzhomework.com

# order custom essays online g95aef 2023/03/09 10:26 EugeneSib


Thanks! Numerous forum posts!
dissertation assistance https://dissertationwritingtops.com dissertation proposal writing service https://researchpaperwriterservices.com

# custom writing bay n775iz 2023/03/10 1:15 Gregorysaipt


Kudos. Loads of posts.
how to write a good application essay https://essaywritingservicelinked.com custom assignment writing service https://hireawriterforanessay.com

# how to write an essay proposal a566ug 2023/03/10 15:24 EugeneSib


Nicely put. Regards.
phd dissertation https://researchproposalforphd.com how to write an essay for college scholarships https://writinganessaycollegeservice.com

# college application essay service v21yzj 2023/03/11 6:33 EugeneSib


Whoa loads of terrific advice!
essay writing help for students https://buycheapessaysonline.com essay writing prompts high school https://homeworkcourseworkhelps.com

# college essay help w254lq 2023/03/12 18:13 Gregorysaipt


Superb posts, Thanks a lot!
how to write an opening paragraph for an essay https://englishessayhelp.com help writing a compare and contrast essay https://dissertationwritingtops.com

# essay writing service ratings u18gws 2023/03/13 2:45 EugeneSib


Many thanks! Great stuff!
how to write a good admission essay https://writingpaperforme.com graphic organizers for writing an essay https://researchpaperwriterservices.com

# essay introduction help g695tc 2023/03/13 16:00 Gregorysaipt


Whoa plenty of terrific material.
ghost writer essays https://topswritingservices.com steps to write an essay https://payforanessaysonline.com

# what is the best online essay writing service q994ld 2023/03/13 17:22 EugeneSib


Thanks, Quite a lot of forum posts.
help with report writing https://studentessaywriting.com best custom essay writing service https://essaywritingservicelinked.com

# ブランド偽物 2023/03/21 22:31 phggidjznb@live.com

沖縄からの注文でしたが二日で届いて早さに驚きました。
今回ルイヴィトンのカデナ新品を頼みましたが、あまり期待はしていませんでした。(安すぎるからです)
しかし届いて物はきれいでした。
非常に満足です。ありがとうございました。
ブランド偽物 https://www.gmt78.com/product/detail/13152.htm

# nursing dissertations s15cqe 2023/04/02 16:41 EugeneSib


Thanks a lot, I like this!
how to write an essay about your self https://custompaperwritingservices.com inexpensive resume writing services https://buyanessayscheaponline.com

# The plugins developed for WordPress 2023/05/09 23:16 Justas

The plugins developed for WordPress serve to enhance the features and functions of a WordPress website, allowing you to build your awesome and functional site https://t.me/wpigaming/648 Customise WordPress with powerful, professional and intuitive fields.

# シャネル ルージュココ #79 プルムティ 2023/12/06 5:54 irmsllfkd@hotmail.co.jp

ディオール時計偽物
弊社主要取扱商品 :ブランドバッグコピー品、ブランド財布コピー品。
ルイヴィトン コピー品、シ,ャネル コピー品、グッチ コピー品,
エルメスコピー品、バレンシアガコピー品があります。
おしゃれな大人の女性にすごく人気があります。
これを持っているだけで人目を引くこと間違いなし!!
美しいフォルムは気品と風格が世界のセレブを魅了して止みません。
是非この機会にご入札ください.
シャネル ルージュココ #79 プルムティ https://www.etanoob.com/product/5037.htm

# Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph. 2024/04/03 14:27 Amazing! Its truly amazing post, I have got much c

Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph.

# Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph. 2024/04/03 14:27 Amazing! Its truly amazing post, I have got much c

Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph.

# Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph. 2024/04/03 14:28 Amazing! Its truly amazing post, I have got much c

Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph.

# Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph. 2024/04/03 14:29 Amazing! Its truly amazing post, I have got much c

Amazing! Its truly amazing post, I have got much clear idea concerning from this paragraph.

# Fastidious replies in return of this matter with real arguments and explaining the whole thing concerning that. 2024/04/04 15:07 Fastidious replies in return of this matter with

Fastidious replies in return of this matter with real arguments and explaining the whole thing concerning that.

# I visited several web pages however the audio feature for audio songs existing at this site is genuinely wonderful. 2024/04/10 10:36 I visited several web pages however the audio feat

I visited several web pages however the audio feature
for audio songs existing at this site is genuinely wonderful.

タイトル
名前
Url
コメント