主キーが決められない、また主キーとして不十分な場合

1.一意キーはあるがサイクリックに使いまわされる。

主キーの値が全て使われてしまった場合に、既存の値が使われるケース

 

↓B市が廃止してQ市の情報を追加

 

 

 

 

 

 

 

 

 

解決方法は。。。?

 

 

 

 

 

 

 

 

 

 

グレーノウハウ

...グレーノウハウとはバットパターンまではいかないが、
メリットデメリットが拮抗しており、状況に応じてはよくないケースとなる方法
 
 
 

代理キーによって解決する

代理キー(surrogate key)もしくは「サロゲートキー」
 
↓Q市の情報を追加
 
 
上記のように人口的なキーをシステム側で付与する。
 
しかし。原則は極力代理キーの使用は避けて自然キーによる解決がベター
 
理由
・代理キーは論理的には不要なキーであるため、論理モデルをわかりにくくする。何の役割であるか直感的にわかりにくい。
 
 
 

自然キーによって解決

 
 
□タイムスタンプ
 
 
 
□インターバル

7つのデータベース 7つの世界を読んだため備忘録としてまとめる。

 

▪️Redisとは

2009 年 にリリースされた Redis (REmote DIctionary Service) は、 高 機 能 なコ マンドを 備 えた 簡 単 に 使 えるキーバリューストアである。

 

▪️データ構造サーバーストア

・とにかく高速

 

▪️Redis の 機 能 ・ 規 約 ・ 設 定
・CRUDとデータ型

 

$redis-server

 サーバーを起動

 

$redis-cli
 コマンドラインツールを実行。自動的にポート 6379 に接続する。

 

キーバリューの設定にSETを使う。(キーと値の2つの引数が必要)

値を読み取るのにはGETとキーを使う。

例)
redis 127.0.0.1:6379> SET 7wks http://www.sevenweeks.org/ OK 

redis 127.0.0.1:6379> GET 7wks "http://www.sevenweeks.org/"
 

複数のキーバリューペアを設定にはMSETを使う。

例)

redis 127.0.0.1:6379> MSET gog http://www.google.com yah http://www.yahoo.com OK

 

複 数 のキーを 受 け 取 って、 値 を 順 序 付 きリストとして 返 すにはMGETを使う。

redis 127.0.0.1:6379> MGET gog yah 1) "http://www.google.com/" 2) "http://www.yahoo.com/"
 

インクリメント (INCRBY) もデクリメント (DECR・DECRBY) もできる。

 

トランザクション

トランザクションは MULTI コマンドで 開 始 して、 EXEC で 実 行 する。
例)
redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET prag http://pragprog.com QUEUED redis 127.0.0.1:6379> INCR count QUEUED redis 127.0.0.1:6379> EXEC 1) OK 2) (integer) 2
※ただしコマンドを発行した時点では実行されない。
 

複雑なデータ型

基本パターン
・ハッシュ (Hash) は H。
・ソート 済 みセッ ト (Sorted Set) は Z。
・リスト (List) は、 操作 の 向 きに 応 じて L (left) か R (right) で 始 まっている (LPUSH など)。
 
ハッシュ
 任意 の 数 のキーバリューペアを 受 け 取 ることのできるネ ストした Redis オブジェクトみたいなもの
キーを分けずに、キーバリューペアを含むハッシュをつくることもできる。
 
リスト
 順 序 のある 複 数 の 値 を 含 むもので、 キュー (最初 に 入 った 値 が 最初 に 出 て 行 く) とスタック (最後 に 入 った 値 が 最初 に 出 て 行 く) の 2 種 類 がある。
 
RPUSH 値を追加
LRANGE リストの範囲指定
LREM キーにマッチした値を削除。(個数指定可能)
LPOP リストの要素の先頭を取得。取得した要素は削除。
 
※LPUSH と RPOP でキューの 動 作、 LPUSH と LPOP でスタックの 動 作 
 
RPOPLPUSH リスト末尾から値をポップ、他のリストの先頭にプッシュ
BRPOP ポップする値が存在するまでブロックする。(値をポップするキーとタイムアウトの秒数が必要)
 
セット
 順 序 や 重 複 のない 値 のコレクション
 
SADD 共通のキーでセット
 
ソート済みセット
 リストのように 順 番 があり、 セットのように 重 複 がない。
 
範囲
ZRANGE
 
例)
redis 127.0.0.1:6379> ZRANGE visits 0 1 
1) "gog" 
2) "7wks"
 
 
▪️有効期限
EXPIRE 期限を設定
EXISTS 存在をチェック
SETEX ショートカットコマンド
TTL 有効期限の問い合わせ
PERSIST タイムアウト無効
 
▪️データベースの名前空間
 Redis の 用 語 では、 名 前 空 間 はデータベースと 呼 ばれ、 数 値 がキーになってい る。