詳解第一范式筹煮、第二范式遮精、第三范式、BCNF范式

什么是”范式(NF)”

按照教材中的定義败潦,范式是“符合某一種級別的關(guān)系模式的集合本冲,表示一個關(guān)系內(nèi)部各屬性之間的聯(lián)系的合理化程度”。很晦澀吧劫扒?實際上你可以把它粗略地理解為一張數(shù)據(jù)表的表結(jié)構(gòu)所符合的某種設(shè)計標(biāo)準(zhǔn)的級別檬洞。就像家里裝修買建材,最環(huán)保的是E0級沟饥,其次是E1級添怔,還有E2級等等。數(shù)據(jù)庫范式也分為1NF贤旷,2NF广料,3NF,BCNF幼驶,4NF艾杏,5NF。一般在我們設(shè)計關(guān)系型數(shù)據(jù)庫的時候盅藻,最多考慮到BCNF就夠购桑。符合高一級范式的設(shè)計畅铭,必定符合低一級范式,例如符合2NF的關(guān)系模式勃蜘,必定符合1NF硕噩。

接下來就對每一級范式進行一下解釋。

1. 第一范式(1NF)

符合1NF的關(guān)系(你可以理解為數(shù)據(jù)表元旬×裥欤“關(guān)系模式”和“關(guān)系”的區(qū)別,類似于面向?qū)ο蟪绦蛟O(shè)計中”類“與”對象“的區(qū)別匀归】幼剩”關(guān)系“是”關(guān)系模式“的一個實例,你可以把”關(guān)系”理解為一張帶數(shù)據(jù)的表穆端,而“關(guān)系模式”是這張數(shù)據(jù)表的表結(jié)構(gòu)袱贮。1NF的定義為:符合1NF的關(guān)系中的每個屬性都不可再分表1所示的情況体啰,就不符合1NF的要求攒巍。

表1

實際上,1NF是所有關(guān)系型數(shù)據(jù)庫的最基本要求荒勇,你在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)柒莉,例如SQL Server,Oracle沽翔,MySQL中創(chuàng)建數(shù)據(jù)表的時候兢孝,如果數(shù)據(jù)表的設(shè)計不符合這個最基本的要求,那么操作一定是不能成功的仅偎。也就是說跨蟹,只要在RDBMS中已經(jīng)存在的數(shù)據(jù)表,一定是符合1NF的橘沥。如果我們要在RDBMS中表現(xiàn)表中的數(shù)據(jù)窗轩,就得設(shè)計為表2的形式:

表2

但是僅僅符合1NF的設(shè)計,仍然會存在數(shù)據(jù)冗余過大座咆,插入異常痢艺,刪除異常,修改異常的問題介陶,例如對于表3中的設(shè)計:

表3

  1. 每一名學(xué)生的學(xué)號腹备、姓名、系名斤蔓、系主任這些數(shù)據(jù)重復(fù)多次植酥。每個系與對應(yīng)的系主任的數(shù)據(jù)也重復(fù)多次——數(shù)據(jù)冗余過大
  2. 假如學(xué)校新建了一個系,但是暫時還沒有招收任何學(xué)生(比如3月份就新建了,但要等到8月份才招生)友驮,那么是無法將系名與系主任的數(shù)據(jù)單獨地添加到數(shù)據(jù)表中去的 (注1)——插入異常
  • 注1:根據(jù)三種關(guān)系完整性約束中實體完整性的要求漂羊,關(guān)系中的碼(注2)所包含的任意一個屬性都不能為空,所有屬性的組合也不能重復(fù)卸留。為了滿足此要求走越,圖中的表,只能將學(xué)號與課名的組合作為碼耻瑟,否則就無法唯一地區(qū)分每一條記錄旨指。
  • 注2:碼:關(guān)系中的某個屬性或者某幾個屬性的組合,用于區(qū)分每個元組(可以把“元組”理解為一張表中的每條記錄喳整,也就是每一行)谆构。
  1. 假如將某個系中所有學(xué)生相關(guān)的記錄都刪除,那么所有系與系主任的數(shù)據(jù)也就隨之消失了(一個系所有學(xué)生都沒有了框都,并不表示這個系就沒有了)搬素。——刪除異常

  2. 假如李小明轉(zhuǎn)系到法律系魏保,那么為了保證數(shù)據(jù)庫中數(shù)據(jù)的一致性熬尺,需要修改三條記錄中系與系主任的數(shù)據(jù)∥铰蓿——修改異常粱哼。

正因為僅符合1NF的數(shù)據(jù)庫設(shè)計存在著這樣那樣的問題,我們需要提高設(shè)計標(biāo)準(zhǔn)檩咱,去掉導(dǎo)致上述四種問題的因素揭措,使其符合更高一級的范式(2NF),這就是所謂的“規(guī)范化”税手。

2. 第二范式(2NF)

在關(guān)系理論中的嚴(yán)格定義我這里就不多介紹了(因為涉及到的鋪墊比較多)蜂筹,只需要了解2NF對1NF進行了哪些改進即可需纳。其改進是芦倒,2NF在1NF的基礎(chǔ)之上,消除了非主屬性對于碼的部分函數(shù)依賴不翩。接下來對這句話中涉及到的四個概念——“函數(shù)依賴”兵扬、“碼”、“非主屬性”口蝠、與“部分函數(shù)依賴”進行一下解釋器钟。

2.1 函數(shù)依賴

我們可以這么理解(但并不是特別嚴(yán)格的定義):若在一張表中,在屬性(或?qū)傩越M)X的值確定的情況下妙蔗,必定能確定屬性Y的值傲霸,那么就可以說Y函數(shù)依賴于X,寫作 X → Y。也就是說昙啄,在數(shù)據(jù)表中穆役,不存在任意兩條記錄,它們在X屬性(或?qū)傩越M)上的值相同梳凛,而在Y屬性上的值不同耿币。這也就是“函數(shù)依賴”名字的由來,類似于函數(shù)關(guān)系 y = f(x)韧拒,在x的值確定的情況下淹接,y的值一定是確定的。
例如叛溢,對于表3中的數(shù)據(jù)塑悼,找不到任何一條記錄,它們的學(xué)號相同而對應(yīng)的姓名不同雇初。所以我們可以說姓名函數(shù)依賴于學(xué)號拢肆,寫作 學(xué)號 → 姓名。但是反過來靖诗,因為可能出現(xiàn)同名的學(xué)生郭怪,所以有可能不同的兩條學(xué)生記錄,它們在姓名上的值相同刊橘,但對應(yīng)的學(xué)號不同鄙才,所以我們不能說學(xué)號函數(shù)依賴于姓名。表中其他的函數(shù)依賴關(guān)系還有如:

系名 → 系主任學(xué)號 → 系主任
(學(xué)號促绵,課名) → 分?jǐn)?shù)

但以下函數(shù)依賴關(guān)系則不成立:

學(xué)號 → 課名
學(xué)號 → 分?jǐn)?shù)
課名 → 系主任
(學(xué)號攒庵,課名) → 姓名

從“函數(shù)依賴”這個概念展開,還會有三個概念:

2.1.1完全函數(shù)依賴

在一張表中,若 X → Y杜窄,且對于 X 的任何一個真子集(假如屬性組 X 包含超過一個屬性的話)笔刹,X ’ → Y 不成立,那么我們稱 Y 對于 X 完全函數(shù)依賴稳懒,記作 X F→ Y。(那個F應(yīng)該寫在箭頭的正上方慢味,沒辦法打出來……场梆,正確的寫法如圖1)


圖1

例如: 學(xué)號 F→ 姓名 (學(xué)號,課名) F→ 分?jǐn)?shù) (注:因為同一個的學(xué)號對應(yīng)的分?jǐn)?shù)不確定纯路,同一個課名對應(yīng)的分?jǐn)?shù)也不確定)

2.1.2 部分函數(shù)依賴

假如 Y 函數(shù)依賴于 X或油,但同時 Y 并不完全函數(shù)依賴于 X,那么我們就稱 Y 部分函數(shù)依賴于 X驰唬,記作 X P→ Y顶岸,如圖2腔彰。


圖2

例如:(學(xué)號,課名) P→ 姓名 傳遞函數(shù)依賴假如 Z 函數(shù)依賴于 Y辖佣,且 Y 函數(shù)依賴于 X (感謝 @百達 指出的錯誤萍桌,這里改為:『Y 不包含于 X,且 X 不函數(shù)依賴于 Y』這個前提)凌简,那么我們就稱 Z 傳遞函數(shù)依賴于 X 上炎,記作 X T→ Z,如圖3雏搂。

