Nalezena vážná chyba v Microsoft SQL 7.0

13. dubna 1999
Computer 7/99 SDÍLET NA FACEBOOKU TWEETNOUT
Jeden z našich čtenářů nalezl vážnou chybu v Microsoft SQL 7.0, která způsobuje, že za určitých okolností vrací dotazy chybné výsledky. Ukážeme to.
Peter Polanský: V databázovej aplikácií Microsoft SQL Server 7.0 sa nachádza veľmi závažná chyba. Táto chyba spôsobuje, že za určitých okolnosti, sú výsledky SQL dotazu nesprávne. To môže mať v niektorých prípadoch katastrofálne dôsledky.

Na demonštráciu tejto závažnej chyby použijeme databázu, určenú na správu údajov v predajni automobilov. V databáze zaznamenávame nasledujúce informácie o automobiloch : model auta , počet dverí, farba karosérie a farba sedadiel.

Model databázy vyzerá nasledovne.

V tabuľka automobile sú stĺpce :

  • Model - názov a typ
  • Doors - počet dverí
  • body_color_id - farba karosérie ako identifikátor farby z tabuľky color
  • Seat_color_id - farba sedadiel ako identifikátor farby z tabuľky color

a v tabuľke color stĺpce :

  • id - identifikátor farby
  • color - názov farby.

Predpokladajme, že v predajni máme tieto 3 automobily.

  • štvordverový Cadillac DeVille Concours s čiernou karosériou a čiernymi sedadlami.
  • štvordverové BMW 740 il so striebornou karosériou a so striebornými sedadlami
  • dvojdverový Mercedes-Benz CLK320 Cabriolet s červenou karosériou a striebornými sedadlami
Obsah tabuliek automobil a color bude potom nasledovný:

V snahe zrýchliť vykonávanie dotazov vytvoríme index na stĺpec body_color_id v tabuľke automobile a na stĺpec id v tabuľke color.

CREATE  UNIQUE  CLUSTERED  INDEX pk_model_id ON automobile(body_color_id)
GO

CREATE INDEX idx_color_id ON color(id)
GO

Poznámka : Index pk_model_id na stĺpec body_color_id v tabuľke automobile je unikátny, čo možno postráda zmysel, avšak pre účel demonštrácie chyby to nie je podstatné

Predpokladajme, že zákazník požaduje štvordverový automobil s čiernou karosériou a s čiernymi sedadlami. Túto požiadavku pretransformujeme do následovného SQL dotazu.

SELECT   automobile.model
FROM
color , automobile
WHERE
( color.color = 'black' ) and
( automobile.body_color_id = color.id ) and
( automobile.body_color_id = automobile.seat_color_id ) and
( automobile.doors = 4 )
GO

Výsledok dotazu je automobil Cadillac DeVille Concours, ktorý spĺňa podmienky dotazu.( má štvoro dverí, čiernu karosériu aj čierne sedadla)

Result :
=============================================
model
--------------------------------
Cadillac DeVille Concours

(1 row(s) affected)

V snahe zoptimalizovať dotaz vytvoríme index na stĺpec doors v tabuľku automobile.

CREATE INDEX idx_automobile_doors ON automobile(doors) 
GO

Zadajme teraz ten istý SQL dotaz.( na štvordverový automobil s čiernou karosériou a čiernymi sedlami )

SELECT   automobile.model
FROM
color , automobile
WHERE
( color.color = 'black' ) and
( automobile.body_color_id = color.id ) and
( automobile.body_color_id = automobile.seat_color_id ) and
( automobile.doors = 4 )
GO

Výsledok dotazu však hovorí, že žiaden automobil nespĺňa podmienky dotazu. To však nie je pravda !!! ( automobil Cadillac DeVille Concours spĺňa všetky podmienky dotazu )

Result :
=============================================
model
--------------------------------

(0 row(s) affected)

