2010-12-14 53 views
2

我爲最終用戶可以自定義的生活編寫數據庫應用程序。用戶可自定義表格中衆所周知的行的最佳方法?

通常,這意味着 - 暫時擱置數據庫 - 我的一些名義實體類型有一個無限的宇宙或域。

取名稱類型。你可以有名字,姓氏,已婚姓名,法定姓名,稱呼名稱等。我不打算爲這個宇宙設置一個上限。

但我確實需要找到並使用某些知名的名稱類型。讓我們說顯示名稱和排序名稱,只是爲了保持簡單。

我還希望能夠查詢所有名稱類型(即整個宇宙),並且還返回我熟知的名稱類型。

有在數據庫中完成這幾個策略:

  1. 有一個ID列和代碼列一個表name_type。系統使用的ID值小於某一數值;高於此值的ID值被視爲用戶類型。
  2. 向id/code對添加一列,該列是布爾型或int類型的某種表示形式,表示它是哪種類型的行(例如,用戶定義的或系統)。同樣的事情,真的;只是使用另一列來顯式分解信息,而不是在id中重載它。
  3. 有兩個可能具有命名約定的表:name_type和name_type_system。據瞭解或強制,name_type_system對用戶是禁止的; name_type是他們的域名。查詢在這些表和應用程序間執行UNION,只是「知道」從不更新系統表。

人們使用什麼策略?任何戰爭故事?有什麼特別的理由選擇一個嗎?巨大的陷阱我沒有看到?

最佳,
萊爾德

回答

1

你三個想法的第一個通常被稱爲一個神奇的數字,http://en.wikipedia.org/wiki/Magic_number_(programming),並且是一件壞事,因爲這並不「知道」它可以使錯誤的任何代碼。另外,隨着時間的推移,你會意識到,「哎呀,我需要將最小值推高,需要重新排列現有的10,000行。」頭痛,頭痛。

之後,其他兩個作品之一。但是第三種方法允許您使用數據庫服務器拒絕對最終用戶使用的帳戶進行插入/更新/刪除訪問,從而簡化代碼。

在選項2和3之間做出選擇的方法是詢問他們真的是兩件不同的東西嗎?如果是,他們會傾向於具有不同的安全性,對他們執行不同的操作,一個通過升級進行修改,另一個不是,等等。如果他們真的是兩個不同的東西,他們會分兩個表。如果他們是兩種口味的幾乎總是一樣的東西,他們會在一個表中使用「類型」標誌,選項2.

+0

謝謝;優秀的答案。在我看來,選擇2是遵循這個邏輯的方法。 – 2011-01-16 13:12:18

相關問題