圖3

2.2 碼

設(shè) K 為某表中的一個屬性或?qū)傩越M藕施,若除 K 之外的所有屬性都完全函數(shù)依賴于 K(這個“完全”不要漏了),那么我們稱 K 為候選碼凸郑,簡稱為碼裳食。在實際中我們通常可以理解為:假如當(dāng) K 確定的情況下芙沥,該表除 K 之外的所有屬性的值也就隨之確定诲祸,那么 K 就是碼。一張表中可以有超過一個碼而昨。(實際應(yīng)用中為了方便救氯,通常選擇其中的一個碼作為主碼) 例如:對于表3,(學(xué)號歌憨、課名)這個屬性組就是碼着憨。該表中有且僅有這一個碼。(假設(shè)所有課沒有重名的情況)

2.3 非主屬性

包含在任何一個碼中的屬性成為主屬性务嫡。

例如:
對于表3甲抖,主屬性就有兩個,學(xué)號 與 課名心铃。

終于可以回過來看2NF了准谚。首先,我們需要判斷去扣,表3是否符合2NF的要求柱衔?根據(jù)2NF的定義,判斷的依據(jù)實際上就是看數(shù)據(jù)表中是否存在非主屬性對于碼的部分函數(shù)依賴厅篓。若存在秀存,則數(shù)據(jù)表最高只符合1NF的要求捶码,若不存在羽氮,則符合2NF的要求。判斷的方法是:

第一步:找出數(shù)據(jù)表中所有的碼惫恼。
第二步:根據(jù)第一步所得到的碼档押,找出所有的主屬性。
第三步:數(shù)據(jù)表中,除去所有的主屬性令宿,剩下的就都是非主屬性了叼耙。
第四步:查看是否存在非主屬性對碼的部分函數(shù)依賴。

對于表3粒没,根據(jù)前面所說的四步筛婉,我們可以這么做:

第一步:

  1. 查看所有每一單個屬性,當(dāng)它的值確定了癞松,是否剩下的所有屬性值都能確定爽撒。
  2. 查看所有包含有兩個屬性的屬性組,當(dāng)它的值確定了响蓉,是否剩下的所有屬性值都能確定硕勿。
  3. ……
  4. 查看所有包含了六個屬性,也就是所有屬性的屬性組枫甲,當(dāng)它的值確定了源武,是否剩下的所有屬性值都能確定。

看起來很麻煩是吧想幻,但是這里有一個訣竅粱栖,就是假如A是碼,那么所有包含了A的屬性組脏毯,如(A查排,B)、(A抄沮,C)跋核、(A,B叛买,C)等等砂代,都不是碼了(因為作為碼的要求里有一個“完全函數(shù)依賴”)。
圖4表示了表中所有的函數(shù)依賴關(guān)系:


圖4

這一步完成以后率挣,可以得到刻伊,表3的碼只有一個,就是 (學(xué)號椒功、課名) 捶箱。

第二步:主屬性有兩個:學(xué)號課名

第三步:非主屬性有四個:姓名系名动漾、系主任丁屎、分?jǐn)?shù)

第四步:
對于(學(xué)號,課名) → 姓名旱眯,有 學(xué)號 → 姓名晨川,存在非主屬性 姓名 對碼(學(xué)號证九,課名)的部分函數(shù)依賴。
對于(學(xué)號共虑,課名) → 系名愧怜,有 學(xué)號 → 系名,存在非主屬性 系名 對碼(學(xué)號妈拌,課名)的部分函數(shù)依賴拥坛。
對于(學(xué)號,課名) → 系主任尘分,有 學(xué)號 → 系主任渴逻,存在非主屬性 對碼(學(xué)號,課名)的部分函數(shù)依賴音诫。

所以表3存在非主屬性對于碼的部分函數(shù)依賴惨奕,最高只符合1NF的要求,不符合2NF的要求竭钝。

