Výsledky 1 až 16 z 16

Téma: Volba primárního klíče

  1. #1

    Standardní Volba primárního klíče

    Dneska jsem se s jedním známým neshodl na téma volby primárního klíče, konkrétně u tohoto příkladu:

    Mám tabulku uživatelů:

    login ( varchar(6) )
    jmeno ( varchar(20) )
    prijmeni ( varchar(20) )


    Já říkám použít jako primární klíč atribut login, stejně má být jedinečný, čili proč ne.

    On říká že je lepší zavést umělý klíč id a ten označit za primární.

    Já si myslím, že díky umělému klíči utrpí kvalita DB a jeho normální forma, která spadne na 2NF pokud se nepletu ( aby byla 3 NF, tak nesmí existovat závislost mezi sekundárními atributy, což existuje protože pomocí sekundárního atributu (v případě že za primární klíč označíme ID) login můžeme zjistit všechny další atributy - i ten primární )

    Mám na mysli MySQL.

    Jaký je Váš názor?
    Díky
    Oblíbil jsem si Dropbox - pokud chcete získat bonusových 250 MB k základním 2 GB, registrujte se zde (dozvím se Váš email a jméno, co zadáte při registraci).

    Vyšla Mandriva Linux 2010 informace zde, download zde

    AMD AthlonXP 2000+; 1,5 GB RAM;WD 250 GB + WD 60 GB; GF 4 MX 64MB VRAM.
    Mandriva Linux 2010 CZ FREE (výchozí), Windows XP Professional SP3 CZ(jen škola).
    Spokojený uživatel KDE 4.4.2
    Pokud máte zájem, mám svůj blog, který najdete zde.


  2. #2

    Standardní Re: Volba primárního klíče

    Já jsem pro ID. Nejsem teoretik, takže to neposuzuju z hlediska NF, ale čistě logicky mi práce s INT přijde rychlejší a přímočarejší než vyhledávání mezi VARCHAR položkami.
    Celá léta používám prakticky všude umělé PK a nikdy jsem neměl pocit, že je to špatně - resp. že jinou možností bych něco získal.
    PC: GA-EP45-DS3R | E8400 + Ninja | 8GB | 80GB SSD X25-M | Zotac 9500GT | Asus Xonar DX | 2x Hauppauge WinTV HVR-1300 | Enermax MODU82+ 525W | Lancool K1
    Foto: Canon 20D | Tokina 12-24/4 | Canon 24-105/4 L IS USM | Canon 50/1,8 | Giottos MTL3361 + 1301-621C | Nodal Ninja NN5

  3. #3
    Senior Member Avatar uživatele NeMeM9aA
    Založen
    15.03.2005
    Bydliště
    Golčův Jeníkov
    Věk
    44
    Příspěvky
    1 460
    Vliv
    272

    Standardní Re: Volba primárního klíče

    Tak ona ta rychlost prace bude zhruba stejna. Stejne se bude overovat unikatnost loginu a bude ho potreba indexovat.
    Z ciste akademickeho hlediska nebude umely PK potreba ale coje podstatne, je prave to, ze proste pouzivas umele PK vsude a nemusis o tom premyslet. To znamena potom rychlejsi vyvoj a lepsi udrzovatelnost a to je to hlavni.

    Takze dle moho nazoru je akademicky spravnejsi mit jako PK login ale z praktickeho hlediska bude lepsi umele ID. (lepsi prehlednost)

  4. #4

    Standardní Re: Volba primárního klíče

    Tabulka kde bude umělé id společně s unikátním username nebude ve 3. NF. Když se budeš někdy prohrabávat v tabulkách, kde se používá cizí klíč z této tabulky tak budeš vědět prd a budeš si muset tabulky spojovat, abys viděl kdo udělal tuhle změnu etc. Otázku rychlosti bych u aplikací menších než obrovských zanedbal.

    Podle mě na tuto otázku neexistuje vyloženě správná nebo špatná odpověď, teoreticky je určitě správnější nepřidávat id zbytečně, v praxi se to tak dělá nejenom z nevědomosti, ale i kvůli tomu, že by časem někoho mohlo napadnout, že je potřeba mít možnost měnit username a v ten moment budeš za umělá id zatraceně rád.
    Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution

  5. #5

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal frelichl Zobrazit příspěvek
    ....v praxi se to tak dělá nejenom z nevědomosti, ale i kvůli tomu, že by časem někoho mohlo napadnout, že je potřeba mít možnost měnit username a v ten moment budeš za umělá id zatraceně rád.
    Nejdříve Vám všem děkuji, především frelichl, který potvrdil to, co jsem si myslel.

    Nyní k tomu výše citovanému - změnu loginu by měli nejméně u MySQL řešit právě akce ON Updates a ON delete, pokud se nepletu (je možné že jo, nevidím do toho moc).

    V nejhorším není problém vytvořit atribut alias a ten zobrazovat coby login (IMHO to tak u některý fór například je, alias změníte, ale přihlašujete se stále pod loginem, ač uživatelé u Vás vidí alias).
    Oblíbil jsem si Dropbox - pokud chcete získat bonusových 250 MB k základním 2 GB, registrujte se zde (dozvím se Váš email a jméno, co zadáte při registraci).

    Vyšla Mandriva Linux 2010 informace zde, download zde

    AMD AthlonXP 2000+; 1,5 GB RAM;WD 250 GB + WD 60 GB; GF 4 MX 64MB VRAM.
    Mandriva Linux 2010 CZ FREE (výchozí), Windows XP Professional SP3 CZ(jen škola).
    Spokojený uživatel KDE 4.4.2
    Pokud máte zájem, mám svůj blog, který najdete zde.


  6. #6

    Standardní Re: Volba primárního klíče

    Ehm...a dokážeš si představit login jako cizí klíč v jiné tabulce? To by přeci byl nesmysl, joinovat tabulky na základě stringu.
    Takže rozhodně int.
    Naposledy upravil Zdenek Dubnicky; 11.03.2010 v 20:47.
    Dell XPS 1210,Sams 275t,Microsoft XBOX360,Natural Mouse 6000 + Keyboard 4000,Windows 7 Professional
    Blondie : You see in this world there's two kinds of people, my friend. Those with loaded guns, and those who dig. You dig.

  7. #7

    Standardní Re: Volba primárního klíče

    Na ON UPDATE CASCADE zapomínám, protože ho třeba Oracle Database neumí. Každopádně to opět ukazuje na fakt, že ať vezmeš kteroukoliv variantu, vždycky se to nějak dá ohnout a ani jedno řešení není tedy blbě. Za sebe se přikláním k podle mě čistějšímu řešení bez zbytečných id.
    Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution

  8. #8

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal Zdenek Dubnicky Zobrazit příspěvek
    Ehm...a dokážeš si představit login jako cizí klíč v jiné tabulce? To by přeci byl nesmysl, joinovat tabulky na základě stringu.
    Takže rozhodně int.
    Hej dokážu, naprosto s přehledem a ujišťuju tě, že se to tak často dělá. Heslo databázistů teoretiků je "udělej to správně a nechej databázovej stroj, ať se s tím popere".
    Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution

  9. #9

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal frelichl Zobrazit příspěvek
    Hej dokážu, naprosto s přehledem a ujišťuju tě, že se to tak často dělá. Heslo databázistů teoretiků je "udělej to správně a nechej databázovej stroj, ať se s tím popere".
    Pracuji s DB až o velikosti několik GB a nemyslím, že by to bylo vhodné řešení. Ale proti gustu...

    A co se týče výkonostního srovnání a dalších výhod/nevýhod - toho je v google dost, takže předpokládám, že jste již četli.
    Naposledy upravil Zdenek Dubnicky; 11.03.2010 v 20:57.
    Dell XPS 1210,Sams 275t,Microsoft XBOX360,Natural Mouse 6000 + Keyboard 4000,Windows 7 Professional
    Blondie : You see in this world there's two kinds of people, my friend. Those with loaded guns, and those who dig. You dig.

  10. #10

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal frelichl Zobrazit příspěvek
    Hej dokážu, naprosto s přehledem a ujišťuju tě, že se to tak často dělá. Heslo databázistů teoretiků je "udělej to správně a nechej databázovej stroj, ať se s tím popere".
    Já to taky běžně používám ( používám MySQL )
    Oblíbil jsem si Dropbox - pokud chcete získat bonusových 250 MB k základním 2 GB, registrujte se zde (dozvím se Váš email a jméno, co zadáte při registraci).

    Vyšla Mandriva Linux 2010 informace zde, download zde

    AMD AthlonXP 2000+; 1,5 GB RAM;WD 250 GB + WD 60 GB; GF 4 MX 64MB VRAM.
    Mandriva Linux 2010 CZ FREE (výchozí), Windows XP Professional SP3 CZ(jen škola).
    Spokojený uživatel KDE 4.4.2
    Pokud máte zájem, mám svůj blog, který najdete zde.


  11. #11

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal Blackknight Zobrazit příspěvek
    Já to taky běžně používám ( používám MySQL )
    Ano, určitě to lze použít, a určitě se najdou situace, kdy je to vhodné. Jen nemyslím, že by to zrovna byl tento případ. A otázka je, jestli to v konečném řešení bude vůbec hrát roli.
    Dell XPS 1210,Sams 275t,Microsoft XBOX360,Natural Mouse 6000 + Keyboard 4000,Windows 7 Professional
    Blondie : You see in this world there's two kinds of people, my friend. Those with loaded guns, and those who dig. You dig.

  12. #12

    Standardní Re: Volba primárního klíče

    Rada z praxe: vzdy davat ID, pokial nie je specialny dovod na to, aby tam nebolo. Specialny dovod je napriklad tabulka unikatnych kodov s milionami riadkov. Tam sa priamo nuka pouzit kod ako primarny kluc a kazdy dalsi udaj je zbytocna zataz.
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  13. #13

    Standardní Re: Volba primárního klíče

    Jinak tem dvema typum primarnich klicu se rika natural (login) a surrogate (id) keys. Na netu jsou tuny diskuzi, kde se to resi a "spravna" odpoved na to fakt neni. Ale osobne jsem pro surrogates.
    Slusny je treba tohle:
    http://www.agiledata.org/essays/keys.html
    Fundamentally, there is no clear answer as to whether or not you should prefer natural keys over surrogate keys, regardless of what the zealots on either side of this religious argument may claim, and that your best strategy is be prepared to apply one strategy or the other whenever it makes sense.

  14. #14
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    324

    Standardní Re: Volba primárního klíče

    Jsem za umely klic, id, v praxi se nam stale ukazuje, ze to je nejlepsi reseni, i kdyz z hlediska teorie nemusi byt nejcistejsi. U nejake male db by nemusel byt problem ani ten login, ale v pripade vetsich db je to jen zadelavani si na problemy, v pripade slozenych klicu ani nemluve.
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  15. #15

    Standardní Re: Volba primárního klíče

    Odpověď je asi taková:

    pokud nebudeš mít login > 5-10 znaků, pak to není problém, porovnává se přinejhorším 40 Byte (UTF32) přinejlepším 10 Byte (EASCII).

    Je to sice dvojnásobek oproti INT (většinou 4B), ale ještě se to "dá". Výkonnostně je to už znát.

    Asi víš kolik kroků je potřeba k vyhledání hodnoty v BTREE, tak asi víš ke kolika porovnání dojde.

    V menších systémech můžeš dělat téměř jakékoliv prasárny, výkon počítačů se stále zvyšuje a moderní DB stroje jsou proti všem pozůstatkům z DOSu už někde jinde.

    PS:
    Osobně používám umělé klíče, často existují důvody proč nejsou vhodné. Častý byl zapamatovatelnost pro uživatele (z kódu pak bylo znát vždy o co se zhruba jedná FA001 je faktura).
    Tyhle klíče se je člověk snaží držet co nejkratší ideálně právě do 10 znaků a ne v UTF, ale pouze v nějakém EASCII kódování.
    Samozřejmě jsou často na nějakém základě generovány (např č. faktury), ale to už je jiná kapitola nazývající se číselné řady.

    Moje zdroje:
    Pár let praxe +
    Pokorný, J.: Konstrukce databázových systémů. Skripta, Vydavatelství ČVUT, 2. vydání, 2004, 166 p.
    Naposledy upravil mike.pr; 12.03.2010 v 07:42.

  16. #16
    Administrátor マツダ mince Avatar uživatele Marty
    Založen
    07.10.2002
    Bydliště
    Praha, Sanctuary
    Věk
    43
    Příspěvky
    8 225
    Vliv
    300

    Standardní Re: Volba primárního klíče

    Citace Původně odeslal Zdenek Dubnicky Zobrazit příspěvek
    Ano, určitě to lze použít, a určitě se najdou situace, kdy je to vhodné. Jen nemyslím, že by to zrovna byl tento případ. A otázka je, jestli to v konečném řešení bude vůbec hrát roli.
    Pracuji s více systémy, kde se takhle s PK pracuje, nevidím v tom problém... (a nejsou to malé systémy)
    Jen umělý klíč aka ID je podle mě lepší na údržbu - viz zmíněné kaskády updatů.
    CUBE> Ryzen 7 7700X + Arctic Lq Frzr III 64 GB DDR5-6000 ◦ ASUS TUF B650PLUS ◦ ASUS RTX3060 OC 12GB ◦ Kingston KC3000 2TB ◦ SS G12 GM-650 Gold ◦ Samsung S27A800 4K
    WORK> HP EliteBook 845 G9 ◦ Ryzen 5 PRO 6550 ◦ 32 GB DDR3 ◦ 2048 GB nVME SSD ◦ 14.1" 1920x1080 LED + 2x 32" Dell 4K ◦ Win11 Enterprise
    SERVER> HP ProLiant Microserver Gen8 ◦ Intel Core i5-3540T ◦ 16 GB DDR3 ◦ 180 GB SSD + 2x4 TB WD RED + 2x16 TB Toshiba ◦ 10GbE NIC
    PHOTO> Canon EOS 70D ◦ EF 70-200/4L ◦ EF-S 10-18 STM ◦ EF 50/1.8II ◦ EF-S 40/2.8 STM ◦ Yongnuo YN-568EX ◦ Tamrac 5534
    HOMECINEMA> TV Samsung UE55Q55T 55" 4K ◦ DVD Pioneer DV-310K ◦ AVR Yamaha RX-V359 ◦ SPK Dexon Allegro 5.0
    OTHERSTUFF> Mikrotik RB760iGS ◦ Mikrotik CSS610
    ◦ Mikrotik CRS326 ◦ UniFi WLAN ◦ Xerox B235 ◦ Canon PiXMA MG5350

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. Deska gigabyte 8I915GMF...dobrá volba pro budoucnost?
    Založil Meridius v sekci fóra Intel čipové sady
    Odpovědí: 2
    Poslední příspěvek: 22.11.2004, 15:33
  2. Dobra volba ???
    Založil Tuki v sekci fóra Case modding
    Odpovědí: 15
    Poslední příspěvek: 28.10.2004, 23:01
  3. Je dobrá volba FX5200 (Asus,MSI) vs. Radeon 9100
    Založil Anonymous v sekci fóra NVIDIA grafické karty
    Odpovědí: 28
    Poslední příspěvek: 30.05.2003, 07:27
  4. GF 4200 Leadtek,Asus 128MB.....je to dobrá volba?
    Založil jago v sekci fóra NVIDIA grafické karty
    Odpovědí: 6
    Poslední příspěvek: 05.02.2003, 11:04
  5. Preinstalace Win98 tak,aby mi zustala volba spousteni Win2k
    Založil Milos v sekci fóra Ostatní operační systémy
    Odpovědí: 1
    Poslední příspěvek: 04.12.2002, 11:16

Klíčová slova k tématu

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •