簡體   English   中英

添加新字段與創建單獨的表

[英]Adding new fields vs creating separate table

我正在開發一個項目,其中有幾種類型的用戶(學生和教師)。 目前,為了存儲用戶的信息,使用了兩個表。 users表存儲所有用戶共有的信息。 teachers表存儲只有教師具有外鍵的信息,該外鍵將其與users表相關聯。

users

  • ID
  • 名稱
  • 電子郵件
  • 其他34個領域

teachers

  • ID
  • 用戶身份
  • 學科
  • 其他17個領域

在數據庫的其余部分,沒有對teachers.id引用。 需要與用戶關聯的所有其他表使用users.id 由於用戶在教師表中只有一個相應的條目,我是否應該將教師表中的字段移動到用戶表中,並將其留空給不是教師的用戶?

例如

users

  • ID
  • 名稱
  • 電子郵件
  • 學科
  • 其他51個領域

一張桌子的字段太多了嗎? 這會阻礙性能嗎?

我認為這個設計很好,假設大多數時候你只需要user數據,而且你知道什么時候你需要顯示teacher特定的字段。

另外,你只需要通過JOIN獲得教師,這可能會派上用場。

明天你可能會有另一種不是老師的用戶,你會對這種分離感到高興。

編輯補充:是的,這是一種繼承模式,但由於他沒有說出他使用的語言,我不想渾水......

在數據庫的其余部分,沒有對teachers.id的引用。 需要與用戶關聯的所有其他表使用users.id。

對於班級/部分,我希望有關teacher_id的內容......

由於用戶在教師表中只有一個相應的條目,我是否應該將教師表中的字段移動到用戶表中,並將其留空給不是教師的用戶?

您是在為高中或大專院校建立系統嗎? 我問的原因是因為在大專后,用戶可以是教師和學生......在眾多科目中。

如果沒有你或任何其他人屈服於將“空”列重用於其他目的的誘惑,我認為這很好。

我的意思是,在你的新表中會有僅為教師填充的列。 有人可能會認為他們需要為非教師存儲另一個值,並使用教師專欄之一來保存它,因為畢竟這對非教師來說永遠不需要,這樣我們就不會需要更改表格,很快您的代碼就會填滿測試行類型以查找每個列所包含的內容。

我已經在幾個系統上看到過這種情況(例如,當借閱圖書館書籍時,如果貸款是長期貸款,截止日期將保留預計該書預計的日期。但如果是短期貸款,截止日期保留時間它預計會回來,並且任何不知道這一點的人都會感到悲傷。

一張桌子的字段不是太多(雖然沒有任何細節,但似乎有點可疑)。 在這個階段擔心績效還為時過早。

您可能只處理很少的行和非常少量的數據。 您應該關注1)完成工作2)正確設計3)性能,按順序。

這真的不是那么大的交易(在這個階段/規模)。

我不會把所有字段都填入一個表中。 學生與教師的比例很高,因此對於100名教師來說,這17個領域可能有10000名學生有NULL。 通常,模型看起來接近於此:

teacher_model_01

我的情況是,學生沒有特定的字段,所以你可以省略Student表,所以模型看起來像這樣

teacher_model_02

請注意,對於繼承建模, Teacher表具有UserID ,與User表相同; 將其與您的示例進行對比,該示例具有Teacher表的Id ,然后是單獨的user_id

它不會真的傷害性能,但如果你不重新設置它,其他程序員可能會傷害你:)(55個表格?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM