2011-04-18 158 views
3

好的,所以這可能看起來很愚蠢,但我想確保我是對的。數據庫結構.. Ugg?

我有一個很簡單的數據庫設置:

Table_Customer 
    ID (PK) 
    Acc_number 
    First 
    Last 
    etc. 

Table_Notes 
    ID (PK) 
    Note_Type_FK (links to Table_Note_type) 
    Note 
    Account_FK (Links to Table_Customer) 

Table_Note_Type 
    ID (PK) 
    Note_Type_Name 
    Note_Type_Desc 

Notes是與該客戶的所有筆記,可以爲技術支持,銷售跟進,等等。這個表有一個FK掛Note_Type和一個FK回到Acc_numberCustomer

我的問題

  1. 是這樣的設置是否正確?
  2. 使用SQL,當我添加/更新客戶並選擇記事類型(例如,技術支持)併爲該客戶鍵入記事時,是否有什麼我應該做的/注意我運行插入語句時?

它是一個簡單的問題,但我想確保我正確地做到了這一點。

回答

2

該設置對於簡單的CRM類軟件似乎是正確的,但沒有完整的系統要求,我們無法回答它是否正確。

只要插入,只要CustomerNote_Type已經存在,一切都應該沒問題。一開始就讓一些人尷尬的是確保級聯規則的設置是他們希望在外鍵上使用它們的方式。根據要求,您可能希望在刪除Customer(級聯刪除)時刪除所有Notes,或者您可能希望要求先刪除所有Notes之前允許刪除Customer(級聯限制)

2

你的結構是正確的,但你可能想重新考慮你的命名方案。雖然命名機制可能差異很大,但通常不會將所有數據庫表的前綴都用tblTable_作爲前綴。本文由納拉亞納維亞斯Kondreddi創作似乎對SQL Server的命名約定最爲廣泛接受的指南之一:

http://vyaskn.tripod.com/object_naming.htm

SQL命名約定的問題也已經回答了這個網站之前,請參閱:

Database Naming Conventions by Microsoft?

1

您的方法可行。有一件事要提及;如果帳號是唯一的,則不需要客戶表中的ID。

這是一個簡單的ERD爲您的目的。

enter image description here

+0

我會對使用帳戶號碼進行提醒。賬號通常比識別賬號更具意義。由於業務限制已知它們會發生變化,並且已知它們也編碼其他信息。 – cdeszaq 2011-04-19 15:07:54