為了讓表3符合2NF的要求梨撞,我們必須消除這些部分函數(shù)依賴,只有一個辦法香罐,就是將大數(shù)據(jù)表拆分成兩個或者更多個更小的數(shù)據(jù)表卧波,在拆分的過程中,要達到更高一級范式的要求庇茫,這個過程叫做”模式分解“港粱。模式分解的方法不是唯一的,以下是其中一種方法:
選課(學(xué)號旦签,課名查坪,分?jǐn)?shù))
學(xué)生(學(xué)號,姓名宁炫,系名偿曙,系主任)

我們先來判斷以下,選課表與學(xué)生表羔巢,是否符合了2NF的要求望忆?

對于選課表,其碼是(學(xué)號竿秆,課名)启摄,主屬性是學(xué)號和課名,非主屬性是分?jǐn)?shù)幽钢,學(xué)號確定歉备,并不能唯一確定分?jǐn)?shù),課名確定搅吁,也不能唯一確定分?jǐn)?shù)威创,所以不存在非主屬性分?jǐn)?shù)對于碼 (學(xué)號,課名)的部分函數(shù)依賴谎懦,所以此表符合2NF的要求肚豺。

對于學(xué)生表,其碼是學(xué)號界拦,主屬性是學(xué)號吸申,非主屬性是姓名、系名和系主任享甸,因為碼只有一個屬性截碴,所以不可能存在非主屬性對于碼 的部分函數(shù)依賴,所以此表符合2NF的要求蛉威。
圖5表示了模式分解以后的新的函數(shù)依賴關(guān)系


圖5

表4表示了模式分解以后新的數(shù)據(jù)


表4

(這里還涉及到一個如何進行模式分解才是正確的知識點日丹,先不介紹了)
現(xiàn)在我們來看一下,進行同樣的操作蚯嫌,是否還存在著之前的那些問題哲虾?

  1. 李小明轉(zhuǎn)系到法律系
    只需要修改一次李小明對應(yīng)的系的值即可≡袷荆——有改進
  2. 數(shù)據(jù)冗余是否減少了束凑?
    學(xué)生的姓名、系名與系主任栅盲,不再像之前一樣重復(fù)那么多次了汪诉。——有改進
  3. 刪除某個系中所有的學(xué)生記錄
    該系的信息仍然全部丟失谈秫“羌模——無改進
  4. 插入一個尚無學(xué)生的新系的信息。
    因為學(xué)生表的碼是學(xué)號拟烫,不能為空旗们,所以此操作不被允許」咕模——無改進

所以說上渴,僅僅符合2NF的要求,很多情況下還是不夠的喜颁,而出現(xiàn)問題的原因稠氮,在于仍然存在非主屬性系主任對于碼學(xué)號的傳遞函數(shù)依賴。為了能進一步解決這些問題半开,我們還需要將符合2NF要求的數(shù)據(jù)表改進為符合3NF的要求隔披。

3. 第三范式(3NF)

3NF在2NF的基礎(chǔ)之上,消除了非主屬性對于碼的傳遞函數(shù)依賴寂拆。也就是說奢米, 如果存在非主屬性對于碼的傳遞函數(shù)依賴抓韩,則不符合3NF的要求。
接下來我們看看表4中的設(shè)計鬓长,是否符合3NF的要求谒拴。
對于選課表,主碼為(學(xué)號涉波,課名)英上,主屬性為學(xué)號和課名,非主屬性只有一個啤覆,為分?jǐn)?shù)苍日,不可能存在傳遞函數(shù)依賴,所以選課表的設(shè)計窗声,符合3NF的要求相恃。
對于學(xué)生表,主碼為學(xué)號笨觅,主屬性為學(xué)號豆茫,非主屬性為姓名、系名和系主任屋摇。因為 學(xué)號 → 系名揩魂,同時 系名 → 系主任,所以存在非主屬性系主任對于碼學(xué)號的傳遞函數(shù)依賴炮温,所以學(xué)生表的設(shè)計火脉,不符合3NF的要求。
為了讓數(shù)據(jù)表設(shè)計達到3NF柒啤,我們必須進一步進行模式分解為以下形式:
選課(學(xué)號倦挂,課名,分?jǐn)?shù))
學(xué)生(學(xué)號担巩,姓名方援,系名)
系(系名,系主任)
對于選課表涛癌,符合3NF的要求犯戏,之前已經(jīng)分析過了。
對于學(xué)生表拳话,碼為學(xué)號先匪,主屬性為學(xué)號,非主屬性為系名弃衍,不可能存在非主屬性對于碼的傳遞函數(shù)依賴呀非,所以符合3NF的要求。
對于系表,碼為系名岸裙,主屬性為系名猖败,非主屬性為系主任,不可能存在非主屬性對于碼的傳遞函數(shù)依賴(至少要有三個屬性才可能存在傳遞函數(shù)依賴關(guān)系)降允,所以符合3NF的要求恩闻。。
新的函數(shù)依賴關(guān)系如圖6


