1NF:屬性單一,不可再分(僅一個值僅一種值)
很顯然,在當前的任何RDBMS中,傻瓜也不可能做出不符合第一范式的數據庫,因為RDBMS不允許你把數據庫表的一列再分成二列或多列。實際上,還真有這樣的垃圾設計,我在某個項目中遇到,將 first_name,middle_name,last_name放在一個字段的,最后想分都分不開,完全折服。
2NF:消除了部分依賴(部分依賴由復合主鍵導致,顯然所有單主鍵的表都符合2NF)
<反例> 一個表
(學號, 課程名稱)→(姓名, 年齡, 成績, 學分)
<部分依賴>
(課程名稱)→(學分)
(學號)→(姓名, 年齡)
<改正> 改為三個表
(學號)→(姓名, 年齡)
(課程名稱)→(學分)
(學號,課程名稱)→(成績)
3NF:消除了傳遞依賴
<反例>
(學號)→(姓名, 年齡, 學院, 學院地點, 學院電話)
<傳遞依賴>
(學號)→(學院)→(學院地點, 學院電話)
<改正> 改為兩個表
(學號)→(姓名,年齡,學院)
(學院)→(地點,電話)
posted @
2008-04-16 14:16 Jcat 閱讀(418) |
評論 (0) |
編輯 收藏
-b??? 當file存在并且是塊文件時返回真
-c??? 當file存在并且是字符文件時返回真
-d??? 當pathname存在并且是一個目錄時返回真
-e??? 當pathname指定的文件或目錄存在時返回真
-f ??? 當file存在并且是正規文件時返回真
-g ??? 當由pathname指定的文件或目錄存在并且設置了SGID位時返回為真
-h ??? 當file存在并且是符號鏈接文件時返回真,該選項在一些老系統上無效
-k ??? 當由pathname指定的文件或目錄存在并且設置了“粘滯”位時返回真
-p ??? 當file存在并且是命令管道時返回為真
-r ??? 當由pathname指定的文件或目錄存在并且可讀時返回為真
-s ??? 當file存在文件大小大于0時返回真
-u ??? 當由pathname指定的文件或目錄存在并且設置了SUID位時返回真
-w??? 當由pathname指定的文件或目錄存在并且可執行時返回真。一個目錄為了它的內容被訪問必然是可執行的。
-o ??? 當由pathname指定的文件或目錄存在并且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。
比較字符寫法:
-eq??? 等于
-ne??? 不等于
-gt???? 大于
-lt??? ? 小于
-le???? 小于等于
-ge??? 大于等于
-z??? ? 空串
* =??? 兩個字符相等
* !=?? 兩個字符不等
* -n?? 非空串
posted @
2008-04-13 15:34 Jcat 閱讀(4696) |
評論 (0) |
編輯 收藏
存儲容量:是該存儲設備上可以存儲數據的最大數量,通常使用千字節(kb kilobyte)、兆字節(MB megabyte)、吉字節(GB, gigabyte)、太字節(TB ,terabyte)和PB(Petabyte)、EB(Exabyte)等來衡量。
1KB=2(10)B=1024B; 括號中的數字為2的指數(即多少次方)
1MB=2(10)KB=1024KB=2(20)B;
1GB=2(10)MB=1024MB=2(30)B。
1TB=2(10) GB=1024GB=2(40)B
1PB=2(10) TB=1024TB=2(50)B
1EB=2(10) PB=1024PB=2(60)B
1Byte相當於一個英文字母。
Kilobyte(KB)=1024B相當於一則短篇故事的內容。
Megabyte(MB)=l024KB相當於一則短篇小說的文字內容。
Gigabyte(GB)=1024MB相當於貝多芬第五樂章交響曲的樂譜內容。
Terabyte(TB)=1024GB相當於一家大型醫院中所有的X光圖片資訊量。
Petabyte(PB)=l024TB相當於50%的全美學術研究圖書館藏書資訊內容。
Exabyte (EB)=1024PB;5EB相當於至今全世界人類所講過的話語。
Zettabyte(ZB)=1024EB如同全世界海灘上的沙子數量總和。
Yottabyte(YB)=1024ZB相當於7000位人類體內的微細胞總和。
廠商制造硬盤時, 1K=1000B,1M=1000K,1G=1000M
所有標80G的硬盤,拿到電腦里就變小了(除以3個1.024):74.5 = 80 ÷ 1.07374
-----------
1 Byte = 8 bit,8位2進制數,2的8次方,256
一般網絡的速度是以“位每秒”(bps)來表示。注意,是小寫b(位),而不是大寫B(字節)。所以,
顯示的網絡速度是需要除8的。
比如我的230K的無線貓,也就是說它一秒鐘可傳輸230K個bit,其實也就28K個字節,而且這28K還只是理想值,最快確實達到過20K,一般能有5K都笑了。
posted @
2008-04-07 11:41 Jcat 閱讀(248) |
評論 (0) |
編輯 收藏
NPV - Net Present Value - 凈現值: 通過對未來的現金流按照一定的利率進行貼現,并求總。
????????