Tento výsledok je samozrejme zlý, čo môže mať nedozerne následky. V našom prípade nepredáme zákazníkovi požadovaný automobil, aj keď sa na sklade nachádza. Poznamenajme, že táto zmena vo výsledku dotazu bola spôsobená vytvorením jednoduchého indexu na jeden zo stĺpcov tabuľky. Vytvorenie indexu by však v žiadnom prípade nemalo ovplyvniť množinu výsledkov SQL dotazu.

Diskuze (9) Další článek: Computer 7/99

Témata článku: Chyba, Index, Vážná chyba, Cabriolet, Automobil, Cadillac, SQL, Mate, Karosérie, Doors, Automobile, Nález, M/s, Bmw, Go, Mercedes-Benz, Tieto, Pre, Mercedes


Určitě si přečtěte

Nejlepší herní notebooky a pracovní stroje: Když máte více než 20 tisíc

Nejlepší herní notebooky a pracovní stroje: Když máte více než 20 tisíc

** Když máte na notebook více než 20 tisíc korun, odpadají kompromisy ** Notebooky na práci dostávají tenká kovová těla a styl ** Herní notebooky zvládnou i nejmodernější hry v plné kvalitě

David Polesný | 43

David Polesný
Notebooky
Jak v prohlížeči vypnout oznámení zasílaná webovými stránkami

Jak v prohlížeči vypnout oznámení zasílaná webovými stránkami

** Obtěžují vás neustálé dotazy webů, zda chcete zobrazovat oznámení? ** Můžete je zakázat, a to jak kompletně, tak i pro jednotlivé stránky ** Připravili jsme návody pro Chrome, Firefox, Edge a Operu

Karel Kilián | 11

Karel Kilián
Jak na InternetTipyProhlížeče
Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 4

redakce
Mapy GoogleStreet View
Apple Macbook Air M1: testujeme výkon, výdrž, a hlavně kompatibilitu aplikací [průběžně aktualizováno]

Apple Macbook Air M1: testujeme výkon, výdrž, a hlavně kompatibilitu aplikací [průběžně aktualizováno]

** Testujeme Apple Macbook Air s procesorem M1 ** Zajímá nás nejen výkon, ale zejména kompatibilita aplikací ** Článek je průběžně doplňován na základě vašich dotazů

Jiří Kuruc | 205

Jiří Kuruc
Apple
Testy procesorů Ryzen 5000: AMD překonalo Intel ve všech směrech

Testy procesorů Ryzen 5000: AMD překonalo Intel ve všech směrech

** AMD začalo prodávat nové procesory Ryzen 5000 s architekturou Zen 3 ** K dispozici jsou nezávislé testy z celého světa ** AMD překonává Intel ve všech směrech

Karel Javůrek | 69

Karel Javůrek
ProcesoryTestyAMD
Zapomeňte na destičky. Raspberry Pi 400 je nový počítač zabudovaný do klávesnice
Lukáš Václavík
Raspberry PiPočítače
Co je to UWB? Nová technologie zastoupí Wi-Fi, Bluetooth i NFC a slibuje velké věci

Co je to UWB? Nová technologie zastoupí Wi-Fi, Bluetooth i NFC a slibuje velké věci

** V nových mobilech se začíná objevovat tajemná zkratka UWB ** Jde o další technologii, jak navzájem propojit různá zařízení ** Oproti Wi-Fi a Bluetooth má řadu výhod

Lukáš Václavík | 36

Lukáš Václavík
UWBIoTTechnologie
CZ.NIC bezplatně naděluje USB/NFC klíče. Jak jej získat?
Lukáš Václavík
CZ.NICeGovernment
Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

** Uspořádání kabelů můžete vnímat i jako podivný druh umění ** To nejkrásnější se skrývá v datacentrech a serverovnách ** Podívejte se na skutečné „cableporn“ z optiky i kroucené dvojlinky

Vojtěch Malý | 51

Vojtěch Malý
DatacentraServery

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5