TB16 185
Postad: 28 aug 2019

Garantera att en tabell aldrig lagrar avståndet från Y till X om avstånd X till Y redan finns

Målet är att hitta en lösning som garanterar att tabellen aldrig lagrar avståndet från Y till X om det redan har avståndet från X till Y. Det går tydligen att lösa på följande vis:


CREATE TABLE Distances (

fromCity TEXT,

toCity TEXT,

distance INT,

CONSTRAINT only_one_direction CHECK (fromCity < toCity)

) ;

Varför använder man ‘<’ och inte ‘!=’ ? Det känns väldigt främmande att använda en olikhetsoperation mellan två strängar när man skall jämföra avståndet. Någon som kan förklara hur det fungerar?    

Tendo 145
Postad: 28 aug 2019

Vilket programmeringsspråk?

parveln 292
Postad: 28 aug 2019

Jag vet inte vilket programmeringsspråk du använder, men om <,>,= aldrig kan inträffa samtidigt och likhet endast inträffar om städerna har samma namn så kommer checken stad1<stad2 göra det önskade eftersom om stad1<stad2 så kan inte stad2<stad1 därmed kommer bara avståndet hämtas en gång

Laguna 5673
Postad: 28 aug 2019 Redigerad: 28 aug 2019

Om du har != så kommer du inte att kunna stoppa in några avståndsdata alls.

Jämförelse fungerar på strängar också, alfabetisk ordning. Om du har två strängar så vet du att den ena kommer före den andra i bokstavsordning, men inte tvärtom. Det utnyttjar man här.

(Parveln sa redan en del av detta.)

Laguna 5673
Postad: 28 aug 2019
Tendo skrev:

Vilket programmeringsspråk?

Någon sorts SQL.

Svara Avbryt
Close