Compare Database #1 and Database #2 below
DATABASE #1
POSTS---------------------------------
|___Id________Category_Id______Body__|
| 1 "For Sale" "...." |
| 2 "Requests" "...." |
| 3 "Misc." "...." |
| 4 "For Sale" "...." |
| 5 "Misc." "...." |
--------------------------------------
DATABASE #2
POSTS---------------------------------
|___Id________Category_Id______Body__|
| 1 1 "...." |
| 2 2 "...." |
| 3 3 "...." |
| 4 1 "...." |
| 5 3 "...." |
--------------------------------------
CATEGORIES----------------
|___Id__________Title____|
| 1 "For Sale" |
| 2 "Requests" |
| 3 "Misc." |
--------------------------
Are there any situations where Database #1 is preferred over Database #2?
It think that Database #2 is the better choice, especially in terms of scalability and maintenance, but should you ever opt for the simpler design of Database #1?
Prima di continuare a leggere -
▼ Da non perdere questa parte! ▼
Il resto del post è per niente necessario per rispondere alla mia domanda e, a meno che tu non voglia solo leggere la mia opinione, dovresti probabilmente saltare alla fine .
Ho incluso solo il resto di questo post in modo che se qualcuno volesse, potrebbe vedere una situazione in cui pensavo che il Database # 1 potesse essere migliore del Database # 2.
Se qualcuno vuole prendersi del tempo, mi piacerebbe avere un riscontro sul motivo per cui il Database # 1 non è adatto alla seguente situazione e come / dove il mio processo di pensiero va storto.
▲ Non perdere questa parte! ▲
When/why I think that Database #1 might be acceptable and/or preferred over Database #2 -
-
Se utilizzi il Database n. 1, puoi cercare e ordinare i post per categoria con la stessa facilità con il Database n. 2.
-
L'unico compito che vedo essere più difficile con il Database n. 1 è il recupero di ogni titolo di categoria univoco.
Tuttavia, se il progettista sa che ci sono solo alcune (< 5) categorie e non è previsto che cambino, allora è possibile codificare a macchina il titolo di ogni categoria nella vista.
- Il Modello può fornire un accesso facile per ogni Categoria di post, pur restando in ordine e svolgendo solo le funzioni di un Modello.
Dettagli di implementazione: Potresti avere una pagina View che ha semplicemente tre link (dal momento che questo database ha solo 3 categorie):
----------------------------------------------------------------
| View Posts! |
| |
| __________ __________ _______ |
| |For Sale| |Requests| |Misc.| |
| ‾‾‾‾‾‾‾‾‾‾ ‾‾‾‾‾‾‾‾‾‾ ‾‾‾‾‾‾‾ |
----------------------------------------------------------------
Ogni link può essere indirizzato a una pagina diversa che verrebbe servita da un diverso metodo di controller, oppure ciascun link potrebbe andare alla stessa pagina e inviare un parametro che specifica la categoria desiderata nella richiesta HTTP.
Nel controller, a seconda del link cliccato dall'utente, viene fatta una chiamata diversa al Modello che richiede Post con qualsiasi Categoria richiesta dall'utente.
Il modello potrebbe implementare queste chiamate in uno dei due modi molto puliti:
# One way
# post.rb
def by_category(category)
where("category = ?", category)
end
# OR
# post.rb
def for_sale
where("category = ?", "For Sale")
end
def requests
where("category = ?", "Request")
end
def misc
where("category = ?", "Misc.")
end
Per questi motivi penso che il Database n. 1 possa funzionare meglio in questa situazione.
In conclusion
Are there any situations where Database #1 is preferred over Database #2?
È molto importante rispondere a questa domanda nel modo più generico possibile.
Toccare la mia opinione o la situazione specifica che ho descritto è solo un plus.
Grazie!