Autor Zpráva
user243
Profil
Ahoj,
chci vás požádat o zhodnocení mého návrhu databáze pro můj menší web (do 20 uživatelů). Obsahuje jednoduchou galerii, knihu návštěv a místo pro vzkazy jen od registrovaných.
Tabulka log jen jen pro dočasná data (bude se tam uchovávat jen 10 - 20 nejnovějších věcí), slouží k výčtu posledních pár nejnovějších věcí na úvodní stránku a ke generování xml souboru pro čtečku.

Odkaz na návrh (PDF)


Budu rád za jakoukoliv radu a připomínku.
juriad
Profil
Několik poznámek:
1) prefixovat tabulky tb_ je podle mě nesmysl; v kontextu dotazu je zřejmé, jestli jde o tabulku či sloupec.
2) to samé pro sloupce id_tb_...; to klidně můžeš zkrátit jen na id.
3) dost sis vyhrál s velikostí čísel, ale proč prostě všude nepoužiješ nejobyčejnější INT?
4) to samé pto TINYTEXT; máš nějaký důvod nepoužít TEXT?
5) zálohy bych klidně řešil v rámci tabulky příspěvků; tedy přidat sloupec záloha, který bude cizím klíčem do té samé tabulky na sloupec ID; běžně budeš vypisovat jen příspěvky s tímto sloupcem s hodnotou NULL. Před updatem si vytvoříš zálohový řádek a původní záznam následně změníš. Posloupnost úprav je řázená podle jejich datumu.
6) asi bych opravil překlepy samzano, samazano, povodni_obsah
7) jaký je význam tabulky upozornění? Je to zpráva určená vždy jednomu uživateli?
8) název tabulky oceneni_spojeni je blbý, proč ne oceneni_uzivatele?
9) bude mít jeden uživatel více přihlášení? To mi nedává smysl
10) 13 znaků na jméno a 45 na url? Kde bereš ty konstanty? 10 znaků na titulek příspěvku??
11) prectenych_prispevku nepatří do nastavení, to samé pro vyhrano_her a chyceno_bludicek. Tyto atributy se přece počítají agregací přímo z dat, nikoli neustálým updatovaním tabulky statistik.
12) nevím proč jsi tak posedlý ip adresama. Když už tak bych si vytvořil extra tabulku aktivity (ip_adresa, id_uzivatele_pokud_prihlaseny, akce, parametr_akce) kam bych ukládal, co který uživatel (i nepřihlášený provádí). Následně můžeš krásně selectem zjistit, co která IP adresa prováděla a komu potenciálně patří.
mimochodec
Profil
Kromě toho, co píše juriad, vidím dvakrát typ VARCHAR(45). Nevím, čemu to má sloužit, ale zvážil bych, jestli pro typy nevytvořit extra tabulku, která by se joinovala.
user243
Profil
juraid,
1) když se podívám na náhled nebo jiné grafické zobrazení tak ano, ale v SQL kódu jsi už tak jistý nejsem; znám databáze hlavně z prostředí MS Access
3) na mém free hostingu je limit pro databázi 50 MB; nevím, jak bude ve výsledku velká, takže rozsahy dávám spíš nižší
4) ten TINYTEXT byl nějaký divný překlep
5) nejsem si jistý, jestli jsem tuhle část správně pochopil; přidal jsem tam tabulku vzkaz_juraid, která by tomu měla odpovídat; bude možné pak zobrazit příspěvek (vzkaz) s původním datem a jménem odesílatele, upravenou verzí obsahu a s datem a autorem úpravy?
6) omlouvám se
7) je to vlastně taková krátká systémová zpráva; například, když člověk dosáhne nějakého ocenění, moderátor mu příspěvek upraví. nebo smaže, když se rozšíří stránky o nějaké nové funkce a tak...; některá budou jen pro toho daného člověka a některé budou pro všechny;
8) opraveno
9) to byl takový nápad, že může být přihlášený na stránkách současně z více počítačů - pro můj web asi k ničemu
10) 13 znaků na přezdívku je odvozeno od hry, kde je to limit; měli by mít stejnou přezdívku jako tam; u jména jsem počítal jen s křestním, jinak jsem většinu rozšířil na 255 (většinu); těch 45 je předdefinovaná hodnota v návrhovém prostředí pro varchar; nějaké věci vím, že nebudou moc dlouhé - třeba jako motiv, který je podle měsíců a o dalších jsem si to myslel/nemyslel
11) přesunuto do jiné tabulky; počet přečtených vzkazů je na vygenerování odkazu na přibližně poslední přečtenou stránku, když se někdo objeví jednou za čas
12) jen menší nedůvěra, nechám to ale v knize návštěv

mimochodec,
to mi tam zbylo v jedné tabulce ještě z předchozího návrhu, omlouvám se; typ u ocenění je tam kvůli tomu, že je více ocenění stejného typu, ale s jinou podmínkou a hodnout - chyceno 5 bludiček, chyceno 25, ....

aktualizovaná verze návrhu

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0