數(shù)據(jù)庫設(shè)計備忘錄,沒什么新鮮的,只是作為自己的一個備忘~
1、關(guān)系: 1:1,1:N,N:N
2、注意在使用多對多關(guān)系的時候,由于關(guān)系型數(shù)據(jù)庫的限制,我們必須建立一個中間表,用來表明兩者之間的關(guān)系
3、具體的原因是數(shù)據(jù)庫中的表的主鍵應(yīng)該是唯一的,但是如果在兩個存在多對多關(guān)系的數(shù)據(jù)表之間表明兩者之間的關(guān)系的話,就不能夠保證數(shù)據(jù)主鍵的唯一性了,比如說:書籍和作者之間的關(guān)系,我們假設(shè)他們之間是多對多的關(guān)系,一本書籍可以有多個作者,一個作者可以寫多本書籍,如果我們是用兩個表來表明他們之間的關(guān)系,結(jié)構(gòu)如下:


書籍表:

主鍵????作者外鍵??? 名稱?等其它屬性

作者表:

主鍵???書籍外鍵? 姓名等其它屬性

如果我們要向表中存入數(shù)據(jù),那么就會如下所示:

書籍表:

1????????????1???????????應(yīng)用Rails進行敏捷Web開發(fā)
1????????????2?????????? 應(yīng)用Rails進行敏捷Web開發(fā)

作者表:

1????????????1??????????? Dave Thomas
2????????????1??????????? David Heinemeier Hansson

這樣就出現(xiàn)問題了,書籍表中出現(xiàn)了重復(fù)的主鍵,這個可是不行的哦

如果加入一個中間連接表,那么問題就解決了,書籍表和作者表只管負責(zé)存儲他們各自的信息,不需要存儲他們的關(guān)系信息,關(guān)系信息讓連接表進行存儲就好了~,表的結(jié)構(gòu)如下:
書籍表:

主鍵???? 名稱?等其它屬性
1???????????? 應(yīng)用Rails進行敏捷Web開發(fā)
2???????????? Ant使用手冊

作者表:

主鍵???? 姓名等其它屬性
1??????????????????? Dave Thomas
2??????????????? David Heinemeier Hansson

連接表:

主鍵????? 書籍外鍵?? 作者外鍵
1??????????????????????1??????????????1
2????????????????????? 1????????????? 2

這樣,問題就解決了~