圖6

新的數(shù)據(jù)表如表5


表5
現(xiàn)在我們來看一下拟糕,進行同樣的操作判呕,是否還存在著之前的那些問題倦踢?

  1. 刪除某個系中所有的學(xué)生記錄
    該系的信息不會丟失送滞。——有改進
  2. 插入一個尚無學(xué)生的新系的信息辱挥。
    因為系表與學(xué)生表目前是獨立的兩張表犁嗅,所以不影響∥畹猓——有改進
  3. 數(shù)據(jù)冗余更加少了褂微。——有改進

結(jié)論
由此可見园爷,符合3NF要求的數(shù)據(jù)庫設(shè)計宠蚂,基本上解決了數(shù)據(jù)冗余過大,插入異常童社,修改異常求厕,刪除異常的問題。當(dāng)然扰楼,在實際中呀癣,往往為了性能上或者應(yīng)對擴展的需要,經(jīng)常 做到2NF或者1NF弦赖,但是作為數(shù)據(jù)庫設(shè)計人員项栏,至少應(yīng)該知道,3NF的要求是怎樣的蹬竖。

==============時隔半年沼沈,終于決定把這個坑填上,來晚了 ===========
BCNF范式
要了解 BCNF 范式币厕,那么先看這樣一個問題:
若:
某公司有若干個倉庫庆冕;每個倉庫只能有一名管理員,一名管理員只能在一個倉庫中工作劈榨;
一個倉庫中可以存放多種物品访递,一種物品也可以存放在不同的倉庫中。每種物品在每個倉庫中都有對應(yīng)的數(shù)量同辣。
那么關(guān)系模式 倉庫(倉庫名拷姿,管理員惭载,物品名,數(shù)量) 屬于哪一級范式响巢?
答:已知函數(shù)依賴集:倉庫名 → 管理員描滔,管理員 → 倉庫名,(倉庫名踪古,物品名)→ 數(shù)量
碼:(管理員含长,物品名),(倉庫名伏穆,物品名)
主屬性:倉庫名拘泞、管理員、物品名非主屬性:數(shù)量
∵ 不存在非主屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴枕扫。
∴ 此關(guān)系模式屬于3NF陪腌。
基于此關(guān)系模式的關(guān)系(具體的數(shù)據(jù))可能如圖所示:


