sql >> Databáze >  >> RDS >> Mysql

Je praktické dynamicky normalizovat tabulku?

Záleží trochu na vašem použití. Normalizovaný přístup (park je tabulka) usnadní následující dotazy:

  • Kolik pozorování ptáků bylo v každém parku zaznamenáno
  • Ve kterém parku ptáka XYZ s největší pravděpodobností uvidíte
  • Pravděpodobně existuje několik dalších podobných dotazů

Ale ano, narazíte na nějaké nepříjemné problémy. Vzor „pokud park XYZ neexistuje, vložte jej do tabulky parků“ trpí závodní podmínkou, se kterou se budete muset vypořádat.

A co takhle nějaké argumenty proti normalizaci zde... Většina zákaznických databází pravděpodobně ukládá mou adresu jako „123 Foo Street“, aniž by dynamicky normalizovala název ulice (mohli bychom mít tabulku ulic a dát tam „Foo Street“ a pak odkaz to z jiných tabulek. Proč to zmiňuji, abych ukázal, že i chlapi, kteří nenávidí jakákoli opakovaná data, pravděpodobně uznají, že existuje určitá hranice, kterou nemusíte nutně překračovat.

Dalším hloupým příkladem by bylo, že bychom mohli sdílet příjmení. Opravdu potřebujeme tabulku pro jedinečná příjmení a k ní pak cizí klíč z jiných tabulek? Mohou existovat některé aplikace, kde je to užitečné, ale pro 99 % aplikací to zachází příliš daleko. Je to jen více práce a méně výkonu za malý až žádný zisk.

Takže bych zvážil, jak chci mít možnost dotazovat se na data zpět z tabulky. Upřímně, v tomto případě bych asi udělal samostatnou tabulku pro parky. Ale v jiných případech jsem se rozhodl ne.

To jsou moje dva centy, jeden cent po zdanění.



  1. Jak nahradit všechny výskyty char prvky z pole?

  2. Jak se připojit k databázi PostgreSQL přes SSL?

  3. ActiveRecord najde a vrátí pouze vybrané sloupce zarovnané s [:id]

  4. Jak mohu zkombinovat více řádků do jednoho sloupce pomocí PostgreSQL?