2012-02-05 102 views
-1

我試圖想出一個主意,我發展,到目前爲止,我還寫了如下的系統:SQL設計/邏輯

Users: 
    id 
    fname 
    lname 
    email 
    password 
    group -> User/admin 

Listing: 
    id 
    userid 
    category 
    expiry 
    name 
    content 
    listingtype 
    location 
    price 
    gallery 

Gallery: 
    id 
    userid 
    galleryid 


Payment: 
    id 
    userid 
    type 

什麼,我發展是一個上市的網站,使客戶端創建在這個過程中的列表:

註冊 創建清單 - 填寫信息,選擇日期的影像等 付款

我的反饋後,我如何能提高我的結構

回答

1

相反users表中的一個小組,你可以引入一個組表和USERS_GROUP映射表。通過這種方式,多個組可以與用戶相關聯。如果該組被認爲是「角色」,並且該應用的不同部分的訪問受角色控制,則這可能是有意義的。該總體思路也可以應用於其他列,例如,如果您希望允許列表中的多個列表類型,則可以將LISTINGTYPE分解並映射到LISTING表。爲了弄清楚什麼因素納入單獨的表,每個字段試着想想,如果你可能曾經想:

  • 關聯多個「類型」與唱片(集團例子)
  • 增加更多的屬性信息在「類型」(如列表可以有一個簡短的名稱與一個較長的描述一起...)
  • 變化相關的價值隨時間(例如,如果用戶改變電子郵件,你仍然要與相關的舊電子郵件一個古老的房源?如果是這樣,電子郵件地址應該被映射到用戶使用有效日期)

您可能不想將密碼存儲在用戶表中。也許更好的做法是存儲「加密密碼」。採取新的密碼,通過你的哈希運行它,存儲它。當用戶進行身份驗證時,通過哈希運行提供的密碼,查看它是否與存儲的哈希匹配。

畫廊有ID和galleryid。這些是不同的?

您可能希望創建日期與上市與到期一起。創建和最後修改的字段在許多表格中都派上用場。