好,既然此關(guān)系模式已經(jīng)屬于了 3NF烟瞧,那么這個關(guān)系模式是否存在問題呢诗鸭?我們來看以下幾種操作:
先新增加一個倉庫,但尚未存放任何物品参滴,是否可以為該倉庫指派管理員强岸?——不可以,因為物品名也是主屬性砾赔,根據(jù)實體完整性的要求蝌箍,主屬性不能為空。
某倉庫被清空后过蹂,需要刪除所有與這個倉庫相關(guān)的物品存放記錄十绑,會帶來什么問題?——倉庫本身與管理員的信息也被隨之刪除了酷勺。
如果某倉庫更換了管理員本橙,會帶來什么問題?——這個倉庫有幾條物品存放記錄脆诉,就要修改多少次管理員信息甚亭。
從這里我們可以得出結(jié)論,在某些特殊情況下击胜,即使關(guān)系模式符合 3NF 的要求亏狰,仍然存在著插入異常,修改異常與刪除異常的問題偶摔,仍然不是 ”好“ 的設(shè)計暇唾。
造成此問題的原因:存在著主屬性對于碼的部分函數(shù)依賴與傳遞函數(shù)依賴。(在此例中就是存在主屬性【倉庫名】對于碼【(管理員,物品名)】的部分函數(shù)依賴策州。
解決辦法就是要在 3NF 的基礎(chǔ)上消除主屬性對于碼的部分與傳遞函數(shù)依賴瘸味。
倉庫(倉庫名,管理員)
庫存(倉庫名够挂,物品名旁仿,數(shù)量)
這樣,之前的插入異常孽糖,修改異常與刪除異常的問題就被解決了枯冈。
以上就是關(guān)于 BCNF 的解釋。

問:關(guān)于碼的定義办悟,如果除K之外的所有屬性都完全函數(shù)依賴于K時才能稱K為碼尘奏,那么在判斷2NF時又怎么會存在非主屬性對碼的部分函數(shù)依賴這種情況?

答 :在“碼”的定義中誉尖,除 K 之外的所有屬性應(yīng)該看成是一個集合 U(也就是一個整體)罪既,也就是說铸题,只有 K 能夠完全函數(shù)決定 U 中的每一個屬性铡恕,那么 K 才是碼。如果 K 只是能夠完全函數(shù)決定 U 中的一部分屬性丢间,而不能完全函數(shù)決定另外一部分屬性探熔,那么 K 不是碼。
比如有關(guān)系模式 R (Sno, Sname, Cno, Cname, Sdept, Sloc, Grade)烘挫,其中函數(shù)依賴集為 F= {Sno → Sname, Sno → Sdept, Sdept → Sloc诀艰,Sno → Sloc, Cno → Cname, (Sno, Cno) → Grade }
那么 R 中的碼只能是 (Sno, Cno),Sno 或 Cno 并不能完全函數(shù)決定除 Sno / Cno 之外的所有其他屬性(其實就是不能決定 Grade )饮六,所以單獨的 Sno 與 Cno 并不能作為碼其垄。
所以可得到主屬性:Sno, Cno
非主屬性:Sname, Cname, Sdept, Sloc, Grade
R 中存在非主屬性 Cname 對于碼 (Sno, Cno) 的部分函數(shù)依賴 (Cno → Cname) 。(還有很多別的例子就不一一列舉了)卤橄。所以 R 不符合 2NF 的要求绿满。

4. 小結(jié)

搬運工覺得這個講解對于初步學(xué)習(xí)的人比較好。
數(shù)據(jù)庫范式那些事
總結(jié):
1NF: 字段是最小的的單元不可再分
2NF:滿足1NF,表中的字段必須完全依賴于全部主鍵而非部分主鍵 (一般我們都會做到)
3NF:滿足2NF,非主鍵外的所有字段必須互不依賴4NF:滿足3NF,消除表中的多值依賴

搬運自知乎如何解釋關(guān)系數(shù)據(jù)庫的第一第二第三范式窟扑?
摘選劉慰喇颁、胡永浩的回答

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嚎货,隨后出現(xiàn)的幾起案子橘霎,更是在濱河造成了極大的恐慌,老刑警劉巖殖属,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姐叁,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機外潜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門谭溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人橡卤,你說我怎么就攤上這事扮念。” “怎么了碧库?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵柜与,是天一觀的道長。 經(jīng)常有香客問我嵌灰,道長弄匕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任沽瞭,我火速辦了婚禮迁匠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驹溃。我一直安慰自己城丧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布豌鹤。 她就那樣靜靜地躺著亡哄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪布疙。 梳的紋絲不亂的頭發(fā)上蚊惯,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音灵临,去河邊找鬼截型。 笑死,一個胖子當(dāng)著我的面吹牛儒溉,可吹牛的內(nèi)容都是我干的宦焦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼睁搭,長吁一口氣:“原來是場噩夢啊……” “哼赶诊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起园骆,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤舔痪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锌唾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锄码,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡夺英,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滋捶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痛悯。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖重窟,靈堂內(nèi)的尸體忽然破棺而出载萌,到底是詐尸還是另有隱情,我是刑警寧澤巡扇,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布扭仁,位于F島的核電站,受9級特大地震影響厅翔,放射性物質(zhì)發(fā)生泄漏乖坠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一刀闷、第九天 我趴在偏房一處隱蔽的房頂上張望熊泵。 院中可真熱鬧,春花似錦甸昏、人聲如沸顽分。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怯邪。三九已至绊寻,卻和暖如春花墩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澄步。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工冰蘑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人村缸。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓祠肥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梯皿。 傳聞我的和親對象是個殘疾皇子仇箱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容