注:IRR就是NPV=0時的r
e.g. 我做過的一個金融項目中, I0=financed amount(放出去的貸款),I1=I2=...=In=installment(還回來的月供,因為采用的等額還款法,自然是相同的咯),n=term(貸了多少期,也就是月)
注意,I1+I2+...+In > I0,廢話,不然怎么賺錢呢。IRR - Internal Return Rate - 內部收益率:使凈現值等于零時的折現率。
1)計算過程是不斷迭代的。推測一個初始r值,然后不斷逼近,直至方程等于或接近零。(試誤法、插值法)
2)優點是可以從動態的角度直接反映投資項目的實際收益水平,又不受行業基準收益率高低的影響,比較客觀。
3)缺點是計算過程復雜,尤其當經營期大量追加投資時,又有可能導致多個IRR出現,或偏高或偏低,缺乏實際意義。
4)只有內部收益率大于或等于行業基準收益率的投資項目才具有財務可行性。
5)是一種用來表示年度企業綜合收益率的指標。
6)Average IRR:The arithmetic mean of the internal rate of return.
ROI - Return On Investment - 投資回報率:是指達產期正常年度利潤或年均利潤占投資總額的百分比。
1)公式:ROI = 年利潤或年均利潤/投資總額 × 100%
2)優點是計算簡單
3)缺點是沒有考慮資金時間價值因素,不能正確反映建設期長短及投資方式不同和回收額的有無等條件對項目的影響
4)只有投資利潤率指標大于或等于無風險投資利潤率的投資項目才具有財務可行性。
5)往往具有時效性,回報通常是基于某些特定年份。
<補充>
??? 內部收益率(IRR)和投資回報率(ROI)均是技術經濟學的概念。我們在投資建設中為了達到某種預期的目標,可制訂多種不同的技術方案進行決策,而不同的技術方案所要的各種資源投入和由此帶來的經濟效果是不同的。技術經濟分析主要解決兩個問題,一個是判斷投資方案的經濟效益是否可以滿足某一絕對檢驗標準的要求,即解決方案的“篩選”問題,二是對于多種備選方案,選擇經濟效益最好的方案,即解決方案的“擇優”問題。
??? 對項目投資效果進行經濟評價的方法,概括起來分為兩大類,即靜態分析方法和動態方法,靜態分析法不考慮資金的時間價值,比較簡易實用,對若干方案進行粗略評價或對短期投資項目經濟分析時,可用這種方法。
??? 動態分析法考慮資金的時間價值,主要特點是用貨幣的時間價值原理將項目方案在不同時間發生的費用和效益,換算為同一時間的費用和效益,這不僅使技術方案本身的經濟性分析有了科學的依據,而且使不同方案之間有了可比性。
??? IRR是動態分析法之一,其他還有凈現值法、年值法、投資回收期法(動態)等。ROI屬于靜態分析法,其他還有投資回收期法(靜態)、最小費用法、追加投資效果評價法等。
posted @
2008-04-01 22:45 Jcat 閱讀(2003) |
評論 (0) |
編輯 收藏
Declaring and Initialization
Option
?
Explicit
?
Sub
?arrayInVBA()
????
Dim
?a1(
5
)?
As
?
String
???? Debug.Assert?
LBound
(a1)?
=
?
0
???? Debug.Assert?
UBound
(a1)?
=
?
5
???? Debug.Assert?
TypeName
(a1)?
=
?
"
String()
"
????
Dim
?a2(
2
?
To
?
5
)?
As
?
Integer
???? Debug.Assert?
LBound
(a2)?
=
?
2
???? Debug.Assert?
UBound
(a2)?
=
?
5
???? Debug.Assert?
TypeName
(a2)?
=
?
"
Integer()
"
????
Dim
?arrayFunction:?arrayFunction?
=
?Array(
"
aa
"
,?
"
bb
"
,?
"
cc
"
,?
"
dd
"
,?
"
ee
"
,?
"
ff
"
)
???? Debug.Assert?
LBound
(arrayFunction)?
=
?
0
???? Debug.Assert?
UBound
(arrayFunction)?
=
?
5
???? Debug.Assert?
TypeName
(arrayFunction)?
=
?
"
Variant()
"
????
'
initialize?by?Array()?function
????
Dim
?i?
As
?
Integer
????
For
?i?
=
?
0
?
To
?
5
????????a1(i)?
=
?arrayFunction(i)
????
Next
?i
????
????
For
?i?
=
?
0
?
To
?
5
???????Debug.Print?a1(i)
????
Next
?i
End?Sub
posted @
2008-03-28 18:11 Jcat 閱讀(357) |
評論 (0) |
編輯 收藏
Note If you need to determine whether an optional argument was passed to a function, you
MUST declare the optional argument as a
Variant data type. Then you can use the
IsMissing function within the procedure.
Option?Explicit
Function?explicitType(Optional?s?As?Integer)
??? Debug.Assert?IsNull(s)?=?False
??? Debug.Assert?IsMissing(s)?=?False
??? Debug.Assert?s?=?0
??? explicitType?=?s
End?Function
Function?variantType(Optional?s)
??? Debug.Assert?IsNull(s)?=?False
??? Debug.Assert?IsMissing(s)?=?True
??? 'Debug.Print?s??'Error?448
??? variantType?=?s
End?Function
Sub?test()
??? Debug.Print?explicitType()
??? Debug.Print?variantType()
End?Sub
posted @
2008-03-28 16:23 Jcat 閱讀(267) |
評論 (0) |
編輯 收藏
<引言>
??? 隨著社會的發展,在現代信息系統的開發中,需要存儲的已不僅僅是簡單的文字信息,同時還包括一些圖片和音像資料或者是超長的文本。比如開發一套旅游信息系統,每一個景點都有豐富的圖片、音像資料和大量的文字介紹。這就要求后臺數據庫要有存儲這些數據的能力。
??? ORACLE自Oracle8i起通過提供LOB字段實現了該功能。
<LOB分類>
??? LOB,即Large Objects(大對象),是用來存儲大量的二進制和文本數據的一種數據類型(一個LOB字段可存儲可多達4GB的數據)。它又分為兩種類型:內部LOB和外部LOB。
??? 1.內部LOB將數據以字節流的形式存儲在數據庫的內部。因而,內部LOB的許多操作都可以參與事務,也可以像處理普通數據一樣對其進行備份和恢復操作。Oracle支持三種類型的內部LOB:
??? 1)BLOB(二進制數據)
??? 2)CLOB(單字節字符數據)
??? 3)NCLOB(多字節國家字符數據)。
??? 其中CLOB和NCLOB類型適用于存儲超長的文本數據,BLOB字段適用于存儲大量的二進制數據,如圖像、視頻、音頻等。
??? 2.目前只支持一種外部LOB類型,即BFILE類型。在數據庫內,該類型僅存儲數據在操作系統中的位置信息,而數據的實體以外部文件的形式存在于操作系統的文件系統中。因而,該類型所表示的數據是只讀的,不參與事務。
??? 該類型可幫助用戶管理大量的由外部程序訪問的文件。
<LOB存儲方式>
??? LOB由兩部分組成:數據(值)和指向數據的指針(定位器)。盡管值與表自身一起存儲,但是一個LOB列并不包含值,僅有它的定位指針。更進一步,為了使用大對象,程序必須聲明定位器類型的本地變量。
??? 當內部LOB被創建時,定位器被存放在列中,值被存放在LOB段中,LOB段是在數據庫內部表的一部分。
??? 當BFILE被創建時,定位器如同平常一樣存儲在列中,但是它的值被存儲在數據庫之外的操作系統文件中。
posted @
2008-03-27 11:12 Jcat 閱讀(274) |
評論 (0) |
編輯 收藏
Controlling Function Recalculation
'
the?same?as?Round?excel-function
Function
?nonStaticRand()
??? Application.Volatile?
True
??? nonStaticRand?
=
?
Rnd
()???
'
Rnd?is?a?vba-function
End?Function
'
Calculate?only?once,?so?rand?number?won't?be?changed?afterwards
Function
?staticRand()
??? Application.Volatile?
False
??
'
you?can?ignore?this?line,?default?is?False
??? staticRand?
=
?
Rnd
()
End?Function
posted @
2008-03-26 16:26 Jcat 閱讀(210) |
評論 (0) |
編輯 收藏
????
'
'Logical?Structures
????
Dim
?flag?
As
?
Integer
????
'
1)
????
If
?
True
?
Then
?flag?
=
?
1
?
Else
?flag?
=
?
0
????Debug.Assert?flag?
=
?
1
????
'
2)
????
If
?
False
?
Then
????????flag?
=
?
1
????
Else
????????flag?
=
?
0
????
End
?
If
????Debug.Assert?flag?
=
?
0
????
'
3)
????flag?
=
?
IIf
(
True
,?
1
,?
0
)
????Debug.Assert?flag?
=
?
1
????
????
'
'Logical?Operators
????Debug.Assert?(
1
?
=
?
1
)?
=
?
True
????Debug.Assert?
Not
?(
1
?
=
?
1
)?
=
?
False
????Debug.Assert?(
True
?
And
?
False
)?
=
?
False
????Debug.Assert?(
True
?
Or
?
False
)?
=
?
True
'
'Loop?Structure
For
?i?
=
?
1
?
To
?
5
????
????
If
?
?
Then
????????
Exit
?
For
?
'
相當于Break
????
End
?
If
Next
?i
posted @
2008-03-25 18:05 Jcat 閱讀(215) |
評論 (0) |
編輯 收藏
<概述>
LINUX文件權限針對的對象分三類(互斥的關系):
1. user(文件的擁有者)
2. group(文件擁有者所在的組,但不包括user)
3. other(其它用戶,即user和group以外的)
LINUX用一個3位二進制數對應著文件的3種權限(1表示有該權限,0表示無):
第1位?? ?讀?? ???? r?? ?100?? ?4
第2位?? ?寫?? ??? w?? ?010?? ?2
第3位?? ?執行?? ?x?? ?001?? ?1
<CMD>查看權限#ls -l第一列,一共10位(drwxrwxrwx),就代表了文件的權限:
1)第一個d代表是一個目錄,如果顯示“-”,則說明不是一個目錄
2)2-4代表user的權限
3)5-7代表group的權限
4)8-10代表other的權限
對于后9位:
r 代表可讀(read),其值是4
w 代表可寫(write),其值是2
x 代表可執行(execute),其值是1
- 代表沒有相應權限,其值是0修改文件權限# chmod [ugoa][+-=][rwx] 文件名1)用戶
u 代表user
g 代表group
o 代表other
a 代表全部的人,也就是包括u,g和o
2)行動
+ 表示添加權限
- 表示刪除權限
= 表示使之成為唯一的權限
3)權限
rwx也可以用數字表示法,不過很麻煩要自己算,比如 rw=6<常見權限>
-rw------- (600) 只有所有者才有讀和寫的權限
-rw-r--r-- (644) 只有所有者才有讀和寫的權限,組群和其他人只有讀的權限
-rwx------ (700) 只有所有者才有讀,寫,執行的權限
-rwxr-xr-x (755) 只有所有者才有讀,寫,執行的權限,組群和其他人只有讀和執行的權限
-rwx--x--x (711) 只有所有者才有讀,寫,執行的權限,組群和其他人只有執行的權限
-rw-rw-rw- (666) 每個人都有讀寫的權限
-rwxrwxrwx (777) 每個人都有讀寫和執行的權限,最大權限
<trick>
如果只擁有一個文件的r權限,也是可以執行它的,只需在最前面加個點加個空格,e.g.:
#.?/etc/bashrc
通過 # man . 可以找到官方的解釋:
. filename [arguments]
Read? and? execute? commands from filename in the current shell environment and return the exit status of the last command executed? from? filename.
其實這也合理:我可以r,就可以把內容copy出來,就可以自己造一個文件來實現同樣的功能。
<解讀 ls -l 命令>
drwxr-xr-x?? 2 root oinstall 4096 Jun? 6 19:02 oracle
drwxrwxr-x? 20 root sinstall 4096 Apr 22 14:03 sybase
一個文件(夾),有兩個owner
1. user
2. group
創建一個文件時,它默認屬于創建它的user,以及這個user所在的group。
但這兩個owner其實是相互獨立的(它們的權限也是相互獨立的):一個文件可以屬于user a,并指定它屬于非a所在的組B。自然的,組B的成員b也就享有了這個文件。
(安裝oracle時的用戶設置就是很好的例子)
# chown user_a file_test
# chown :group_B file_test
posted @
2008-03-25 17:25 Jcat 閱讀(380) |
評論 (0) |
編輯 收藏