HEJ! Varför har du två tabeller? Vitsen med relationer är att säkerställa fel vid insert och delete. Och för att hålla informationen i databasen så "hel/fullständig" som möjligt.Relationer - Varför?
Har en tittat lite på access och undrar vad man har för nytta av att dra massa relationsstreck mellan alla tabellern.
Om man skapar 2 tabeller:
Fordonstyper
1. Bil
2. Lastbil
Fordon
1. Regnummer = "ABC123"
2. Fordonstyp = 1
Kan man då genom en fråga "select * from Fordon where Regnummer = 'ABC123'"
få
ABC123 BIL
ELLER VAD ÄR VITSEN MED RELATIONER?
/AlexanderSv: Relationer - Varför?
Du skull kunna lösa det på ett annat sätt:
Tabell: Typer
Fält: TypId (Räknare)
Fält: TypNamn VarChar(20)
Tabell: Fordon
Fält: FordonId (Räknare)
Fält: FordonTyp (Int) -> Typer.TypId
Fält: FordonRegNr VarChar(8)
osv...
Exempeldata:
Typer
------------------------------
TypId TypNamn
------------------------------
1 Personbil
2 Lastbil
3 Buss
Fordon
------------------------------
FordonId FordonTyp FordonRegNr
------------------------------
1 1 AAA111
2 1 BBB222
3 2 CCC333
4 2 DDD444
5 3 EEE555
Du kan sedan lista informationen med följande fråga:
SELECT Fordon.*
FROM Fordon LEFT JOIN Typer ON Fordon.FordonId = Typer.TypIdSv: Relationer - Varför?
Två tabeller: Kund, Bil
Relationen är en kund äger en bil vilket innebär att i kund tabellen finns bara information om kunden och i bil tabellen info om bilen plus vilket kundid som äger bilen.
Vid en insert i tabell Bil med kundid 5: Om du har en relation dragen så lyckas inte insert i Bil om det inte finns en kundid 5 i kundtabellen. För då skulle du få "trasiga" relationer i din databas. Utan en relation dragen fungerar det.
Vid en delete i tabell Kund med kundid 5: Om du har en relation dragen så kan du inte få bort kundid 5 om denna kund äger någon bil i Bil tabellen. Först måste du då ta bort alla bilar kunden äger för att sedan kunna ta bort kunden. Utan relation kan du ta bort kunden ändå.