sql >> Databáze >  >> RDS >> Database

Modelování základní datové struktury pro správu uživatelů, vláken a příspěvků

Online diskusní fórum je web, kde jsou lidé může obsahovat konverzace ve formě zaslaných zpráv . Diskuzní fóra umožňují konverzaci, když lidé nejsou online, a zprávy mohou být dočasně archivovány. V závislosti na nastavení fóra může být také nutné, aby zpráva byla schválena moderátorem, než bude viditelná pro ostatní uživatele. Fóra mají specifickou sadu termínů, například jedna konverzace se obecně nazývá „vlákno“. Na vlákna může odpovídat tolik lidí, kolik by chtělo. Většina fór vyžaduje, aby se uživatelé zaregistrovali a následně se přihlásili, aby mohli odesílat zprávy. Na většině fór se však uživatelé nemusí přihlašovat, aby mohli číst existující zprávy.

Toto jsou běžné požadavky na webové fórum , pojďme tedy pracovat na vytvoření databázového modelu počínaje základním nastavením fóra, které můžeme později rozšířit.

Entity

Jak již bylo zmíněno, lidé konverzují ve formě zaslaných zpráv, které jsou seskupeny do konverzací. Databáze tedy musí podporovat informace o lidech nebo uživatelé , konverzace nebo vlákna a zprávy nebo příspěvky .

Pro online fórum bude potřeba vytvořit uživatele – může být nutné uživatelům povolit úpravu jejich údajů po jejich vytvoření, ale pravděpodobně není potřeba povolit mazání uživatelů. Uživatelé budou vytvářet konverzace nebo vlákna obecně odesláním první zprávy do fóra, nikoli explicitním vytvářením konverzace, ale může být nutné podporovat obě možnosti. Vlákna budou obsahovat příspěvky vytvořené uživateli.

Funkčnost

Posílání zpráv je hlavní funkcí online fóra . Měli by mít uživatelé možnost upravovat zprávy poté, co byly zveřejněny? Měli by mít uživatelé možnost mazat zprávy po odeslání? Odpověď na obojí je pravděpodobně ano.

Vztahy

Příspěvky jsou propojeny s vlákny a příspěvky jsou vytvářeny uživateli, takže bude existovat definovaný vztah mezi uživateli a příspěvky. Vlákna jsou vytvářena uživateli, takže byste tam měli uložit vztah (pokud je například uživateli zakázán přístup na fórum, možná budete chtít odstranit všechna vlákna a příspěvky, které tento uživatel vytvořil).

Nyní, když znáte entity a vztahy , jste připraveni vytvořit model databáze, a to by mělo trvat jen pár minut. Zde se nástroje hodí.

Databázový model

Pojďme se podívat na Vertabelo a pokračovat v online diskuzním fóru.

Vytvořte model pro online fórum a začněte přidávat entity představující uživatele, vlákna a příspěvky. Vertabelo vám připomene, že musíte definovat primární klíče pro každou tabulku; Doporučuji použít id sloupců, protože vám to poskytne větší potenciální flexibilitu (a nebude vás to vázat na jméno uživatele jako primární klíč nebo jiná úskalí). Dále přidejte vztahy které jsme již dříve popsali. Přidal jsem heslo (v hašované podobě) pro uživatele, aby mohl ovládat přihlašování uživatelů.

Nyní skončíte s něčím, co vypadá zhruba takto:




Uvidíte, že existují časová razítka s datem/časem vytvoření každého řádku, aby se tyto informace mohly zobrazit na fóru („Uživatel od 2. února 2014“, „Datum zveřejnění:24. prosince 2014“ atd. ).

Pokud budete mít moderované online diskusní fórum, ve kterém musí být zprávy schváleny moderátorem, než se stanou viditelnými pro ostatní uživatele, pak byste měli přidat stavovou položku do vláken a příspěvků, aby aplikace mohla rozhodnout, zda vlákna a související příspěvky byly zkontrolovány a schváleny. Stav by také umožnil ostatním uživatelům označit vlákna a příspěvky jako spam nebo nevhodné.

Doufám, že už můžete začít přemýšlet o vylepšeních. Pokud například potřebujete formální podrobnosti o uživateli, místo jediného pole „jméno“ můžete chtít jeho křestní jméno, příjmení a uživatelské jméno nebo přezdívku. A příspěvek může mít kromě obsahu i předmět, ale myslím si, že předmět příspěvku je propojen zpět s vláknem, takže to nemusí být nutné.

  Další část »

  1. Najděte poškozené objekty na serveru SQL Server

  2. Jak získat rozdíl dnů/měsíců/roků (datediff) mezi dvěma daty?

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze nealfanumerické znaky v Oracle

  4. Jak používat ora_hash ve sloupci datového typu xmltype