どうも、69です。
今日?昨日?ライブを観に行って、帰りにタクシーを使いました。
フツーに乗ってフツーに走りだしました。
目的地までの半分くらい走ったところで、運転手の方は異変に気付きました。
僕が乗っていたタクシーを止めようと手を挙げている人がちらほら。。。
運転手の方はメーターを確認しました。
料金が表示されていませんでした。
気付いた時点でメーターを開始しました。
運転手の方は
「料金が半分くらいになっちゃうね。。。」
「料金表示のところに、あと何時間働くかが書いてあってわかりにくいんだよね。。。」
「ここに(ハンドルの横)に空車って書いてあるんだけど、読めないんだよね。。。」
と言いました。そして最後に
「ちょっと色付けてよ!」
と。まぁ、冗談だと思っていました。
そして、目的地に到着し、料金を払う時が来ました。
1880円(確か、そうだったはず)を要求されました。
1000円札2枚で2000円を払い、お釣りをもらおうと待っていました。
返ってきたのは
「じゃ、2000円で貰っちゃっていいかな?」
というお言葉でした。
ミスったのは運ちゃんなのに、そんなことほんとに言っちゃうんだ!
って思ってね、もうね、言葉にならないです。。。
自分も気をつけないと、そうなっちゃうな!っと勉強になりました。
ミスって、しょうがないじゃん、それでいいじゃん。って。
おしまい。
プログラミング知識なしですが Androidアプリに興味を持ち、作ってみます。 その過程を、残していきます。 興味を持っていただけたら、ありがたいです。
2011年7月25日月曜日
2011年7月23日土曜日
制約
どうも、69です。
今日はリレーショナル・データベースの知識についてです。
制約とはデータ内容の矛盾を防ぐ機能です。
SQLのようなデータベース言語は
アプリケーションとは無関係に、制約を格納できなくてはならない。
んだそうです。「コッドの12の法則」で提唱されているんですって。。
コッドの12の法則はhttp://androidid-69.blogspot.com/2011/07/12.htmlでチラッと触れましたが
ググるったほうが、良さそう。。。
で、制約は属性(列)に定義します。以下に代表的な制約を挙げます。
1.非ナル制約(NOT NULL)
→指定した属性(列)に値が入っていない状態じゃないことを保証
NULLでないことを保証
2.主キー制約(PRAIMARY KEY)
→テーブルの中でレコードを一意に識別する値
NULL値であってはいけない⇒非ナル制約を満たしている必要あり
テーブルの中で1つだけ指定できる
複数の属性(列)でPRAIMARY KEYを構成できる
テーブルの中にあるレコードを一意に識別する値が複数個の属性(列)ある場合
それらを候補キー(主キーの候補)と言います。
で、候補キーから主キーを選択し、それ以外の選択されなかったものを代替キート言います。
レコードを一意に識別できる候補キーがない場合
連番などの自然発生的でないキーを作成し、それを主キーとします。
これを人工キーと言います。
3.一意性制約(UNIQUE)
→テーブルの中の列、または列の組み合わせが一意であるを保証
列の中に重複する値が発生しないことを保証
主キー(PRAIMARY KEY)との違いは、
・NULL値を許可すること
・1つのテーブルに複数指定できる
4.外部キー(FOREIGN KEY)制約
→テーブル同士の関連付け
参照整合性制約を付加できる
→テーブルBのFOREIGN KEYに指定された属性(列)の値は
テーブルAの一意性のある属性(列)の値に存在するものでなければならないってこと
テーブルAの一意性のある属性(列)をテーブルBで参照するときに
テーブルB側の属性(列)はFOREIGN KEYとなります。
テーブルA側の属性は主キーであることが多いらしいですが、必須条件ではないそうです。
一意性があればいいんだそうです。
う~ん。たぶんですが…
あるテーブルで一意性のある属性(列)を
そのほかのテーブルで使用したいときに使用する
のかな??
5.チェック制約(CHECK)
→属性(列)の値が、指定した条件を満たすものしか入らないことを保証
わからないことがありましたら、ググってください。
そして、コメントに書き込んでください!(笑)
僕がブログを作るんじゃない。みんなで、いいブログにしていきましょう!!(笑)
おしまし。
今日はリレーショナル・データベースの知識についてです。
制約とはデータ内容の矛盾を防ぐ機能です。
SQLのようなデータベース言語は
アプリケーションとは無関係に、制約を格納できなくてはならない。
んだそうです。「コッドの12の法則」で提唱されているんですって。。
コッドの12の法則はhttp://androidid-69.blogspot.com/2011/07/12.htmlでチラッと触れましたが
ググるったほうが、良さそう。。。
で、制約は属性(列)に定義します。以下に代表的な制約を挙げます。
1.非ナル制約(NOT NULL)
→指定した属性(列)に値が入っていない状態じゃないことを保証
NULLでないことを保証
2.主キー制約(PRAIMARY KEY)
→テーブルの中でレコードを一意に識別する値
NULL値であってはいけない⇒非ナル制約を満たしている必要あり
テーブルの中で1つだけ指定できる
複数の属性(列)でPRAIMARY KEYを構成できる
テーブルの中にあるレコードを一意に識別する値が複数個の属性(列)ある場合
それらを候補キー(主キーの候補)と言います。
で、候補キーから主キーを選択し、それ以外の選択されなかったものを代替キート言います。
レコードを一意に識別できる候補キーがない場合
連番などの自然発生的でないキーを作成し、それを主キーとします。
これを人工キーと言います。
3.一意性制約(UNIQUE)
→テーブルの中の列、または列の組み合わせが一意であるを保証
列の中に重複する値が発生しないことを保証
主キー(PRAIMARY KEY)との違いは、
・NULL値を許可すること
・1つのテーブルに複数指定できる
4.外部キー(FOREIGN KEY)制約
→テーブル同士の関連付け
参照整合性制約を付加できる
→テーブルBのFOREIGN KEYに指定された属性(列)の値は
テーブルAの一意性のある属性(列)の値に存在するものでなければならないってこと
テーブルAの一意性のある属性(列)をテーブルBで参照するときに
テーブルB側の属性(列)はFOREIGN KEYとなります。
テーブルA側の属性は主キーであることが多いらしいですが、必須条件ではないそうです。
一意性があればいいんだそうです。
う~ん。たぶんですが…
あるテーブルで一意性のある属性(列)を
そのほかのテーブルで使用したいときに使用する
のかな??
5.チェック制約(CHECK)
→属性(列)の値が、指定した条件を満たすものしか入らないことを保証
わからないことがありましたら、ググってください。
そして、コメントに書き込んでください!(笑)
僕がブログを作るんじゃない。みんなで、いいブログにしていきましょう!!(笑)
おしまし。
2011年7月22日金曜日
Oracle-2
どうも、69です。
昨日、前回OracleをLinux環境に入れよう!!と意気込んでいました。
が、グループ作ってユーザまで作りました。
で、肝心のOracleを解凍していたら
途中で/homeがいっぱいになってしまいました。。。
しかも、1/2の途中で。。。なので2/2も当然解凍できない。。。
で、解凍先を変えてみようとしたのですが
たぶん所有者・グループが違うからだと思うのですが、失敗しました。。。
というわけで、パーティションから区切り直しかな~なんて思う今日この頃。
あ、あとCentOSではOracleって入らないらしいんです。
でも、世の中いるんですよね~、すごい人が。
で、その方のを参考にしている訳で、あんまり公開できない…
おしまい。
昨日、前回OracleをLinux環境に入れよう!!と意気込んでいました。
が、グループ作ってユーザまで作りました。
で、肝心のOracleを解凍していたら
途中で/homeがいっぱいになってしまいました。。。
しかも、1/2の途中で。。。なので2/2も当然解凍できない。。。
で、解凍先を変えてみようとしたのですが
たぶん所有者・グループが違うからだと思うのですが、失敗しました。。。
というわけで、パーティションから区切り直しかな~なんて思う今日この頃。
あ、あとCentOSではOracleって入らないらしいんです。
でも、世の中いるんですよね~、すごい人が。
で、その方のを参考にしている訳で、あんまり公開できない…
おしまい。
2011年7月20日水曜日
Oracle
どうも、69です。
今Oracle11gR2をLinux(CentOS)に入れようとしてます。
てか、勉強中です。
DBマスターになります。
PostgreSQLとOracleとMySQLを押さえてSQL文をガリガリと。
そしたら、転職の時に「あなたは何できますか?」って言われても大丈夫!
まだ、転職は考えてないですがね。。。
あとは、将来のためにシェルスクリプトを。。。
って、このブログのタイトルと違う道に進み始めてる…
まぁ、適当な人間のブログだし!
明日には↑も撤回されてるかもだし!
おしまい。
今Oracle11gR2をLinux(CentOS)に入れようとしてます。
てか、勉強中です。
DBマスターになります。
PostgreSQLとOracleとMySQLを押さえてSQL文をガリガリと。
そしたら、転職の時に「あなたは何できますか?」って言われても大丈夫!
まだ、転職は考えてないですがね。。。
あとは、将来のためにシェルスクリプトを。。。
って、このブログのタイトルと違う道に進み始めてる…
まぁ、適当な人間のブログだし!
明日には↑も撤回されてるかもだし!
おしまい。
2011年7月18日月曜日
ファイアーウォール
どうも、69です。
ずっとファイヤーウォールだと思ってたんですが
ファイ「ア」ーウォールなんですね。。
前回、アクセス制限について取り上げたんですが
その中にファイアーウォールもありまして。。
今まであんまりわかっていないかったので少し調べてみました。
ほんと少しですけど。
Linuxでのファイアーウォールはiptablesって言うツールを使います。
これはカーネル2.4からだそうで、それ以前のカーネルではipchainsって言われていたそうな。
iptablesにはテーブル・チェイン(チェーン)・ルールってものが存在します。
簡単に言うと(違ったら、ごめんなさい)
テーブル:パケットを制御する目的。三つのテーブルがある。
filter
チェイン:ルールが適用される場所。五つのチェインがある。
PREROUTING
→自分宛のパケットか、他宛のパケットかの判断をする。
適用されるテーブル:nat,mangle
INPUT
→自分宛のパケットの場合にPREROUTINGから受け取り、アプリケーション等に渡す。
適用されるテーブル:mangle,filter
FORWARD
→他宛のパケットの場合にPREROUTINGから受け取り、POSTROUTINGに渡す。
適用されるテーブル:filter,mangle
OUTPUT
→他宛のパケットをアプリケーションから受け取り、POSTROUTINGに渡す。
適用されるテーブル:filter,nat,mangle
POSTROUTING
→パケットを外部に転送する。
適用されるテーブル:nat,mangle
ルール:パケットの判断基準と処理。ACCEPT,DROPとか。
コマンドは紹介しません!調べてください。
イメージがつかめちゃえば、コマンドはググっちゃえばいいので。。
あ、コマンドでやったら、セーブしないといけないらしいです。これは注意!
パケットフィルタリング(ファイアーウォール)したかったら
INPUT,OUTPUT,FORWARDのチェインにルールを追加してあげたらいいんです!そーなんです!
NAT変換したかったら
PREROUTING,POSTROUTING,OUTPUTのチェインにルールを追加したらいいんです。
全てじゃなくていいと思いますが。。。
Windowsのファイアーウォールとか見たら、送信は基本許可で受信いろいろ設定されてたし。。。
そういうことだよね??わからん。。
てか、いつのからか知りませんが、RHEL5.4ではGUIで設定できちゃうし。。。
system-config-securityだっけ?そんな感じだったような。
おしまい。
ずっとファイヤーウォールだと思ってたんですが
ファイ「ア」ーウォールなんですね。。
前回、アクセス制限について取り上げたんですが
その中にファイアーウォールもありまして。。
今まであんまりわかっていないかったので少し調べてみました。
ほんと少しですけど。
Linuxでのファイアーウォールはiptablesって言うツールを使います。
これはカーネル2.4からだそうで、それ以前のカーネルではipchainsって言われていたそうな。
iptablesにはテーブル・チェイン(チェーン)・ルールってものが存在します。
簡単に言うと(違ったら、ごめんなさい)
テーブル:パケットを制御する目的。三つのテーブルがある。
filter
→パケットの許可や廃棄を設定。パケットフィルタリング。
nat
→パケットの宛先や送信元を変更。NAT。
mangel
→パケットの内容を変更する。TTLの変更とか。
チェイン:ルールが適用される場所。五つのチェインがある。
PREROUTING
→自分宛のパケットか、他宛のパケットかの判断をする。
適用されるテーブル:nat,mangle
INPUT
→自分宛のパケットの場合にPREROUTINGから受け取り、アプリケーション等に渡す。
適用されるテーブル:mangle,filter
FORWARD
→他宛のパケットの場合にPREROUTINGから受け取り、POSTROUTINGに渡す。
適用されるテーブル:filter,mangle
OUTPUT
→他宛のパケットをアプリケーションから受け取り、POSTROUTINGに渡す。
適用されるテーブル:filter,nat,mangle
POSTROUTING
→パケットを外部に転送する。
適用されるテーブル:nat,mangle
ルール:パケットの判断基準と処理。ACCEPT,DROPとか。
コマンドは紹介しません!調べてください。
イメージがつかめちゃえば、コマンドはググっちゃえばいいので。。
あ、コマンドでやったら、セーブしないといけないらしいです。これは注意!
パケットフィルタリング(ファイアーウォール)したかったら
INPUT,OUTPUT,FORWARDのチェインにルールを追加してあげたらいいんです!そーなんです!
NAT変換したかったら
PREROUTING,POSTROUTING,OUTPUTのチェインにルールを追加したらいいんです。
全てじゃなくていいと思いますが。。。
Windowsのファイアーウォールとか見たら、送信は基本許可で受信いろいろ設定されてたし。。。
そういうことだよね??わからん。。
てか、いつのからか知りませんが、RHEL5.4ではGUIで設定できちゃうし。。。
system-config-securityだっけ?そんな感じだったような。
おしまい。
アクセス制御
どうも、69です。
前回pg_hba.confについて書きました。
それで、ふと思い出しちゃいました。
アクセス制御について。
TCPラッパー
→これはhosts.allowとhosts.denyを順に見て
allowに当てはまれば許可。
当てはまらなかったらdenyを見て、当てはまれば拒否。
当てはまらなかったら許可。
と、言うことはdenyに書かない限り基本的に許可。
アクセスリスト(Ciscoルータ)
→これはリストを一行目から順に見て
当てはまった処理に従います。
どの行にも当てはまらなかった場合は拒否します。
「暗黙のdeny」って言うらしいです。
アクセスリストを適用したら、許可の記述がない限り拒否。
apacheのアクセス制限
→httpd.conf内で設定します。
order allow,denyもしくはorder deny,allowと設定します。
order allow,denyでは基本的に拒否で、許可するアクセスをAllow from 以降に記述します。
前回pg_hba.confについて書きました。
それで、ふと思い出しちゃいました。
アクセス制御について。
TCPラッパー
→これはhosts.allowとhosts.denyを順に見て
allowに当てはまれば許可。
当てはまらなかったらdenyを見て、当てはまれば拒否。
当てはまらなかったら許可。
と、言うことはdenyに書かない限り基本的に許可。
アクセスリスト(Ciscoルータ)
→これはリストを一行目から順に見て
当てはまった処理に従います。
どの行にも当てはまらなかった場合は拒否します。
「暗黙のdeny」って言うらしいです。
アクセスリストを適用したら、許可の記述がない限り拒否。
apacheのアクセス制限
→httpd.conf内で設定します。
order allow,denyもしくはorder deny,allowと設定します。
order allow,denyでは基本的に拒否で、許可するアクセスをAllow from 以降に記述します。
order deny,allowでは基本的に許可で、拒否するアクセスをDeny from 以降に記述します。
FireWall(パケットフィルタリング)
→これはポリシーを決めるのが重要。
基本は全て許可し、拒否するアクセスを決めていく。
基本は全て拒否し、許可するアクセスを決めていく。
下の方が、セキュリティ的にはいいです。だって何も指定しなかったら、接続できないわけで。。。
適当な順番で書いちゃいましたが、クライアント側からサーバにアクセスした場合
制限を通過する順序は
アクセスリスト(Ciscoルータ)
↓
FireWall(パケットフィルタリング)
↓
TCPラッパー
↓
apacheのアクセス制限
pg_hba.confによる制限
だと思います。他にもアクセス制限はあるかと思いますが
今のところ、僕が知っているものだけの概要です。
おしまい。
pg_hba.conf
どうも、69です。
早速調べました。
速攻でてきました。
pg_hba.confについてです。
まず、hbaはhost-based authenticationの略でした。
次、
ホストから接続が来て、pg_hba.confの条件の中で最初に一致したものが適用されます。
以降の条件は無視らしいです。
で、一致するものがなかった場合、アクセスが拒否されます。
なので、書き順も重要です。
http://www.postgresql.jp/document/9.0/html/auth-pg-hba-conf.html
に書いてあります。よかったら、いや、必ず見てください。
9.0.4のマニュアルですが、大きな違いはないかと。。
おしまい。
早速調べました。
速攻でてきました。
pg_hba.confについてです。
まず、hbaはhost-based authenticationの略でした。
次、
ホストから接続が来て、pg_hba.confの条件の中で最初に一致したものが適用されます。
以降の条件は無視らしいです。
で、一致するものがなかった場合、アクセスが拒否されます。
なので、書き順も重要です。
http://www.postgresql.jp/document/9.0/html/auth-pg-hba-conf.html
に書いてあります。よかったら、いや、必ず見てください。
9.0.4のマニュアルですが、大きな違いはないかと。。
おしまい。
postgresql.conf
どうも、69です。
昨日はじめて皇居行きました。
東京にもあったんだ、あんな広い所。
で、せっかくなので、ちょっと走ってみたり。
で、今回は最近お気に入りのpostgresql.confとpg_hba.confから
接続に関するパラメータを。
PostgreSQLはクラサバアプリケーションなので
PostgreSQLのクライアントとサーバは別々のホスト上で動作できます。
ですが、デフォルト設定ではPostgreSQLサーバは
localhost・自分自身からの接続しか受け付けません。
なので、他のホストからの接続を可能にする設定が必要になります。
で、それは前回ご紹介した
listen_addresses = '*'
です。これにより、全てのホストからの接続を可能にします。
で、今日ご紹介するのは、こちら!
#port = 5432
です。これはデフォルトの状態です。
つまり、デフォルトではポート5432番を使用します。
これを変更したい場合は
#port = 5432
↓
port = 5433
とかってします。この例では5433ポートに変更しました。
unkwonポート?ウェルノンポートではない?ので他とかぶらないように。。。
で、postgresql.confをいじったらリロード・もしくはPostgreSQLを再起動。
繰り返し繰り返し、言いますよ。国民は三日で忘れ…失礼しました。
ただ、ポートを変更したら、クライアントからの接続はポートを指定しなきゃだめですよ!
これは注意ですね。
クライアントもデフォルト5432で接続しようとするので。
psql -p 5433 <データベース名>
てな感じで。
そしたら、次はpg_hba.confを設定します。
pgは多分PostgreSQLのことで
hbaってのはhost(s) basic authenticationだろうかと。
ということで、基本認証を設定してます。
書式は
<種類> <データベース> <ユーザ> <IPアドレス> <認証方式>
です。
種類:対象の接続を設定します。以下の値を設定します。
local→UNIXドメインソケット経由
host →TCP/IP経由
hostssl→SSL経由
hostnossl→SSLを使用しない接続
データベース:対象のデータベースを設定します。
allを設定すると全てのデータベースに適用されます。
「,」カンマ区切りで複数のデータベースを指定することも可能です。
ユーザ:対象のユーザを設定します。
allを設定するを全てのユーザが対象になります。
「+」が頭につくとグループ名を指します。
昨日はじめて皇居行きました。
東京にもあったんだ、あんな広い所。
で、せっかくなので、ちょっと走ってみたり。
で、今回は最近お気に入りのpostgresql.confとpg_hba.confから
接続に関するパラメータを。
PostgreSQLはクラサバアプリケーションなので
PostgreSQLのクライアントとサーバは別々のホスト上で動作できます。
ですが、デフォルト設定ではPostgreSQLサーバは
localhost・自分自身からの接続しか受け付けません。
なので、他のホストからの接続を可能にする設定が必要になります。
で、それは前回ご紹介した
listen_addresses = '*'
です。これにより、全てのホストからの接続を可能にします。
で、今日ご紹介するのは、こちら!
#port = 5432
です。これはデフォルトの状態です。
つまり、デフォルトではポート5432番を使用します。
これを変更したい場合は
#port = 5432
↓
port = 5433
とかってします。この例では5433ポートに変更しました。
unkwonポート?ウェルノンポートではない?ので他とかぶらないように。。。
で、postgresql.confをいじったらリロード・もしくはPostgreSQLを再起動。
繰り返し繰り返し、言いますよ。国民は三日で忘れ…失礼しました。
ただ、ポートを変更したら、クライアントからの接続はポートを指定しなきゃだめですよ!
これは注意ですね。
クライアントもデフォルト5432で接続しようとするので。
psql -p 5433 <データベース名>
てな感じで。
そしたら、次はpg_hba.confを設定します。
pgは多分PostgreSQLのことで
hbaってのはhost(s) basic authenticationだろうかと。
ということで、基本認証を設定してます。
書式は
<種類> <データベース> <ユーザ> <IPアドレス> <認証方式>
です。
種類:対象の接続を設定します。以下の値を設定します。
local→UNIXドメインソケット経由
host →TCP/IP経由
hostssl→SSL経由
hostnossl→SSLを使用しない接続
データベース:対象のデータベースを設定します。
allを設定すると全てのデータベースに適用されます。
「,」カンマ区切りで複数のデータベースを指定することも可能です。
ユーザ:対象のユーザを設定します。
allを設定するを全てのユーザが対象になります。
「+」が頭につくとグループ名を指します。
「,」カンマ区切りで複数のユーザを指定することも可能です。
多分、このユーザはPostgreSQLのユーザだろうかと。。まだ確証は得てないです。すんまそ。
IPアドレス:対象のIPアドレスを設定します。
0.0.0.0/0なら全てのIPアドレスだし、192.168.1.1/32ならそのIPアドレスだけです。
もちろん、ネットワークでの指定もできます。10.1.0.0/16とか
CIDER?クラスレス?での指定ができます。
認証方式:今までに挙げた対象の認証方式を設定します。他にもありますが、値は以下です。
trust→無条件に許可
reject→無条件に拒否
password→BASIC認証。パスワードが平文で流れる?
md5→md5を利用した認証方式
例をあげると
全てのホストが全てのユーザで全てのデータベースに無条件に接続可能。。。
一番簡単なやつ。
host all all 0.0.0.0/0 trust
10.1.1.0/24からの接続は全て拒否し
10.1.2.0/24からはデータベースDB69にのみパスワードなしでアクセスできる。
host all all 10.1.1.0/24 reject
host DB69 all 10.1.2.0/24 trust
あれ?そういえば、明示されないのってどうなるんだろ?
原則拒否?それとも疑わしきは罰せず(許可)?
調べてみよ。
おしまい。
2011年7月16日土曜日
PostgreSQL-5
どうも、69です。
最近postgresql.confを読むのにハマってます。
マニュアルで言ったら、17か18章あたりに相当してて
パラメータとか設定してます。
一回マニュアルを読んでからだと
英語なんですが、わかりやすいです!
てか、まんまじゃん!って言いたくなります。
あ、ちなみに今読んでるのは8.4で。
マイナーバージョンは4だったり5だったり8だったりします。
いずれは9.0とか9.1も。。。
ちょっとだけ、パラメータを。
listen_addresses = ''
これは、接続を受け付けるアドレスを指定していて
デフォルトでは'localhost'となっています。
あ、postgresql.confってデフォルトではほとんどコメントアウトしてあります。
それは、デフォルトの設定を明示してくれているんですって。
なので、変更する場合はコメントをはずして、新しい値を入れる。
#listen_addresses = 'localhost'
↓
listen_addresses = '*'
みたいな。これは全てのホストから接続を受け付けるようになります。
confファイルをいじったら、リロードしてあげなきゃ、なんですが、
値によってはPostgreSQLを再起動しなきゃいけないとかあります。
基本的にconfファイルをいじったら
そのサービス?プロセス?デーモン?は再起動!
って覚えておけばいいのかな。
おしまい。
最近postgresql.confを読むのにハマってます。
マニュアルで言ったら、17か18章あたりに相当してて
パラメータとか設定してます。
一回マニュアルを読んでからだと
英語なんですが、わかりやすいです!
てか、まんまじゃん!って言いたくなります。
あ、ちなみに今読んでるのは8.4で。
マイナーバージョンは4だったり5だったり8だったりします。
いずれは9.0とか9.1も。。。
ちょっとだけ、パラメータを。
listen_addresses = ''
これは、接続を受け付けるアドレスを指定していて
デフォルトでは'localhost'となっています。
あ、postgresql.confってデフォルトではほとんどコメントアウトしてあります。
それは、デフォルトの設定を明示してくれているんですって。
なので、変更する場合はコメントをはずして、新しい値を入れる。
#listen_addresses = 'localhost'
↓
listen_addresses = '*'
みたいな。これは全てのホストから接続を受け付けるようになります。
confファイルをいじったら、リロードしてあげなきゃ、なんですが、
値によってはPostgreSQLを再起動しなきゃいけないとかあります。
基本的にconfファイルをいじったら
そのサービス?プロセス?デーモン?は再起動!
って覚えておけばいいのかな。
おしまい。
2011年7月15日金曜日
PostgreSQL-4
どうも、69です。
PostgreSQLってログはデフォルトでは出ないんですってね。。
あ、でもソースによるとかの情報も。。。
WALログは勝手に出るみたいですが。。
接続もデフォルトではlocalhostしかできないし。。
でも、最近confファイルを見るのが楽しくなってきたり。。。
いずれ、パラメータも書いていこうかな。
おしまい。
PostgreSQLってログはデフォルトでは出ないんですってね。。
あ、でもソースによるとかの情報も。。。
WALログは勝手に出るみたいですが。。
接続もデフォルトではlocalhostしかできないし。。
でも、最近confファイルを見るのが楽しくなってきたり。。。
いずれ、パラメータも書いていこうかな。
おしまい。
2011年7月12日火曜日
インデックス
どうも、69です。
今日こそは、本分のAndroidやろうかと思いましたが
眠いので…
今日は許してください。
自分には甘いので。。。
さらっと行きます。
インデックスです。
インデックスとは大量のデータから目的のデータを素早く見つけるための仕組みです。
書籍の目次や索引みたいなものです。
このたとえはわかりやすかった!!
インデックスを使わない検索では
目的のタプルが見つかるまでテーブルのレコード全体を順次読み込んでいきます。
上のほうにあれば、すぐ見つかるけど…ねぇ。
インデックスをつかうと
インデックステーブル(あらかじめ作成しておく)を探して、目的のデータの位置情報を取得します。
ただ、件数が増えちゃうと、インデックステーブルから探し出すだけで時間食っちゃう。。。
なので、効率を上げるために「Bツリー」というデータ構造でインデックスを作成します。
Bツリーはバランスツリーといいまして、
ツリー構造で、各ノードに一定の個数のキーとポインタ(位置情報)のペアを格納します。
一番上のノードをルートノード。
一番下のノードをリーフノード。
その間のノードをブランチノード。
と言います。層が増えるとブランチノードが増えてきます。
これを見て、思ったのが、二分探索ってやつ。
真ん中の値より小さいから小さい側だけを探せばいいや。みたいな。
それを繰り返して、キーを見つけ出す。のかな?
でも、これだと順番にアクセスしようとしたら
ノードを行ったり来たりしないといけなくなってまう。。。
そこで「B+ツリー」です!
B+ツリーではキーとポインタは全てリーフノードに格納されます。
その格納されたリーフノードをシーケンスセットと言います。
リーフノードはポインタでつながれているので、
Bツリーの弱点を解決できます!
よくわかりませんが、B+ツリーってのがいいらしい!
おしまい。
今日こそは、本分のAndroidやろうかと思いましたが
眠いので…
今日は許してください。
自分には甘いので。。。
さらっと行きます。
インデックスです。
インデックスとは大量のデータから目的のデータを素早く見つけるための仕組みです。
書籍の目次や索引みたいなものです。
このたとえはわかりやすかった!!
インデックスを使わない検索では
目的のタプルが見つかるまでテーブルのレコード全体を順次読み込んでいきます。
上のほうにあれば、すぐ見つかるけど…ねぇ。
インデックスをつかうと
インデックステーブル(あらかじめ作成しておく)を探して、目的のデータの位置情報を取得します。
ただ、件数が増えちゃうと、インデックステーブルから探し出すだけで時間食っちゃう。。。
なので、効率を上げるために「Bツリー」というデータ構造でインデックスを作成します。
Bツリーはバランスツリーといいまして、
ツリー構造で、各ノードに一定の個数のキーとポインタ(位置情報)のペアを格納します。
一番上のノードをルートノード。
一番下のノードをリーフノード。
その間のノードをブランチノード。
と言います。層が増えるとブランチノードが増えてきます。
これを見て、思ったのが、二分探索ってやつ。
真ん中の値より小さいから小さい側だけを探せばいいや。みたいな。
それを繰り返して、キーを見つけ出す。のかな?
でも、これだと順番にアクセスしようとしたら
ノードを行ったり来たりしないといけなくなってまう。。。
そこで「B+ツリー」です!
B+ツリーではキーとポインタは全てリーフノードに格納されます。
その格納されたリーフノードをシーケンスセットと言います。
リーフノードはポインタでつながれているので、
Bツリーの弱点を解決できます!
よくわかりませんが、B+ツリーってのがいいらしい!
おしまい。
2011年7月10日日曜日
山荘すきま
どうも、69です。
今回はさんそうすきーま。
そう、サンソウスキーマについてです。
スキーマ(schema)とは
図式、図表、図解
概要、大要
て意味らしいです。
で、そこからいろいろあり、データベースを構築する時の設計図をスキーマと言うように。。
で、それが三層、三つのレベルがあるから、三層スキーマ。
その三層って言うのは
1.外部スキーマ
→特定のアプリケーションプログラム、データベース利用者が関心を持つデータを定義
リレーショナル・データベースのビューが実装にあたります。
2.概念スキーマ
→特定の利用目的に依存しない、全体像を概念的に定義
リレーショナル・データベースのテーブルが実装にあたります。
3.内部スキーマ
→概念スキーマを物理的な記憶構造に落とすために、データの物理的配置・記録方式を定義
ググったら、インデックスやデータファイル配置などが実装にあたるそうです。
です。う~ん。さっぱり!
各スキーマ間の変換処理を写像(マッピング)というそうで。
↑の並びで、上のほうが、人側に近くて、下のほうが、遠いって事しか…
で、三層スキーマにより、データの独立性が確保されますって。。。どういうこと?
あ、あれか!!
TCP/IP?だかOSI基本参照モデル?だかの
他の層に依存しないので他の層を考えなくて良くて便利、みたいな。
ググったら、情報処理試験とかのブログが出てくるので、
続きはWEBで!
おしまい。
今回はさんそうすきーま。
そう、サンソウスキーマについてです。
スキーマ(schema)とは
図式、図表、図解
概要、大要
て意味らしいです。
で、そこからいろいろあり、データベースを構築する時の設計図をスキーマと言うように。。
で、それが三層、三つのレベルがあるから、三層スキーマ。
その三層って言うのは
1.外部スキーマ
→特定のアプリケーションプログラム、データベース利用者が関心を持つデータを定義
リレーショナル・データベースのビューが実装にあたります。
2.概念スキーマ
→特定の利用目的に依存しない、全体像を概念的に定義
リレーショナル・データベースのテーブルが実装にあたります。
3.内部スキーマ
→概念スキーマを物理的な記憶構造に落とすために、データの物理的配置・記録方式を定義
ググったら、インデックスやデータファイル配置などが実装にあたるそうです。
です。う~ん。さっぱり!
各スキーマ間の変換処理を写像(マッピング)というそうで。
↑の並びで、上のほうが、人側に近くて、下のほうが、遠いって事しか…
で、三層スキーマにより、データの独立性が確保されますって。。。どういうこと?
あ、あれか!!
TCP/IP?だかOSI基本参照モデル?だかの
他の層に依存しないので他の層を考えなくて良くて便利、みたいな。
ググったら、情報処理試験とかのブログが出てくるので、
続きはWEBで!
おしまい。
表!表!表!
テーブル1
名前 年齢 身長
69 24 180
70 70 170
71 71 171
テーブル2
名前 誕生日 体重
68 6/8 68
69 7/10 60
70 7/11 70
テーブル3
名前 年齢 身長
73 73 173
テーブル4
身長
180
って、あるとします。
テーブル適当です。。。69さんの値以外。
・和集合
→テーブル1とテーブル2は和集合演算はできません。
だって、和両立じゃないから。
テーブル1とテーブル3が演算できます。で、結果は
名前 年齢 身長
名前 年齢 身長
69 24 180
70 70 170
71 71 171
テーブル2
名前 誕生日 体重
68 6/8 68
69 7/10 60
70 7/11 70
テーブル3
名前 年齢 身長
71 71 171
72 72 172
73 73 173
テーブル4
身長
180
って、あるとします。
テーブル適当です。。。69さんの値以外。
・和集合
→テーブル1とテーブル2は和集合演算はできません。
だって、和両立じゃないから。
テーブル1とテーブル3が演算できます。で、結果は
名前 年齢 身長
69 24 180
70 70 170
71 71 171
72 72 172
73 73 173
てな感じです。71さんの重複は一つにまとめられちゃいます。
・差集合
→これもテーブル1とテーブル2は差集合演算できません。
だって、…。
テーブル1-テーブル3の結果は
名前 年齢 身長
69 24 180
70 70 170
逆にテーブル3-テーブル1は
名前 年齢 身長
72 72 172
73 73 173です。
・積集合
→これもテーブル1とテーブル3で行うと
名前 年齢 身長
71 71 171
ですね。
・直積集合
→やっと、テーブル2の出番です。
テーブル1×テーブル2の結果は
名前 年齢 身長 名前 誕生日 体重
69 24 180 68 6/8 68
69 24 180 69 7/10 60
69 24 180 70 7/11 70
70 70 170 68 6/8 68
70 70 170 69 7/10 60
70 70 170 70 7/11 70
71 71 171 68 6/8 68
71 71 171 69 7/10 60
71 71 171 70 7/11 70
で、合ってると思います。以後ではテーブル12という名前で使っていきます。
・選択
→テーブル12から誕生日=7/10という比較条件で選択演算をすると
名前 年齢 身長 名前 誕生日 体重
69 24 180 69 7/10 60
70 70 170 69 7/10 60
71 71 171 69 7/10 60
だし、比較条件を身長=170とすると
名前 年齢 身長 名前 誕生日 体重
70 70 170 68 6/8 68
70 70 170 69 7/10 60
70 70 170 70 7/11 70
です。
・射影
→テーブル12から身長と体重という属性のみ取り出します。
身長 体重
180 68
180 60
180 70
170 68
170 60
170 70
171 68
171 60
171 70
だし、年齢と身長だけ取り出すと
年齢 身長
24 180
70 170
71 171
です。重複は除外されます。
・等結合
→テーブル1とテーブル2をテーブル1の名前=テーブル2の名前で等結合します。
名前 年齢 身長 名前 誕生日 体重
69 24 180 69 7/10 60
70 70 170 70 7/11 70
です。これは、テーブル12から名前=名前のものを選択したと考えられるらしい。。。
・自然結合
→テーブル1とテーブル2をテーブル1の名前=テーブル2の名前で自然結合します。
名前 年齢 身長 誕生日 体重
69 24 180 7/10 60
70 70 170 7/11 70
うん。これが見慣れた感じ。
・左外部結合
→テーブル1とテーブル2をテーブル1の名前=テーブル2の名前で左外部結合します。
名前 年齢 身長 名前 誕生日 体重
69 24 180 69 7/10 60
70 70 170 70 7/11 70
71 71 171 NULL NULL NULL
です。てか、どっちが左になるんだろう…
テーブル1と2をって言ったら、1が左なのかな?それでいいのかな?
・右外部結合
→テーブル1とテーブル2をテーブル1の名前=テーブル2の名前で左外部結合します。
名前 年齢 身長 名前 誕生日 体重
NULL NULL NULL 68 6/8 68
69 24 180 69 7/10 60
70 70 170 70 7/11 70
・フル外部結合
→テーブル1とテーブル2をテーブル1の名前=テーブル2の名前で左外部結合します。
名前 年齢 身長 名前 誕生日 体重
NULL NULL NULL 68 6/8 68
69 24 180 69 7/10 60
70 70 170 70 7/11 70
71 71 171 NULL NULL NULL
・商演算
→やっとテーブル4の登場です。
テーブル1÷テーブル4
名前 年齢
69 24
かな?正直わかりません。。。
こんなもんかな?演算結果が違ってたり、例が悪いかもですが
なんとなく、イメージはわかったような。。。
おしまい。
演算
どうも、69です。
http://androidid-69.blogspot.com/2011/07/12.htmlの続きです。
・結合
→内部結合・外部結合があります。
・内部結合
→二つのテーブルから結合の条件に合うタプルだけを抜き出す結合です。
等結合と自然結合があります。
・等結合
→二つのテーブルの指定された属性が等しい組み合わせを求める結合演算です。
二つのテーブルから名前が69で一致するものをくっつける。う~ん。文章だと難しい。。
あ、等結合の結果には、内容が同じものが重複します。
あと、直積集合演算と選択演算の結果の組み合わせとして表現できます。
・自然結合
→等結合から射影演算で内容の重複しているものを除いたのもです。
う~ん。ダブりがないほうが自然だしってこと?
・外部結合
→条件に合わないタプルも含める結合です。
左外部結合、右外部結合、フル外部結合があります。
・左外部結合
→左側のテーブルの全てのタプルともう一方のテーブルから条件にあうタプルを選択します。
・右外部結合
→左外部結合の逆です。
・フル外部結合
→二つのテーブルのすべてのタプルを含みます。
・商演算
→片方のテーブルをもう片方のテーブルで割ります。
ちょっと意味が…
一旦、おしまい。
だって、今日お誕生日だもん!!
http://androidid-69.blogspot.com/2011/07/12.htmlの続きです。
・結合
→内部結合・外部結合があります。
・内部結合
→二つのテーブルから結合の条件に合うタプルだけを抜き出す結合です。
等結合と自然結合があります。
・等結合
→二つのテーブルの指定された属性が等しい組み合わせを求める結合演算です。
二つのテーブルから名前が69で一致するものをくっつける。う~ん。文章だと難しい。。
あ、等結合の結果には、内容が同じものが重複します。
あと、直積集合演算と選択演算の結果の組み合わせとして表現できます。
・自然結合
→等結合から射影演算で内容の重複しているものを除いたのもです。
う~ん。ダブりがないほうが自然だしってこと?
・外部結合
→条件に合わないタプルも含める結合です。
左外部結合、右外部結合、フル外部結合があります。
・左外部結合
→左側のテーブルの全てのタプルともう一方のテーブルから条件にあうタプルを選択します。
・右外部結合
→左外部結合の逆です。
・フル外部結合
→二つのテーブルのすべてのタプルを含みます。
・商演算
→片方のテーブルをもう片方のテーブルで割ります。
ちょっと意味が…
一旦、おしまい。
だって、今日お誕生日だもん!!
2011年7月8日金曜日
コッドの12の規則
どうも、69です。
タイトルの「コッドの12の規則」ですが
Wikiると
規則0から規則12まである。。。
だとすると、13の規則じゃね?って疑問はさておき
その規則の中で次のような規定があります。
「システムは、集合(複数行)単位でのデータの挿入、更新、削除の演算機能を提供しなければならない」
集合として複数のタプル(※http://androidid-69.blogspot.com/2011/07/blog-post_06.html参照)を同時に操作できるってことらしいです。
で、集合を扱うために関係代数ってのが必要になり
関係代数ってのは、数学の集合論に基づく集合演算とリレーション専用の関係演算から成り立ちます。
早速行きます!
1.和集合
→OR演算。AもしくはB。重複するタプルは除かれます。
この時、AとBは和両立でなければいけません!
和両立とは「次数(属性の数)が同じで対応する属性のドメインが同じであること」
・
・
・
簡単に言うと「体重と身長はたせませんよ」みたいな。
2.差集合
→引き算。A-BとB-Aは等しくない。
難しく言葉では「集合の差は交換法則を満たさない」と言います。
3.積集合
→AND演算。AかつB。またの名を共通集合演算。
AとBの共通部分。
4.直積集合
→A×B。AのタプルにBのタプルを全て組み合わせます。
全ての取りうるパターン。計算の途中とかで出てくるらしいわよ、奥さん!
5.選択
→比較条件でテーブルからタプルを選択してテーブルを作ります。
つまり、日本の野球選手から日本選抜を選ぶみたいな。
6.射影
→テーブルからある属性だけ取り出します。
つまり、好きな人の全てが好きなんじゃなくて、笑顔が好きなんだ!みたいな、
あ、演算結果から重複するタプルは除外されます。
まだ続きありますが。。。
眠いので、今日はここまで。
おしまい。
タイトルの「コッドの12の規則」ですが
Wikiると
規則0から規則12まである。。。
だとすると、13の規則じゃね?って疑問はさておき
その規則の中で次のような規定があります。
「システムは、集合(複数行)単位でのデータの挿入、更新、削除の演算機能を提供しなければならない」
集合として複数のタプル(※http://androidid-69.blogspot.com/2011/07/blog-post_06.html参照)を同時に操作できるってことらしいです。
で、集合を扱うために関係代数ってのが必要になり
関係代数ってのは、数学の集合論に基づく集合演算とリレーション専用の関係演算から成り立ちます。
早速行きます!
1.和集合
→OR演算。AもしくはB。重複するタプルは除かれます。
この時、AとBは和両立でなければいけません!
和両立とは「次数(属性の数)が同じで対応する属性のドメインが同じであること」
・
・
・
簡単に言うと「体重と身長はたせませんよ」みたいな。
2.差集合
→引き算。A-BとB-Aは等しくない。
難しく言葉では「集合の差は交換法則を満たさない」と言います。
3.積集合
→AND演算。AかつB。またの名を共通集合演算。
AとBの共通部分。
4.直積集合
→A×B。AのタプルにBのタプルを全て組み合わせます。
全ての取りうるパターン。計算の途中とかで出てくるらしいわよ、奥さん!
5.選択
→比較条件でテーブルからタプルを選択してテーブルを作ります。
つまり、日本の野球選手から日本選抜を選ぶみたいな。
6.射影
→テーブルからある属性だけ取り出します。
つまり、好きな人の全てが好きなんじゃなくて、笑顔が好きなんだ!みたいな、
あ、演算結果から重複するタプルは除外されます。
まだ続きありますが。。。
眠いので、今日はここまで。
おしまい。
2011年7月6日水曜日
リレーショナル・データベース
どうも、69です。
今日はリレーショナル・データベースについてです。
リレーショナル・データベースは二次元の表として
同じ種類のデータの集合を表現します。
えー、つまり、エクセルですね。たぶん。
で、その表を「リレーション」もしくは「テーブル」と言います。
で、その表の列(フィールド)を「属性」と言います。
で、属性値の組み合わせである行(レコード)を「タプル」と言います。
例をあげると(ほんとは画像がいいのですが…)
↓属性
名前 年齢 出身
タプル→ 69 69 関東
タプル→ 70 70 東北
てな感じです。
属性の値の集合を「ドメイン」(定義域)と言います。
上で言うと出身属性の値は『関東』『東北』で、これらをドメインと言うはずです。
次のページを見たら、苦手だった、算数・数学っぽい感じなので、今日はここまで。
おしまい。
今日はリレーショナル・データベースについてです。
リレーショナル・データベースは二次元の表として
同じ種類のデータの集合を表現します。
えー、つまり、エクセルですね。たぶん。
で、その表を「リレーション」もしくは「テーブル」と言います。
で、その表の列(フィールド)を「属性」と言います。
で、属性値の組み合わせである行(レコード)を「タプル」と言います。
例をあげると(ほんとは画像がいいのですが…)
↓属性
名前 年齢 出身
タプル→ 69 69 関東
タプル→ 70 70 東北
てな感じです。
属性の値の集合を「ドメイン」(定義域)と言います。
上で言うと出身属性の値は『関東』『東北』で、これらをドメインと言うはずです。
次のページを見たら、苦手だった、算数・数学っぽい感じなので、今日はここまで。
おしまい。
2011年7月5日火曜日
データモデル
どうも、69です。
がっつり、Android以外です。。
まぁ、SQLiteの勉強と思っていただければいいかな??
違うかも!
データモデルとは何か?
モデルとは
模範・手本または標準となるもの
ある事象について、諸要素とそれら相互の関係を定式化して表したもの
これは金田一耕介の言葉です。
つまり、データについての関係を定式化したものがデータモデル、かな。
わかんなかったら、脚の長い、綺麗なおねーさんと思っておけばいいんでは。。
代表的なデータモデルは4つです。図が無くて申し訳ないです。。
・階層データモデル
→子データは1つの親データしか持たない
えーっと。お使いのPCのCドライブでも見ていただければ、幸いです。
・ネットワークデータモデル
→子データが複数の親データを持てる
えーっと。69はとある会社の社員であり、とある野球チームの選手であるわけで。
69という、子データはとある会社・とある野球チームという親データを持っています。
・リレーショナルデータモデル
→データを行と列から構成される二次元の表で表します。
えーっと。エクセルです。Excel。データベースっていう場合、主にこのモデルを指します。
・オブジェクト指向データモデル
→えーっと。よくわかりません。(笑)
まぁ、そんな感じです。
おしまい。
がっつり、Android以外です。。
まぁ、SQLiteの勉強と思っていただければいいかな??
違うかも!
データモデルとは何か?
モデルとは
模範・手本または標準となるもの
ある事象について、諸要素とそれら相互の関係を定式化して表したもの
これは金田一耕介の言葉です。
つまり、データについての関係を定式化したものがデータモデル、かな。
わかんなかったら、脚の長い、綺麗なおねーさんと思っておけばいいんでは。。
代表的なデータモデルは4つです。図が無くて申し訳ないです。。
・階層データモデル
→子データは1つの親データしか持たない
えーっと。お使いのPCのCドライブでも見ていただければ、幸いです。
・ネットワークデータモデル
→子データが複数の親データを持てる
えーっと。69はとある会社の社員であり、とある野球チームの選手であるわけで。
69という、子データはとある会社・とある野球チームという親データを持っています。
・リレーショナルデータモデル
→データを行と列から構成される二次元の表で表します。
えーっと。エクセルです。Excel。データベースっていう場合、主にこのモデルを指します。
・オブジェクト指向データモデル
→えーっと。よくわかりません。(笑)
まぁ、そんな感じです。
おしまい。
DBMS
どうも、69です。
この前、DBMSのたとえが…という話をしました。
今もまだ、いいたとえは思いついていないのですが
ちょっと、説明をしようかな??
DBMSとはDataBaseManagementSystemの略でデータの集合体とその管理を行います。
機能としては
・ユーザー管理
→「ユーザID」、「パスワード」を確認し、合致すれば「権限」をチェックします。
・SQL文の解釈/実行
→リレーショナルデータベースを操作する共通言語を解釈し実行します。
これがこの前言っていた、小人さんの主な役割です。
・障害対策
→バックアップ機能。操作を更新ログとして保存しておきます。
バックアップデータと更新ログを使用して最新の状態に復元できます。
・ロック制御
→排他制御。ダブルブッキングなんてことがないようにします。えらいな~。
・トランザクション制御
→複数の処理がひとまとまりとして実行されることを保証します。
誰かが僕の口座に百万円振り込むとして
誰かさん口座は-100万で、僕の口座は+100万ってなって初めて正常実行できたとする
ってことです。
途中で障害があった場合は、ロールバックと言ってすべて無効とします。
両方成功してコミットします。
てな感じです。
おしまい。
この前、DBMSのたとえが…という話をしました。
今もまだ、いいたとえは思いついていないのですが
ちょっと、説明をしようかな??
DBMSとはDataBaseManagementSystemの略でデータの集合体とその管理を行います。
機能としては
・ユーザー管理
→「ユーザID」、「パスワード」を確認し、合致すれば「権限」をチェックします。
・SQL文の解釈/実行
→リレーショナルデータベースを操作する共通言語を解釈し実行します。
これがこの前言っていた、小人さんの主な役割です。
・障害対策
→バックアップ機能。操作を更新ログとして保存しておきます。
バックアップデータと更新ログを使用して最新の状態に復元できます。
・ロック制御
→排他制御。ダブルブッキングなんてことがないようにします。えらいな~。
・トランザクション制御
→複数の処理がひとまとまりとして実行されることを保証します。
誰かが僕の口座に百万円振り込むとして
誰かさん口座は-100万で、僕の口座は+100万ってなって初めて正常実行できたとする
ってことです。
途中で障害があった場合は、ロールバックと言ってすべて無効とします。
両方成功してコミットします。
てな感じです。
おしまい。
驚愕
どうも、69です。
そういえば
このblogって
Androidが
メインでしたね。いや、ですね。
最近、横道ばっかで…
すいません。。。
でも、僕は、変わらないよ!!
いろいろ道草してくよ!
やさしい人は、見守っててね!
そうでない人は、知らないよ!(笑)
おしまい。
そういえば
このblogって
Androidが
メインでしたね。いや、ですね。
最近、横道ばっかで…
すいません。。。
でも、僕は、変わらないよ!!
いろいろ道草してくよ!
やさしい人は、見守っててね!
そうでない人は、知らないよ!(笑)
おしまい。
たとえ
どうも、69です。
例え、って難しいですね。。。
今、データベースについて少し勉強してるんですが
その本の中で
「DBMSは、いわば貸金庫と番人と小人たち」
とあるのですが。。。
????小人たちって????
僕、見たことないっす!
だからと言って、なにかいいたとえが見つかっているわけではなく…
なので、むずがしいなぁ~って。
何かいいたとえが見つかったら、ご報告いたします!
おしまい。
例え、って難しいですね。。。
今、データベースについて少し勉強してるんですが
その本の中で
「DBMSは、いわば貸金庫と番人と小人たち」
とあるのですが。。。
????小人たちって????
僕、見たことないっす!
だからと言って、なにかいいたとえが見つかっているわけではなく…
なので、むずがしいなぁ~って。
何かいいたとえが見つかったら、ご報告いたします!
おしまい。
登録:
コメント (Atom)