在數(shù)據(jù)庫開發(fā)中,對兩個關(guān)系表進(jìn)行連接查詢,能夠直接做“邏輯或”的查詢,而對于邏輯與和邏輯非的查詢,則稍復(fù)雜點,需要編寫額外的代碼來實現(xiàn)。在關(guān)系型數(shù)據(jù)庫中,所謂的連接,實際上是集合的包含,只要包含一項,就滿足連接條件,實現(xiàn)的邏輯或,這種設(shè)計,能夠滿足絕大多數(shù)的查詢需求。有時,對于一條數(shù)據(jù),可能需要通過多個邏輯表達(dá)式來定性,比如,判定一篇文章是否跟Microsoft Azure有關(guān),通常簡單的做法是從多個關(guān)鍵字的邏輯組合來定性:文章中同時含有關(guān)鍵字“Microsoft”和“Azure”,或者同時含有關(guān)鍵字“Windows”和“Azure”,把這種邏輯組合抽象成表達(dá)式,就是:( Microsoft & Azure ) | ( Windows & Azure )。

邏輯表達(dá)式的基本操作符是:與(&),或(|)和非(!),邏輯表達(dá)式的最小組合是:A&B,A|B 和 !A。關(guān)系型數(shù)據(jù)庫的開發(fā)人員,在設(shè)計邏輯表達(dá)式時,必須保證滿足業(yè)務(wù)需求,同時,盡可能支持多種邏輯組合,通常情況下,按照表達(dá)式的關(guān)系,我們把邏輯表達(dá)式拆分成四個元數(shù)據(jù)類型:Expression(表達(dá)式),SubExpression(子表達(dá)式),Operator(操作符)和Operand(操作數(shù))。

在我目前接觸的項目中,業(yè)務(wù)需求的邏輯表達(dá)式的組合相對簡單,標(biāo)準(zhǔn)的表達(dá)式格式如下所示:

Expression = ((A & B) | (C & D)) & !(E | F)

該邏輯表達(dá)式表示:查詢語句返回的結(jié)果集中,不能包含E和F,但是,必須包含A和B,或者包含C且不包含D。

對于該類表達(dá)式,我們可以抽象成更為通用的邏輯公式是:

Expression= (SubExpression1 | SubExpression2 | ...) & !ExcludeExpression
SubExpression=Operand1 & Operand2 & ...
ExcludeExpression=Operand1 | Operand1 | ...

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式