數據庫設計心得體會
關於數據庫的設計,我們組的是我先一個人設計的,然后大家集思廣益,前前后后修改了5、6次,說心得應該是沒有太多的,體會還是有不少。
首先第一點,數據庫設計之前要弄清楚需求,這一點很重要,如果對要設計的軟件的需求都不了解,那么設計出來的數據庫絕對是錯的,在弄清楚需求之后,就要分析我們這個產品它的用戶/角色有哪些,比如我們的項目角色就分四種:普通用戶、特殊用戶、操作員和系統管理員,除了用戶之外還有實現產品功能所需要的一些實體,比如我們的就有:視頻、評論、點贊、評論、消息、投訴等。
確定實體之后,我們需要確定每個實體有哪些屬性,這個階段不需要完全想清楚,弄出個大概就可以了。
確定好屬性之后,我們要考慮實體之間的關系,是一對一還是一對多還是多對多,關系是保存在實體表中的一個字段還是另外新建一張關系表,這個過程十分漫長並且復雜,需要反復推敲,怎樣做才是最好的(這里的好,包括數據庫的結構、完整性、冗余等,也包括開發人員調用數據庫是否方便),而在確定關系之后我們再反過來考慮實體中的每個字段是否合理,是否有漏掉什么字段,這里最好的做法就是對着需求列表,思考這個過程中數據庫中應該有的變化。
在做完以上事情后,數據庫應該反復檢驗,首先是是否符合三個范式,然后是這樣設計是否合理(如果有特殊需求,違背三大范式也是可以接受的,只要合理)。
下面說說設計的過程中的一些下經驗吧。
首先是主鍵的問題,我們會在實際項目中遇到雙主鍵甚至三主鍵的問題,這樣的話這個主鍵在后面做外鍵就會非常麻煩,對此解決的方法是,在表中添加一個編號,來代替多個屬性作為主鍵。第二點是表不嫌多,能拆開的盡量拆開,最后就是,要多多聽取他人意見,一個人思考的角度往往是有限的,一個龐大的項目,需求非常復雜,一個人來設計,總或多或少漏掉一些東西,這時候他人的意見就會成為幫助你完善設計的一大助力。
