TB16 182 – Fd. Medlem
Postad: 28 aug 2019 14:27

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 158
Postad: 28 aug 2019 14:34

Vilket programmeringsspråk?

parveln 703 – Fd. Medlem
Postad: 28 aug 2019 14:36

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 Online 30239
Postad: 28 aug 2019 15:53 Redigerad: 28 aug 2019 15:54

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 Online 30239
Postad: 28 aug 2019 15:55
Tendo skrev:

Vilket programmeringsspråk?

Någon sorts SQL.

Svara
Close