Jak "navrhnout" tabulku pro MySQL
Jak "navrhnout" tabulku pro MySQL
Ahoj, mám takové dilema. Řekněme že mám databázi která má v sobě data o "followech" jako to funguje na twitteru. Takže to vidím na 3 sloupce - 1. followId (prostě id každého followu - primární klíč), 2. followerId (id každého usera kterej followuje někoho) a 3. followsId (id usera kterého ten "followerId" followuje). A chtěl bych vědět jestli to je úplně blbě (znáte jiný, lepší systém) nebo to je ok. Každopádně rád bych měl foreign key na followerId a followsId a použít "CASCADE" takže když se z tabulky users vymaže user tak se vymažou i všechna data s jeho id z této tabulky. to ale znamená že tato tabulka má 3 sloupce a na každém je index. Takže by mě zajimalo co je podle vás lepší, udělat to takto a nějak doufat že rychlost bude dostačující (co jsem tak četl tak hodně indexů zpomaluje insert a update) nebo na tom nemít žádné klíče a databázi nějakým jiný způsobem intervalové "čistit". V navrhování databazí jsem naprostý začátečník takže bych prosil "požehnání" od někoho zkušenějšího
ello dere
- Madara
- Level 4
- Příspěvky: 1123
- Registrován: červenec 11
- Bydliště: Nechceš klíče od domu ?
- Pohlaví:
- Stav:
Offline
Re: Jak "navrhnout" tabulku pro MySQL
Takhle je to ideální. Jiné možnosti jsou o dost složitější.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Jak "navrhnout" tabulku pro MySQL
čus,
na co auto_increment PK?
Hoď tam PK (autor příspěvku, jeho follower) + index (jeho follower).
Zabráníš duplicitám a mělo by to jet vcelku obstojně.
Mám takhle řešený kategorie k produktům (product_to_category (category_id, product_id), PK (category_id, product_id) + index (product_id)) a jede celkem dobře s 11M řádkama
na co auto_increment PK?
Hoď tam PK (autor příspěvku, jeho follower) + index (jeho follower).
Zabráníš duplicitám a mělo by to jet vcelku obstojně.
Mám takhle řešený kategorie k produktům (product_to_category (category_id, product_id), PK (category_id, product_id) + index (product_id)) a jede celkem dobře s 11M řádkama
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Jak "navrhnout" tabulku pro MySQL
no tohle je tabulka jen na zaznamenání o followech, žádný příspěvky já nemůžu hodit primary key na follower protože follower bude followovat více lidí. to AI PK tam mám protože framework vyžaduje aby na smazání byl v tabulce definovám primární klíč, asi to má svůj důvod, samozřejmě bych to mohl udělat samotnout SQL query asi ale prostě nechci míchat 2 způsoby a budu raději věřit autorum ... bylo mi to řečeno i na framework foru (phalconphp.com)
ello dere
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Jak "navrhnout" tabulku pro MySQL
Nevim jak tomu říkáš ty, ale jak jsem psal, tak je to asi nejlepší..
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Jak "navrhnout" tabulku pro MySQL
vůbec nechápu jak to myslíš jak říkám nikdy jsem nedělal nějak komplexní databáze
ello dere
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Jak "navrhnout" tabulku pro MySQL
primární klíč na dvousloupec follower + autor
index autor
k čemu chceš cizí klíče? na oba sloupce?
index autor
k čemu chceš cizí klíče? na oba sloupce?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Jak "navrhnout" tabulku pro MySQL
cizí klíče na oba sloupce jsou vlastně zbytečnost, díky. pořád ale nechápu co k čemu tam cpeš autora tohle má jen zaznamenávat - "ten se kamarádí (followuje) s timhle" nic víc
ello dere
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Jak "navrhnout" tabulku pro MySQL
Tak já nevim jak ty to pojmenováváš... prostě primární klíč na oba sloupce a index na druhej.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Jak "navrhnout" tabulku pro MySQL
jak můžeš mít 2 primární klíče v 1 tabulce? primární klíč je maximálně jeden na tabulku ne?
ello dere
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Jak "navrhnout" tabulku pro MySQL
Cože? Jako dneska jsem mimo, ale píšu že jeden dáš na oba sloupce a na druhej sloupec dáš jenom obyčejnej index.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Jak "navrhnout" tabulku pro MySQL
aha to jsem nevěděl že jde klíč na více sloupců mám teda primární klíč na follower a follows. a cizí klíč ale potřebuju na obou, protože když se smaze user s id 1 (z tabulky users) tak ho potřebuju vymazat z follower i z follows. pokud to teda chápu dobře potřebuju cizí na oba sloupce ale aby byly vázaný na jeden sloupec z cizí tabulky, jde to nějak?
tabulka by nejlépe měla vypadat proste takhle
takže po deletu usera s id 1 by tahle měla bejt prázdná
tabulka by nejlépe měla vypadat proste takhle
Kód: Vybrat vše
Follower | Follows
1 2
2 1
5 1
4 1
1 4
atd..
takže po deletu usera s id 1 by tahle měla bejt prázdná
ello dere
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů