Ostatní témata (Off Topic témata) : phpRS Fórum
Máte problém s konfigurací počítače? Hledáte nejlepší webhosting pro vaši aplikaci? Nevíte si rady s nějakým zajímavým programátorským oříškem? Týká se dotaz fóra? ... Pokud ano, tak je toto diskuzní fórum určeno právě vám.
phpRS - redakční a informační systém
Vzájemné propojení všech možných souvisejících položek (článek, obrázek, novinka, soubor, osoba, kontakt....)
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2015-10-14, 13:48

Řeším teď poměrně zásadní věc. Na webu mám články, novinky, obrazky, soubory, osoby a firmy. A potřeboval bych pomocí databáze sql udělat možnost tzv. SOUVISEJÍCÍHO PROPOJENÍ všech těchto položek.

Struktura sql:
tabulka Článek (idc, titulek, další položky......)
tabulka Novinka (idn, titulek, další položky.....)
tabulka Obrázek (ido, titulek, další položky.....)
tabulka Soubor (ids, titulek, další položky.....)
tabulka Pracovník (idp, titulek, další položky.....)
tabulka Firma (idf, titulek, další položky.....)

a tabulka Propojení(jedinecne_id, clanek_id, novinka_id, obrazek_id, soubor_id, pracovnik_id, firma_id)

Zde by se ukládalo následujícím způsobem - Příklad:
propojení článek_id=11 a obrázek_id=22 ------>insert into Propojení values(null,11,0,12,0,0,0)
propojení článek_id=11 a pracovník_id=33 ------>insert into Propojení values(null,11,0,0,0,33,0)
propojení novinka_id=44 a pracovník_id=33 ------>insert into Propojení values(null,0,44,0,0,33,0)

Jde mi nejen o logiku věci, ale i zpracování, které by co nejméně zatěžovalo databázi. Jistě, šlo by sice udělat zvlášť tabulky na každé možné propojení, ale to by těch tabulek bylo šíleně hodně. Takhle by bylo vše v jedné a při zoobrazení článku by se měl volat sql dotaz, který by zjistil, co všechno s článkem souvisí:

SELECT * from Propojení where clanek_id=11 --------> Vypsalo by to všechny řádky, kde se nachází clanek_id číslo 11.

Řešení a dotazy:
A) Vždy jen 2 položky? - Podle mého by bylo nejlepší, kdyby se pro jeden řádek vždy párovali jen dvě položky. Ostatní by byly buď 0 a nebo '' prázdné množiny.
B) Je lepší, kdyby prázdné položky byly 0 a nebo prázdné množiny ''?
C) Jak zabránit možným duplicitám? Aby nebylo např. 2x a vícekrát stejné párování
D) Jak co nejefektivněji takováto data vytahovat z databáze?

Mockrát děkuji všem za nápady.

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce



Celkem upraveno 1×. Poslední úprava ZdenekPNJ v 14.10.2015 13:52.

Re: Vzájemné propojení všech možných souvisejících položek (článek, obrázek, novinka, soubor, osoba, kontakt....)
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2015-10-14, 16:44

> Řešení a dotazy:
> A) Vždy jen 2 položky? - Podle mého by bylo
> nejlepší, kdyby se pro jeden řádek vždy
> párovali jen dvě položky. Ostatní by byly buď
> 0 a nebo '' prázdné množiny.

Vec implemetácie, ale kľudne viac naraz.

> B) Je lepší, kdyby prázdné položky byly 0 a
> nebo prázdné množiny ''?

Je to jedno, ja by som použil default null.

> C) Jak zabránit možným duplicitám? Aby nebylo
> např. 2x a vícekrát stejné párování

Kludne sprav UNIQUE index na viacerých poliach, kde máš idéčka ako cudzie kľúče.
Ono to súvisí s implemtáciou. Tiež by to šlo spraviť tak, že primárny index by bol zložený zo všetkých id prepojovaných objektov.

> D) Jak co nejefektivněji takováto data vytahovat
> z databáze?

No SELECTom ako popisuješ a v cykle si uložíš idéčna prepojených obnjektov do poľa, kde aj prípadná duplicita nevytvorí duplicitné kľúče v tom poli. Je to vcelku jednoduché. Záťaž na databázu bude konštatný - budeš sa dotazovať vždy na indexované hodnoty. Najväčšia záťaž bude preindexovanie, ktoré bude pri vkladaní, čo ťa tu trápiť nemusí.

Ja som kedysi potreboval prepojiť len galérie a download sekcie k článkom a to som spravil triviálne pridaním príslušných idéčiek do tabuľky článkov.

Možno by bolo dobré zvážiť, či to nespraviť ako úplne unioverzálny systém pre prepojenie čohokoľvek s čímkoľvek. Ak by si pridal ďalšie objekty, systém by sa nemusel meniť.


Re: Vzájemné propojení všech možných souvisejících položek (článek, obrázek, novinka, soubor, osoba, kontakt....)
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2015-10-15, 07:50

Dík Patriku za názor a nápad.

>Možno by bolo dobré zvážiť, či to nespraviť ako úplne unioverzálny systém pre prepojenie čohokoľvek s čímkoľvek. >Ak by si pridal ďalšie objekty, systém by sa nemusel meniť.

Můžu se zeptat, jak jsi myslel ten univerzální systém, alespoň ve stručnosti, jak by to mohlo fungovat. Mockrát děkuji.

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce

Re: Vzájemné propojení všech možných souvisejících položek (článek, obrázek, novinka, soubor, osoba, kontakt....)
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2015-10-15, 13:52

Ten univezrálny systém by tvorila tabuľka prepojení tvorená len idéčkami dvoch objektov a ich typov. Typ by bol napríklad článok, novinka, obrázok a určoval by databázovú tabuľku z ktorej budeš ťahať dáta. Noa ídéčko objektu v tabuľke je jasné. V prípade ak by si doplnil nejaký objekt schopný prepojenia, stačilo by ho niekde nadefinovať a samotný kód pre správu prepojení by sa nemusel meniť, rovnako ako štruktúra tabuľky spojení.



Celkem upraveno 1×. Poslední úprava pa3k v 15.10.2015 13:53.

Re: Vzájemné propojení všech možných souvisejících položek (článek, obrázek, novinka, soubor, osoba, kontakt....)
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2015-10-20, 14:34

No původně mě napadlo udělat tabulku rs_rel,
kde by byly tyto sloupce
rel_id, rel_vazba, rel_a, rel_b
hodnoty např:
1, CN, 2, 6 - kde CN je vazba Článek Novinka, 2 = id článku, 6 = id novinky
2, CS, 3, 8 - kde CS je vazba Článek Soubor, 3 = id článku, 8 = id souboru
3, NS, 4, 8 - kde NS je vazba Novinka Soubor, 4 = id novinky, 8 = id souboru

k tomu by byla vytvořena tabulka rs_vazby
idvazby, oznaceni, Typ
1, CN, Článek x Novinka,
2, CS, Článek x Soubor,
3, NS, Novinka x Soubor....

k této by šly kdykoliv přidávat typy vazeb

ale zde narážím na problém, jak do vrchní tabulky co nejefektivněji vkládat data (např. při editaci článků apod.) a také z nich pak následně čerpat při zoobrazení.

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.