Wpis z mikrobloga

Siemanko.

Chciałem sobie po godzinach zrobić jakiś projekt, aby się nieco podszkolić w #aspnet i #html bo ostatnio mi strasznie do tego daleko. Generalnie zawsze pracowałem na solucjach już gotowych, zero webowych projektów "od zera". Pomyślałem, że zrobię książkę kucharską, postawię ją na necie, zrobię logowanie i wersję mobilną. Chciałbym prosić o ocenę i pomoc dotyczącą następujących problemów:

Architektura #bazydanych

Główna tabela dbo.Danie
iddanie (PK) int
nazwa nvarchar(100)
zdjecie nvarchar(100)
opis przygotowania nvarchar(max)

tabela przechowująca składniki / przyprawy do dania przypisane po ID do dania i do składników / przypraw. W tabeli dbo.Danie chciałbym zachować porządek - jedno danie jeden wiersz.

Struktura tabeli odpowiada tabeli z przyprawami. Jeżeli danie będzie miało 2 składniki to tutaj będą dwa rekordy z takim samym id dania i dwoma różnymi ID składnika

dbo.Skladniki
id
danie (FK) int -> dbo.Danie (iddania)
id
skladnik (FK) int -> dbo.Skladnik (idskladnik)
ilosc nvarchar(10)

Struktura tabeli poszczególnego składnika / przyprawy

dbo.Skladnik
id
skladnik (PK) int
nazwa nvarchar(30)

Co sądzicie? Może można to jakoś inaczej ugryźć?

No i część #aspnetmvc #frontend

Mam model odpowiadający daniu:
public int Id { get; set; })]
public string Nazwa { get; set; }
public Uri Zdjecie { get; set; }
public List Skladniki;
public List Przyprawy;
public string OpisPrzygotowania { get; set; }

No i tak się zastanawiam.. bo każde danie może mieć różną ilość przypraw i dodatków. czy za pomocą JSa czy AJAXa chciałbym wyświetlić comboboxa z aktualnymi składnikami / przyprawami, wybrać sobie, zapisać ilość, kliknąć dodaj i mieć możliwość dodania kolejnego składnika / przyprawy. Następnie po uzupełnieniu wszystkich informacji, klikając przycisk "Dodaj danie" zapisać to wszystko do modelu podanego wyżej. No i później ten model zapisać do bazy którą opisałem jeszcze wyżej.

Trzyma się to w ogóle? Ma to ręce i nogi i jakikolwiek RiGCZ?
Liczę na podsunięcie najlepszego rozwiązania, można to nawet zaorać i zacząć od początku

#programowanie
  • 10
@agent_resistance:
1. Do składnika warto dodać jednostkę miary - ilość jest niepoliczalna:)
2. Zdjęcie - poczytaj o blobie - nvarchar(100) to troszkę mało.
3. Składnik może mieć swoje kategorie (np. przyprawa, mięso, coś). Czy jest po co - nie wiem.
4. Czas przygotowania - dorzuciłbym do Danie.
5. Poziom trudności? Jeśli tak, to też do Danie.
6. Przydałyby się create/update date - choćby po to, żeby móc je wyświetlić.
7. Cena
W sumie nie jestem full-stackiem ale może moje rady coś Ci dadzą.
Polecałbym stworzenie backendu w oddzieleniu od frontu, gdzie dla klient dostawałby SPA wykorzystując angulara 3+, reacta lub vue. Komunikacje oczywiście REST'owo, z kolei jeśli chodzi o model to bardziej czytelnie gdybyś przedstawił go w postaci UML ;)
@agent_resistance: Ogółem idea całego pomysłu jest dość prosta i nie ma co zbyt komplikować sprawy.

W modelu bazy brakuje połączenia dania z użytkownikiem - skoro chcesz zrobić logowanie i system kont, to użytkownik powinien móc zarządzać swoimi wpisami.

Co do ilości w składniku. 10 znaków może być mało, jeśli ktoś chciałby napisać "2 łyżki stołowe". Z drugiej strony, zupełna wolność podawania jednostek poskutkuje redundancją danych w bazie. Myślę, że można to
@agent_resistance: zastanawiam się gdzie ten frontend o którym wspomniałeś :P

imo na podszkolenie na start taki projekt wystarczy, w miarę tworzenia zobaczysz czego brakuje i będziesz dłubał, ja tak robiłem - robiłem stronkę wycieczkową, po stworzeniu prostego szkieletu, bazy danych itp mogłem już dodawać co chciałem z minimalnym wysiłkiem więc po prostu zacznij, zrób te podstawy które opisałeś, wszystko można zmienić na każdym etapie.