Autor | Zpráva | ||
---|---|---|---|
Saky Profil * |
#1 · Zasláno: 3. 1. 2011, 14:54:26
Ahojky, řeším dilema jak zajistit jednoznačné ID v rámci několika tabulek.
Mám databázi (MySQL) kde mám mimo jiné tabulky profil, stranka a hodnoceni... Na stránce s daty z tbl profil i stránka bude umístěno hodnocení s tabulky hodnocení. Potřebuji tedy do tabulky hodnocení dát jedinečné ID ať jde o tabulku profil, či stránky. Napadají mě 2 řešení: 1)Vytvořit třetí tabulku s autoincrement kde budu udržovat jednoznačné id a propojovat například pomocí sloupce vazba v profilech i stránkách 2)Nastavit autoincrement u každé tabulky na jinou počáteční hodnotu, tedy u profilů začínající 1000, u stránek začínající 5000 Ani jedno z řešení se mi však příliš nelíbí v první případě bude nutné před každou registrací, či vytvořením stránky uložit a zjistit ID do pole vazba, v druhém může časem dojít k vyčerpání "volných" ID (5000 registrací)... Jak toto řešíte? Uvítám jakékoliv nakopnutí správným směrem :-) Díky za TIPy :) |
||
xmark Profil |
#2 · Zasláno: 3. 1. 2011, 15:16:10
Saky:
„Potřebuji tedy do tabulky hodnocení dát jedinečné ID“ Proč? Neumíš odlišit <a href="?idstranky=.."> a <a href="?idprofilu=.."> ? |
||
Saky Profil * |
#3 · Zasláno: 3. 1. 2011, 15:29:08
xmark:
Asi jsem se špatně vyjádřil :-). Vypisuji z SQL profil a za vyplněné údaje potřebuji vypsat hodnocení profilu. Dotaz: SELECT hodnoceni FROM hodnoceni WHERE vazba=(ID Profilu) U stránky pak bude SELECT hodnoceni FROM hodnoceni WHERE vazba=(ID stránky) Problém právě je, že profily i stránky MySQL čísluje od 0, tedy ID Profilu a ID stránky budou stejně číslována. |
||
Tori Profil |
#4 · Zasláno: 3. 1. 2011, 15:35:59
Pokud ke každé stránce, profilu apod. může být max. jedno hodnocení, stačí rozšířit tabulku hodnocení o sloupce:
id_předmětu, kategorie (= k čemu se to id_předmětu vztahuje, stránka/profil/...) Pokud jich může být víc, tak samostatnou vazební tabulku: id (auto_increment), id_předmětu, id_hodnocení, kategorie - takže selecty budou asi WHERE id_predmetu = 2 AND kategorie = 'stranka' |
||
xmark Profil |
#5 · Zasláno: 3. 1. 2011, 15:37:24
Saky:
Jestli ses v těch dvou dotazech nespletl a máš to opravdu takhle, tak nerozumím, čeho chceš dosáhnout a myslím, že na to jdeš dost zásadně špatně. Zkusím tipnout: Vytvoř si v tabulce hodnoceni místo sloupce "vazba" sloupce IDprofilu a IDstranky a pracuj s tím pomocí nich. |
||
Tori Profil |
#6 · Zasláno: 3. 1. 2011, 15:41:14
xmark:
„Vytvoř si v tabulce hodnoceni místo sloupce "vazba" sloupce IDprofilu a IDstranky“ a co když bude za měsíc chtít přidat hodnocení dalších pěti věcí? |
||
xmark Profil |
#7 · Zasláno: 3. 1. 2011, 15:45:24
Tori:
„a co když bude za měsíc chtít přidat hodnocení dalších pěti věcí?“ Aha, uvažuješ trochu jinak než já. Měl jsem za to, že v té tabulce budou hodnocení stránek lidmi, tzn. ID stránky a ID hodnotícího. Nevím, jestli jsem špatně četl, nebo Saky špatně formuloval. |
||
TomášK Profil |
#8 · Zasláno: 3. 1. 2011, 17:34:43
Saky:
Řešení, které popsal Tori se používá i v Ruby on Rails pod názvem polymorphic associations. |
||
Saky Profil * |
#9 · Zasláno: 3. 1. 2011, 18:52:33
Děkuji za všechny reakce.
Nezmínil jsem, že těch provázaných tabulek je 6, nicméně není vyloučeno, že ještě přibudou. Použiji řešení vazební tabulkou z #4. Díky za všechny rady :-) |
||
Časová prodleva: 13 let
|
0